Superpowers 源码级分析

obra/superpowers —— Jesse Vincent(Prime Radiant)开源的「AI 编码代理开发方法论」插件。不是工具库,而是一整套用自然语言写成、靠心理学与流程闸门约束 LLM 行为的可安装软件工程流程

版本 v6.1.1(2026-07-02) 许可 MIT 14 个 skills 10 个平台适配 仓库 201 文件 / 2.7 MB 分析基线 d884ae0

01它是什么

Superpowers 的定位一句话:把「先设计 → 再计划 → 子代理逐任务实现 → 双重评审 → 验证后合并」的完整方法论,做成一个跨 10 个编码代理平台可安装的插件。它不含一行业务代码,主体是 14 个 Markdown skill + 少量 bash/js 胶水,靠 SessionStart hook 在每个会话开头强制注入「必须用 skill」的元规则。

作者 Jesse Vincent(RT 请求跟踪系统、K-9 Mail 的作者),2025-10 首发,现由 Prime Radiant 公司维护并提供商业支持——这个项目本身已经从个人实验演化成产品。

本质

Prompt 工程产品:用自然语言 + 流程闸门给 LLM 装「工程纪律」,可类比「给 agent 装的 ISO 流程体系」。

核心赌注

LLM 会在压力下合理化偷懒;对策不是更多规则,而是预先封死每一条合理化路径(rationalization table + red flags)。

独特资产

SDD(subagent-driven development)的上下文经济学设计,和「用 TDD 方法写文档」的 writing-skills 元技能。

02仓库结构与分发架构

superpowers/ ├── skills/ # 14 个 skill,全部 SKILL.md + 按需支撑文件 │ ├── using-superpowers/ #「元 skill」:每会话注入,62 行 │ ├── brainstorming/ # 设计闸门 + 可视化伴侣(本地 HTTP server) │ ├── writing-plans/ # 计划文档规格 │ ├── subagent-driven-development/ # SDD:prompt 模板 ×2 + 脚本 ×3 │ ├── executing-plans/ # SDD 的无子代理降级版 │ ├── test-driven-development/ # Iron Law + 反模式参考 │ ├── systematic-debugging/ # 4 阶段根因法 + 3 个技术参考 │ ├── verification-before-completion/ │ ├── requesting/receiving-code-review/ │ ├── using-git-worktrees/ · finishing-a-development-branch/ │ ├── dispatching-parallel-agents/ │ └── writing-skills/ # 689 行元技能:怎么写 skill ├── hooks/ │ ├── hooks.json # SessionStart: startup|clear|compact │ ├── session-start # 49 行 bash,见 §3 │ └── run-hook.cmd # Windows 兼容垫片 ├── .claude-plugin/ .codex-plugin/ .cursor-plugin/ .kimi-plugin/ ├── .opencode/plugins/superpowers.js # JS 插件适配 ├── .pi/extensions/superpowers.ts # TS 扩展适配 ├── scripts/ # 版本发布 + codex 插件打包/同步(342+466 行) └── tests/ # 平台×功能矩阵的 shell 测试,见 §8

