superpowers 多 Agent 平台的平台中立行文设计:Phase A「Claude」措辞去中心化方案全解
Superpowers 是一个同时发行到 Claude Code、Codex、Cursor、OpenCode、Copilot CLI、Gemini CLI 等多个 Agent 运行时的技能框架,但其技能文档最初是为 Claude Code 撰写的,正文中到处以第三人称直呼 "Claude"。本文基于仓库内的设计文档 2026-05-05-platform-neutral-prose-design.md,完整拆解 Phase A(平台中立行文)的范围切分、替换风格、术语改名(CSO → SDO)、提交计划与验证方法,并结合实际提交历史与当前源码状态说明方案是如何落地的。读完后你能掌握一套在"多运行时共用的文档仓库"中安全做平台中立化改造的方法论:如何划定 In/Out of scope、如何设计例外保留项(carve-out)、如何用 grep 验证替代后的完整性。
背景与问题定义
Superpowers 的技能内容与支持文档"first for Claude Code",即先为 Claude Code 写作,因此在任何运行时的 Agent 都可能适用的位置出现了 "Claude" 字样。设计文档指出的直接风险是:OpenAI 的 vendored fork(openai/plugins#217)曾试图整体重写,却在多处改错了——改写了历史归属路径、模型名和平台专属安装说明。Phase A 的目标正是在"保留这些不应改动的内容"的前提下,去除那些真正只是行文习惯(genuinely incidental)的平台中心措辞。
整个去平台中心化工作按"引用类别"切成多个阶段,各阶段有独立的设计文档:
| 阶段 | 引用类别 | 设计文档 |
|---|---|---|
| Phase A(本文) | 通用第三人称 "Claude" 行文 + CSO 术语改名 | prose 设计 |
| Phase B | 配置文件引用(CLAUDE.md / AGENTS.md / GEMINI.md 优先级表、"项目约定放哪"的提示) | config-refs 设计 |
| Phase C | README 中的营销文案 | 独立 spec(Out of scope) |
| Phase D | 平台/运行时陈述("In Claude Code:"、安装说明、工具映射) | 独立 spec(Out of scope) |
| Phase E | 工具名引用(Skill、Bash、Read、Task、TodoWrite) |
独立 spec |
Phase B 的设计文档在开头明确回引了 Phase A 的成果:"Phase A replaced generic third-person 'Claude' prose with agent-neutral forms",并以此为基础处理下一类引用。从源码结构看,这一阶段划分在实际仓库中是真实发生的——后续 commit 历史(如 d238a48 docs: fix dead references to pruned claude-code-tools.md/copilot-tools.md)显示 references 目录下的平台工具文档确实经历了后续的增删统一,与 Phase E 的处理方向一致。
范围界定(In Scope)
Phase A 的改动面被刻意压缩到最小集合,只覆盖以下位置的通用行文(generic prose)中的 "Claude":
skills/*/SKILL.md及各活跃技能目录下的支持性.md文件;- skills/writing-skills/anthropic-best-practices.md——一份外部文档的 vendored 改编版;
- README.md——仅当提及处是通用行文而非平台营销文案时。
外加一处自造术语改名:Claude Search Optimization (CSO) → Skill Discovery Optimization (SDO),位置在 skills/writing-skills/SKILL.md。
这一改名在当前仓库中已可完整核验:
- skills/writing-skills/SKILL.md#L140:章节标题已改为
## Skill Discovery Optimization (SDO); - skills/writing-skills/SKILL.md#L102:正文交叉引用 "see SDO section for why";
- skills/writing-skills/SKILL.md#L544:小节
### Update SDO for Violation Symptoms。
spec 要求"改名标题、缩写以及文件内所有交叉引用",这三处正好覆盖完整链条。SDO 章节本身讲的就是"未来 Agent 如何发现你的技能"——描述字段只写触发条件、关键词覆盖、描述性命名、token 效率——这个概念本身就是平台中立的(任何运行时的 Agent 都靠 description 检索技能),因此把绑定 "Claude" 的缩写改名为 "Skill Discovery Optimization" 是语义上更准确的选择。
排除清单(Out of Scope)
排除清单是这份 spec 的核心价值所在——它显式声明了哪些"看起来该改"的地方不能改,并逐一指派到后续阶段或说明保留理由:
| 排除项 | 理由 / 去向 |
|---|---|
| 平台/运行时陈述——"In Claude Code:"、安装说明、工具映射引用 | Phase D 候选 |
| 配置文件引用——CLAUDE.md、AGENTS.md、GEMINI.md 的优先级表与"项目约定放哪"提示 | Phase B(已在 config-refs 设计 中落地,如把 put in CLAUDE.md 改为 put in your instructions file) |
工具名引用——Skill、Bash、Read、Task、TodoWrite |
技能按 Claude Code 的工具词汇书写,现有的 references/{codex,gemini,...}-tools.md 文件负责映射。spec 写定时的计划是推迟或跳过;但 spec 自身留有更新注记:Phase E 最终处理了它们——把活跃技能中的工具名替换为动作语言,并围绕同一套词汇统一平台工具引用 |
| README 营销文案——"Superpowers for Claude Code"、按平台命名的安装小节 | Phase C |
历史产物——docs/plans/*.md、docs/superpowers/specs/*.md、CREATION-LOG.md |
这些是带日期的时点性文档,重写它们等于"改写历史"。当前 CREATION-LOG.md#L102 中的 "When Claude thinks..." 按此规则原样保留 |
| 模型标识符——Claude Haiku / Sonnet / Opus | 真实产品名,不可替换。当前 anthropic-best-practices.md#L138-L140 的分层测试清单(Haiku 快而省 / Sonnet 均衡 / Opus 强推理)正是此类保留项 |
文件名/URL 引用——CLAUDE.md、claude.com、claude-plugin/、~/.claude/ 下的路径 |
改了就指不到真实文件 |
anthropic-best-practices.md 文件名本身 |
文件保留其来源命名,但内部行文按替换规则重写 |
替换风格(Replacement Style)
spec 给出了明确的文风指令:用自然的英文混用两个人称,按句子语境选择,不为强制一致而牺牲表达自然度,并在自然处用复数("future agents"、"agents read")而非永远说 "the agent"。
- 第二人称 "your agent"——面向技能作者谈"他的"运行时:
- "your agent reads the description"
- 第三人称 "the agent" / "agents" / "an agent"——泛化描述系统行为:
- "Future agents find your skills"
- "Use words an agent would search for"
- "Agents read SKILL.md only when the skill becomes relevant"
这套风格在当前源码中可见落地。例如 anthropic-best-practices.md 中:
Before: At startup, only the metadata ... is pre-loaded. Claude reads SKILL.md
only when the Skill becomes relevant ...
After: At startup, only the metadata ... is pre-loaded. Agents read SKILL.md
only when the Skill becomes relevant ...
Before: Your Skill shares the context window with everything else Claude needs
to know
After: Your Skill shares the context window with everything else your agent
needs to know
同一份文档里第二人称(谈作者的运行时)与第三人称(谈系统行为)并存,正是 spec 所要求的效果。README 的引言同样已换为 "your agent" 措辞(README.md#L3:"a complete software development methodology for your coding agents ... make sure your agent uses them")。
保留为 "Claude" 的例外(Carve-outs)
替换规则有一个硬性白名单,任何命中以下三类的位置一律不改:
- 模型名:Claude Haiku、Claude Sonnet、Claude Opus;
- 文件名与 URL:
CLAUDE.md、claude.com、~/.claude/; - 平台品牌名 "Claude Code"——凡是确实指代该运行时的位置(留给后续阶段处理)。
此外 CLAUDE_MD_TESTING.md#L88 的 "Variant C: Claude.AI Emphatic Style" 标题也保留——它是一个命名特定风格示例的标签,规范化它会毁掉示例本身。
受影响文件清单
spec 基于过滤后的 grep(排除 carve-out 后)给出近似计数:
| 文件 | 通用行文提及数 |
|---|---|
| skills/writing-skills/SKILL.md | ~12(含 CSO 标题与正文) |
| skills/writing-skills/anthropic-best-practices.md | ~30 |
| skills/writing-skills/examples/CLAUDE_MD_TESTING.md | ~1(文件名保留,它是 CLAUDE.md 测试产物;"Variant C: Claude.AI Emphatic Style" 标题保留) |
| README.md | ~1 |
spec 注明:最终清单在实现期间通过重跑过滤后的 grep 确认。
提交计划与实际落地
spec 原计划 4 个原子提交,顺序固定:
- CSO → SDO 改名(skills/writing-skills/SKILL.md)——纯机械改动、隔离、易回滚,万一团队对术语改主意可单独撤销;
- 活跃技能行文——
skills/*/SKILL.md与支持.md中的通用 "Claude" → agent 形式,不含anthropic-best-practices.md; anthropic-best-practices.md行文——同一替换规则,但单独成 commit,因为它是外部文档的 vendored 改编版,隔离变更便于日后与上游对账;- README.md 行文——仅当过滤后仍有通用行文提及时执行,否则跳过。
每个提交信息须标注阶段名("Phase A")与切片名("rename CSO to SDO"、"agent prose in active skills"),使提交序列自文档化。
实际仓库历史呈现了另一种落地形态:git 历史中 Phase A 对应单一 commit f0e5117("Phase A: agent-neutral prose + CSO → SDO + spec"),一次提交了 README、spec 文档、dispatching-parallel-agents/SKILL.md、writing-skills 的 SKILL.md 与 anthropic-best-practices.md(约 200 行新增 / 102 行删除)。其提交信息明确交代了与 spec 的偏差:"Files in this commit also pick up later-phase changes that accumulated on the same files"——即同一批文件上累积的后续阶段改动被并入了这次提交,而 spec 文档随同打包,"records the original scope and the carve-outs"。也就是说:spec 的四段式原子提交是理想计划,实际执行收敛为一次提交 + spec 存档,但 carve-out 纪律(保留 "In Claude Code:" 按平台分发的列表、Variant C 标签、模型名)在 diff 中逐条可核验。
验证方法
spec 为每个提交定义了验证动作:
- 过滤 grep:
grep -rn "Claude" <touched-paths>——每个剩余命中必须落入已记录的 carve-out(模型名、文件名、URL、"Claude Code" 平台名、历史产物); - 端到端通读改动过的文件——替换不得破坏句子流、代词一致性或列表平行结构;
- 无需运行测试——这是纯行文改动(prose-only)。
- 最终提交后:在真实会话中快速过一遍每个改动的技能,确认没有读起来拗口的地方。
用当前仓库状态执行第一条例子,验证是可通过的。对 skills/ 下全部 .md 文件执行 grep -rn "Claude",当前仅剩以下命中,逐一可归入 carve-out:
| 命中位置 | 归入的 carve-out 类别 |
|---|---|
| anthropic-best-practices.md#L138-L140 | 模型名(Haiku/Sonnet/Opus) |
| anthropic-best-practices.md#L1143-L1144 | URL/平台品牌名("Use Skills in Claude Code" 卡片) |
| writing-skills/SKILL.md#L12 | ~/.claude/skills/ 路径 + "on Claude Code" 平台名 |
| executing-plans/SKILL.md#L14 | 按平台列举子代理支持的运行时列表(平台陈述,Phase D 范畴) |
| brainstorming/visual-companion.md#L62 | "Claude Code:" 平台小节标题(Phase D 范畴) |
| CLAUDE_MD_TESTING.md#L88、L101 | 示例标签 + 文件名保留(spec 明确保留) |
| CREATION-LOG.md#L102 | 历史产物,时点性文档不改写 |
这正是 spec 验证标准中"every remaining hit must fall into a documented carve-out"的完整闭环。
非目标(Non-Goals)
spec 用三条禁令锁死了改动半径,防止"顺手改进"扩散:
- 不改变行为、结构、标题(CSO→SDO 除外)、示例、代码块或 YAML frontmatter;
- 不引入新章节、callout 或兼容性说明;
- 编辑时不得做超出替换本身的行文"改进"。
后续影响:Phase B 如何承接
Phase A 的直接下游是 Phase B(config-refs 设计)。它的背景一节以一句话概括 Phase A 的成果,然后处理下一个类别:技能中对平台指令文件(CLAUDE.md / AGENTS.md / GEMINI.md)的引用。Phase B 把 writing-skills/SKILL.md#L58 的 "Project-specific conventions (put in CLAUDE.md)" 替换为 "put in your instructions file",并在每个 references/*-tools.md 中补充各平台偏好的指令文件名,让读者能把 "your instructions file" 解析回真实文件——当前 writing-skills/SKILL.md 中该行的现状("put in your instructions file")印证了这一替换已落地。
小结:这份 spec 的方法论价值
从 superpowers 的这份设计文档中可以提炼出一套可复用的多运行时文档治理方法:
- 按引用类别分阶段,而非一次性大重写——每类引用(通用行文 / 配置文件 / 营销文案 / 平台陈述 / 工具名)有独立的 spec、独立的 commit 序列,单阶段出错可独立回滚;
- carve-out 白名单先于替换规则——模型名、文件名、URL、平台品牌名、历史产物先被显式列出不许动,替换规则只在白名单之外生效,避免 fork 式重写中"改错历史归属"的事故;
- 文风规则可执行——第二/第三人称的具体示例句 + "不为一致性牺牲自然度",使替换结果对人和对 grep 都可验证;
- 验证靠过滤 grep 闭环——每次提交后重跑同一过滤命令,剩余命中必须能逐条归入 carve-out,形成机械化验收标准;
- 自造术语与平台解耦(CSO → SDO)——当概念本身(技能发现优化)是平台中立时,术语命名也应脱离任何单一供应商。
这套方法的前提是所有判定都能落到"文档、源码、grep 输出"三类证据上——本文给出的每个结论(SDO 落地位置、剩余 Claude 命中的逐条归类、Phase B 承接关系)均可按文中相对路径在当前仓库中复核。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0624
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00