单源多分发:skills 只维护一份,各平台目录只放 manifest / 加载器;Codex 走 sync-to-codex-plugin.sh(466 行)做打包同步。这跟我们仓库 .agents/skills/(单源)→ .claude/skills/(分发)是同一个思路,但它做到了 10 个平台。平台差异(Codex 需要 multi_agent = true、Pi 原生支持 skills 等)收敛在 using-superpowers/references/*-tools.md 里,由元 skill 按需路由,而不是在每个 skill 里写 if-else——适配成本被压到了一个文件一平台。

03启动注入机制(源码)

整个系统的引导只有一个 hook:hooks/session-start(49 行 bash)。它在 startup|clear|compact 三个时机把 using-superpowers/SKILL.md 全文读出来、JSON 转义后包进 <EXTREMELY_IMPORTANT> 标签注入上下文:

# 平台探测:同一 hook 输出三种 JSON 形态
if [ -n "${CURSOR_PLUGIN_ROOT:-}" ]; then
  printf '{ "additional_context": "%s" }'            # Cursor: snake_case
elif [ -n "${CLAUDE_PLUGIN_ROOT:-}" ] && [ -z "${COPILOT_CLI:-}" ]; then
  printf '{ "hookSpecificOutput": { "hookEventName": "SessionStart",
            "additionalContext": "%s" } }'           # Claude Code: 嵌套
else
  printf '{ "additionalContext": "%s" }'             # Copilot CLI / SDK 标准
fi

三个源码细节值得注意:

被注入的 using-superpowers 本体只有 62 行,但它是全系统的「宪法」:

If you think there is even a 1% chance a skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill. … This is not negotiable. You cannot rationalize your way out of this.

并附一张 12 行的「危险念头 → 现实」对照表("这只是个简单问题" / "我先看看代码" / "这个 skill 有点大材小用"……每条都是实测中 agent 用来跳过 skill 的借口)。同时明确优先级:用户指令 > skill > 默认行为,以及子代理豁免(<SUBAGENT-STOP>——被派活的子代理不再递归加载方法论,防止流程套流程)。

04核心流水线:七步开发法

brainstorming苏格拉底式提问→设计文档
using-git-worktrees隔离工作区
writing-plans2-5 分钟粒度任务
SDD / executing-plans子代理逐任务执行
TDD每任务内 RED-GREEN
code-review ×2任务级+全分支
finishing-a-development-branchmerge/PR/清理

brainstorming——最强的一道闸

<HARD-GATE> 标签禁止在设计获批前写任何代码,并直接点名最常见的逃逸路径:"这太简单了不需要设计"是反模式——todo list、单函数工具、改配置,全都要过设计。流程终态被显式钉死:「brainstorming 之后唯一允许调用的 skill 是 writing-plans」——防止 agent 拿到设计就自己开跑。问问题的纪律也做了约束:一次只问一个、优先多选题。

v6 新增「visual companion」:一个本地 HTTP server(scripts/server.cjs)在浏览器里展示 mockup/图表,规定只在「看比读更清楚」的问题上用,且 offer 必须是独立消息。注意:其 logo 从官网加载并带版本号,是项目唯一的遥测点(README 坦白说明,可用 SUPERPOWERS_DISABLE_TELEMETRY 关闭)。

writing-plans——把"热情但品味差的初级工程师"当假想读者

计划文档的写作标准是给「零上下文、不懂测试设计」的执行者看的:每步一个动作(2-5 分钟)、精确文件路径、完整代码块、精确命令+预期输出。「No Placeholders」清单把 "TBD"、"add appropriate error handling"、"similar to Task N" 都定义为计划写作失败。每个任务带 Interfaces: 块(consumes/produces 精确签名)——因为执行任务的子代理只能看到自己的任务,这个块是它了解邻居任务接口的唯一渠道。这是为「无共享上下文的并行体」设计文档的典型手法。

TDD——Iron Law 与"删掉重来"

NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
写在测试前的代码?删除。不许留作"参考",不许边写测试边"改编",不许看它。Delete means delete.

371 行里近半篇幅在逐条反驳合理化借口("我已经手测过了"/"删掉 X 小时的工作太浪费了"→沉没成本谬误/"TDD 太教条,我要务实"→务实=测试先行)。配套的 testing-anti-patterns.md 立了三条铁律:不许测 mock 行为、不许给生产类加 test-only 方法、不许不理解依赖就 mock。

05SDD:子代理驱动开发(全仓库最精华)

subagent-driven-development(418 行 + 2 个 prompt 模板 + 3 个脚本)是整个项目工程含量最高的部分。模式:每个任务派一个全新子代理实现 → 任务级评审(spec 合规 + 代码质量双裁决) → 全部完成后再做一次全分支评审。控制器(主会话)只做编排,不碰实现。

上下文经济学——所有工件走文件,不走 prompt

这是它对「多代理编排烧 token」问题的系统性回答,每条都有实测事故背书:

机制实现防的事故(源码注释原文背书)
task-brief 脚本awk 从计划文档抽取单个任务全文到文件,子代理一次 Read 读入任务文本经控制器 prompt 粘贴会常驻其上下文,每轮重读付费
review-package 脚本git log --oneline + diff --stat + diff -U10 三段写入唯一命名文件,评审者读文件diff 从不进入控制器上下文;强调 BASE 用派发前记录的 SHA 而非 HEAD~1(后者会静默丢掉多 commit 任务的前几个 commit)
报告文件契约实现者全文报告写 task-N-report.md,只返回 ≤15 行摘要(状态/commit/一行测试总结)子代理打印回来的所有内容都会常驻控制器上下文
禁止粘贴历史"派发 prompt 描述一个任务,不描述会话历史"实测有 42k 字符的派发 prompt,99% 是粘贴的前序任务总结
进度台账.superpowers/sdd/progress.md 每任务追加一行(commit 区间+评审结论)compaction 后控制器忘了做到哪,重派整段已完成任务序列——观测到的最贵事故
最终评审单修复者全分支评审的 findings 派一个修复子代理带完整清单,不许一个 finding 一个修复者实测一次 final-review 修复波的开销超过之前所有任务之和

模型分层调度

skill 里有一节完整的模型选型经济学:机械转录型任务(计划里已含完整代码)用最便宜档;评审用中档起步;全分支终审必须用最强模型;派发时必须显式指定 model——不指定会静默继承主会话(通常最贵)的模型。还有一个反直觉洞察:轮次数比单价更决定成本——最便宜的模型做多步任务常要 2-3 倍轮次,总价反而更高。

评审防腐设计

实现者侧的心理安全设计同样少见:prompt 明写「说'这对我太难了'永远是 OK 的。坏活比不干更糟,升级不会被惩罚」,配 4 态状态机(DONE / DONE_WITH_CONCERNS / BLOCKED / NEEDS_CONTEXT),控制器对 BLOCKED 有明确处置阶梯(补上下文→换更强模型→拆任务→升级到人),并禁止「不做任何改变就让同一模型重试」。

06纪律型 skill 的写法:心理学工程

这是 Superpowers 区别于一般 prompt 集合的地方:它把「让 LLM 守规矩」当成一个有研究文献支撑的工程问题。persuasion-principles.md 引用 Meincke et al. (2025, N=28,000) ——说服技巧使 AI 合规率从 33% 提到 72%——并系统运用 Cialdini 七原则:

权威(Authority)

"YOU MUST"、"No exceptions"、Iron Law 命名——消除决策疲劳和合理化空间。

承诺(Commitment)

强制宣告"I'm using [skill] to [purpose]"、强制建 todo——公开承诺提高后续一致性。

合理化对照表

每个纪律 skill 都有「借口→现实」表,条目全部来自基线测试中 agent 的逐字原话,不是作者想象。

Red Flags 自检清单

"如果你正在想 X,停"——把违规前的念头本身做成触发器。

更精细的是「Match the Form to the Failure」:v6 加入的实证结论——禁止式规则只对「知规而违」的纪律失败有效;对「输出形状不对」的问题,禁止式措辞反而比不写还差(A/B 措辞测试中禁止组产出更多不想要的内容),该用「正向配方」(直接规定输出长什么样)。还有两条反直觉规则:「nuance 从句会重新打开谈判」(给获胜配方加一句"除非确有必要"就把稳定输出变成噪声)、「豁免从句不起作用」("此限制不适用于代码块"仍会抑制代码块——必须重构规则让它够不着豁免区)。

07writing-skills:给文档做 TDD

689 行的元技能,核心主张:写 skill 就是对流程文档做 TDD。映射关系完整:压力场景=测试用例;无 skill 跑基线看 agent 怎么违规=RED;写 skill 针对性封堵=GREEN;发现新借口就补条目再测=REFACTOR。Iron Law 同款:「没有失败测试就没有 skill」,对编辑既有 skill 同样适用。

两个有直接实操价值的发现:

08脚本与测试基础设施

09批判性评价

评价
每条规则都有事故或实验背书。"42k 字符派发 prompt"、"重派已完成任务是最贵事故"、"HEAD~1 丢 commit"——这些注释说明规则是从真实运行的尸检里长出来的,不是纸上设计。这跟我们 .learnings/ 驱动规则演化是同一方法论,但它把结论直接内嵌进了规则正文。
SDD 的上下文经济学是当前公开资料里最完整的多代理编排成本设计:工件走文件、报告限 15 行、台账抗 compaction、模型分层+轮次成本模型,自成一套可验证的体系。
把 prompt 措辞当可测对象(微测试+对照组+方差指标)在开源项目里几乎独一份,方法论可以直接搬用。
全体系强依赖"每任务 2-5 分钟粒度 + 计划含完整代码"的前提。这对绿地小项目成立;对大型存量单体(跨模块契约、迁移链、共享 DB),计划阶段写出完整正确代码本身就是最难的部分,SDD 退化为"控制器替所有人写代码"。它自己也承认要靠 brainstorming 阶段拆子项目来绕。
TDD Iron Law 一刀切。"写在测试前的代码必须删除"对探索型工作(调 UI、试 API、原型)代价极高,exceptions 只留了"问人"。我们仓库明确走"集成测试为主、不写 mock-heavy 单测"路线,与其单测倾向的 RED-GREEN 循环有真实张力(见 §10)。
高压措辞的军备竞赛属性。EXTREMELY_IMPORTANT、"1% 可能就必须调用"、每 skill 数百行反合理化条款——对每个会话都是常驻 token 税,且模型每代对齐性变化后这些措辞需要重新校准(他们自己用 evals 应对,但维护成本随平台×模型矩阵增长)。
无验证的流程真空区。verification-before-completion 只约束"跑命令看输出",没有我们 §17 意义上的"端到端真验"(多角色真点、真数据走查);评审全部基于 diff 阅读,行为正确性完全押在实现者跑的测试上——测试本身写歪时缺兜底层。

10对我们(FFOA)的借鉴与冲突

我们的 skill 体系(.agents/skills/ + CLAUDE.md 硬门)和 Superpowers 是同类系统的两个演化分支:它面向通用绿地开发、跨平台分发,我们面向单一大型业务仓库、契约面治理。逐项对照:

维度Superpowers我们(FFOA)判断
设计先行闸brainstorming HARD-GATE:设计获批前禁写代码§20 方案→计划→执行 + 执行预告三要素 + contract-check等价 双方都封了"直接开写";我们多了契约面判定,它多了"一次一问"的提问纪律(可借鉴)
计划规格2-5 分钟步 + 完整代码 + Interfaces 块 + No Placeholders 清单plan-feature / writing 计划较自由可借鉴 No Placeholders 失败清单和 Interfaces(consumes/produces)块值得吸收进 plan 模板
子代理编排SDD:工件走文件、报告≤15行、progress 台账、模型分层Workflow 工具 + Agent fork;唤醒纪律铁律(token 成本)可借鉴 台账抗 compaction、review-package/task-brief 脚本化、"禁止粘贴历史"三条可直接落进我们的编排实践
测试哲学TDD Iron Law,单测粒度 RED-GREEN,先删后写内真外假:集成测试为主、明确不写 mock-heavy 单测、5 条红线 CI 硬阻冲突 不可直接引入;但它的 testing-anti-patterns 三铁律(别测 mock/别加 test-only 方法)与我们红线完全同向
完工验证verification-before-completion:跑命令拿证据才许宣称§17 本地真验硬门 + exploratory-verification 矩阵走查我们更强 它停在"命令证据",我们要求端到端行为真验;但它的"禁止满意语气先于验证"措辞更锋利,可搬
规则写作方法writing-skills:基线测试→写规则→封堵循环;微测试;description 只写触发条件skill-creator / skill-audit,主要靠人审最值得借鉴 "description 概括流程会让正文被跳过"这一实证发现,应立即对照检查我们全部 skill 的 description
调试方法systematic-debugging 4 阶段 + 3 修不好即质疑架构11 号三层拆解 + 排查取证闸 + 12 号五元根因等价 双方几乎逐条对应;"3+ 次修复失败=架构问题不是假设问题"这条显式升级规则我们没有,可补
评审防腐写/评 prompt 独立、禁止预判 finding、plan-mandated 仍是 finding§20 审与执行 prompt 独立、ai-review verdict 门可借鉴 "禁止在评审 prompt 里出现 do-not-flag"和"计划钦定的缺陷仍报"两条是我们没有明文的防腐条款
一句话总结:Superpowers 是把「AI 结对开发方法论」产品化到极致的参考实现——它最有价值的不是七步流程本身(我们已有等价物),而是三样方法层资产:① SDD 的上下文经济学全套机制;② 「对文档做 TDD + 措辞微测试」的规则工程方法;③ 从真实事故逐字提炼合理化对照表的写法。这三样都与技术栈无关,可以直接反哺我们的 skill 体系。