en un clic
subagent-driven-development
当在当前会话中执行具有独立任务的实现计划时使用
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Menu
当在当前会话中执行具有独立任务的实现计划时使用
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Basé sur la classification professionnelle SOC
在进行任何创造性工作之前,你必须使用此 skill - 创建功能、构建组件、添加功能或修改行为。在实现之前探索用户意图、需求和设计。
当面对 2 个以上可在无共享状态或顺序依赖下处理的独立任务时使用
当你有一个书面实现计划,需要在带有 review 检查点的独立会话中执行时使用
当实现完成、所有测试通过、且你需要决定如何集成工作时使用 - 通过为合并、PR 或清理呈现结构化选项来指导开发工作的完成
当收到代码审查反馈时使用,在实现建议之前,尤其是当反馈看似不清或在技术上存疑时 - 需要技术严谨性和验证,而非表演性附和或盲目实现
当完成任务、实现主要功能或合并之前使用,以验证工作满足需求
| name | subagent-driven-development |
| description | 当在当前会话中执行具有独立任务的实现计划时使用 |
通过为每个任务派发一个全新的 implementer subagent 来执行计划,每个任务之后进行一次 task review(规范合规 + 代码质量),并在最后进行一次覆盖整个分支的 broad review。
为什么用 subagent: 你把任务委托给拥有隔离上下文的专门 agent。通过精确构建它们的指令和上下文,你确保它们保持专注并成功完成各自的任务。它们绝不应该继承你会话的上下文或历史——你精确构造它们所需的内容。这也为你自己的协调工作保留了上下文。
核心原则: 每个任务一个全新 subagent + task review(规范 + 质量)+ 最后的 broad review = 高质量、快速迭代
叙述(Narration): 在工具调用之间,至多用一行简短叙述——ledger 和工具结果承载记录。
持续执行: 不要在任务之间暂停向你的 human partner 请示。不停顿地执行计划中的所有任务。停止的唯一理由是:你无法解决的 BLOCKED 状态、确实阻碍推进的歧义,或所有任务完成。"我是否继续?"这类提示和进度汇报是在浪费他们的时间——他们让你执行计划,那就执行。
digraph when_to_use {
"有实现计划?" [shape=diamond];
"任务大多独立?" [shape=diamond];
"留在当前会话?" [shape=diamond];
"subagent-driven-development" [shape=box];
"executing-plans" [shape=box];
"手动执行或先 brainstorm" [shape=box];
"有实现计划?" -> "任务大多独立?" [label="是"];
"有实现计划?" -> "手动执行或先 brainstorm" [label="否"];
"任务大多独立?" -> "留在当前会话?" [label="是"];
"任务大多独立?" -> "手动执行或先 brainstorm" [label="否 - 强耦合"];
"留在当前会话?" -> "subagent-driven-development" [label="是"];
"留在当前会话?" -> "executing-plans" [label="否 - 并行会话"];
}
对比 Executing Plans(并行会话):
digraph process {
rankdir=TB;
subgraph cluster_per_task {
label="每个任务";
"派发 implementer subagent(./implementer-prompt.md)" [shape=box];
"Implementer subagent 提问?" [shape=diamond];
"回答问题,提供上下文" [shape=box];
"Implementer subagent 实现、测试、提交、自审" [shape=box];
"写 diff 文件,派发 task reviewer subagent(./task-reviewer-prompt.md)" [shape=box];
"Task reviewer 报告规范 ✅ 且质量通过?" [shape=diamond];
"为 Critical/Important 发现派发修复 subagent" [shape=box];
"在 todo 列表和进度 ledger 中标记任务完成" [shape=box];
}
"阅读计划,记录上下文和全局约束,创建 todos" [shape=box];
"还有剩余任务?" [shape=diamond];
"派发最终 code reviewer subagent(../requesting-code-review/code-reviewer.md)" [shape=box];
"使用 superpowers:finishing-a-development-branch" [shape=box style=filled fillcolor=lightgreen];
"阅读计划,记录上下文和全局约束,创建 todos" -> "派发 implementer subagent(./implementer-prompt.md)";
"派发 implementer subagent(./implementer-prompt.md)" -> "Implementer subagent 提问?";
"Implementer subagent 提问?" -> "回答问题,提供上下文" [label="是"];
"回答问题,提供上下文" -> "派发 implementer subagent(./implementer-prompt.md)";
"Implementer subagent 提问?" -> "Implementer subagent 实现、测试、提交、自审" [label="否"];
"Implementer subagent 实现、测试、提交、自审" -> "写 diff 文件,派发 task reviewer subagent(./task-reviewer-prompt.md)";
"写 diff 文件,派发 task reviewer subagent(./task-reviewer-prompt.md)" -> "Task reviewer 报告规范 ✅ 且质量通过?";
"Task reviewer 报告规范 ✅ 且质量通过?" -> "为 Critical/Important 发现派发修复 subagent" [label="否"];
"为 Critical/Important 发现派发修复 subagent" -> "写 diff 文件,派发 task reviewer subagent(./task-reviewer-prompt.md)" [label="重新 review"];
"Task reviewer 报告规范 ✅ 且质量通过?" -> "在 todo 列表和进度 ledger 中标记任务完成" [label="是"];
"在 todo 列表和进度 ledger 中标记任务完成" -> "还有剩余任务?";
"还有剩余任务?" -> "派发 implementer subagent(./implementer-prompt.md)" [label="是"];
"还有剩余任务?" -> "派发最终 code reviewer subagent(../requesting-code-review/code-reviewer.md)" [label="否"];
"派发最终 code reviewer subagent(../requesting-code-review/code-reviewer.md)" -> "使用 superpowers:finishing-a-development-branch";
}
在派发任务 1 之前,把整个计划扫一遍,找出冲突:
把你发现的所有问题作为一个批量问题提交给你的 human partner——每个发现放在要求它的那段计划文本旁边,询问以哪个为准——在执行开始前一次性提出,而不是在计划进行中每发现一个就打断一次。如果扫描结果是干净的,无需多言直接推进。review 循环仍然是兜底,捕获那些只有在实现过程中才会浮现的冲突。
为每个角色使用能够胜任的、最不强大的模型,以节省成本并提高速度。
机械性实现任务(孤立函数、清晰规范、1-2 个文件):使用快速、便宜的模型。当计划定义良好时,大多数实现任务都是机械的。
集成和判断任务(多文件协调、模式匹配、调试):使用标准模型。
架构和设计任务:使用可用的最强大模型。最终的整分支 review 就属于这一类——用可用的最强大模型派发它,而不是会话默认模型。
审查任务:选择具有同等判断力的模型,并按 diff 的规模、复杂度和风险来缩放。一个小的机械 diff 不需要最强大的模型;一个微妙的并发改动则需要。
派发 subagent 时务必显式指定模型。 省略模型会继承你会话的模型——通常是最强大也最昂贵的——这会无声地使本节失效。
回合数胜过 token 单价。 实际耗时和上下文成本随 subagent 走了多少个回合而攀升,而最便宜的模型在多步骤工作上通常要花 2-3 倍的回合——总体成本更高。对 reviewer 以及依据散文描述工作的 implementer,用中端模型作为下限。当任务的计划文本包含了要写的完整代码时,实现工作就是誊抄加测试:对那个 implementer 使用最便宜档次。单文件机械修复也用最便宜档次。
任务复杂度信号(实现任务):
Implementer subagent 报告四种状态之一。恰当地处理每一种:
DONE: 生成 review 包(scripts/review-package BASE HEAD,从本 skill 目录运行——它会打印自己写入的唯一文件路径;BASE 是你派发 implementer 之前记录的 commit——绝不要用 HEAD~1,那会无声地丢弃多 commit 任务中除最后一个之外的所有 commit),然后带着打印出的路径派发 task reviewer。
DONE_WITH_CONCERNS: Implementer 完成了工作但标记了疑虑。在继续之前阅读这些疑虑。如果疑虑关于正确性或范围,在 review 之前解决它们。如果只是观察性备注(例如"这个文件越来越大了"),记录下来并继续 review。
NEEDS_CONTEXT: Implementer 需要未被提供的信息。提供缺失的上下文并重新派发。
BLOCKED: Implementer 无法完成任务。评估阻碍因素:
绝不无视一个上报,或在没有任何改变的情况下强制同一模型重试。如果 implementer 说它卡住了,那就一定有东西需要改变。
Task reviewer 可能报告 "⚠️ Cannot verify from diff"(无法从 diff 验证)项——即位于未改动代码中、或跨越多个任务的需求。这些不会阻塞 review 的其余部分,但你必须在标记任务完成之前,自己逐一解决它们:你掌握 reviewer 所缺乏的计划和跨任务上下文。如果你确认某一项确实是缺口,把它当作一次失败的规范 review 处理——退回给 implementer 并重新 review。
每个任务的 review 是任务范围的关卡。broad review 只发生一次,在最终的整分支 review 时。当你填写 reviewer 模板时:
scripts/review-package BASE HEAD,把它打印出的文件路径传给 reviewer(或者,在没有 bash 的情况下:对该范围运行 git log --oneline、git diff --stat 和 git diff -U10,重定向到一个唯一命名的文件)。输出绝不进入你自己的上下文,而 reviewer 一次 Read 就能看到 commit 列表、stat 摘要和带上下文的完整 diff。使用你在派发 implementer 之前记录的 BASE——绝不要用 HEAD~1,那会无声地截断多 commit 任务。scripts/review-package MERGE_BASE HEAD(MERGE_BASE = 分支起始的 commit,例如 git merge-base main HEAD),并在最终 review 派发中包含打印出的路径,这样最终 reviewer 读一个文件即可,而不用用 git 命令重新推导分支 diff。你粘贴进派发 prompt 的一切——以及 subagent 打印回来的一切——都会在会话剩余时间里常驻你的上下文,并在之后每一轮被重新读取。把产物作为文件交接:
scripts/task-brief PLAN_FILE N——它把任务的完整文本提取到一个唯一命名的文件并打印路径。组织派发内容,让简报保持为需求的唯一来源。你的派发应包含:(1) 一句话说明这个任务在项目中处于什么位置;(2) 简报路径,以"先读这个——它是你的需求,包含要逐字使用的精确值"引入;(3) 简报无法知晓的、来自更早任务的接口和决定;(4) 你在简报中注意到的任何歧义的解决方案;(5) 报告文件路径和报告契约。精确值(数字、魔法字符串、签名、测试用例)只出现在简报中。…/task-N-brief.md → 报告 …/task-N-report.md),并把它放入派发 prompt。Implementer 在那里写入完整报告,只返回状态、commits、一行测试摘要和疑虑。对话记忆无法在压缩(compaction)后存活。在真实会话中,丢失了进度的 controller 曾重新派发整个已完成的任务序列——这是观察到的最昂贵的失败。把进度追踪在 ledger 文件里,而不仅仅在 todos 中。
cat "$(git rev-parse --show-toplevel)/.superpowers/sdd/progress.md"。那里标记为完成的任务是 DONE——不要重新派发它们;在第一个未标记完成的任务处恢复。Task N: complete (commits <base7>..<head7>, review clean)。git log,胜过你自己的回忆。git clean -fdx 会销毁 ledger(它是 git 忽略的临时文件);如果发生这种情况,从 git log 恢复。你:我正在使用 Subagent-Driven Development 来执行这个计划。
[读取计划文件一次:docs/superpowers/plans/feature-plan.md]
[为所有任务创建 todos]
任务 1:Hook 安装脚本
[为任务 1 运行 task-brief;带着简报 + 报告路径 + 上下文派发 implementer]
Implementer:"开始之前——hook 应该安装在用户级还是系统级?"
你:"用户级(~/.config/superpowers/hooks/)"
Implementer:"明白。开始实现..."
[稍后] Implementer:
- 实现了 install-hook 命令
- 添加了测试,5/5 通过
- 自审:发现漏了 --force 标志,已补上
- 已提交
[运行 review-package,带着打印出的路径派发 task reviewer]
Task reviewer:规范 ✅ - 所有需求都满足,没有多余。
优点:测试覆盖好,干净。问题:无。任务质量:通过。
[标记任务 1 完成]
任务 2:恢复模式
[为任务 2 运行 task-brief;带着简报 + 报告路径 + 上下文派发 implementer]
Implementer:[没有问题,继续]
Implementer:
- 添加了 verify/repair 模式
- 8/8 测试通过
- 自审:一切良好
- 已提交
[运行 review-package,带着打印出的路径派发 task reviewer]
Task reviewer:规范 ❌:
- 缺失:进度报告(规范说"每 100 项报告一次")
- 多余:添加了 --json 标志(未被要求)
问题(Important):魔法数字(100)
[带着所有发现派发修复 subagent]
Fixer:移除了 --json 标志,添加了进度报告,提取了 PROGRESS_INTERVAL 常量
[Task reviewer 再次 review]
Task reviewer:规范 ✅。任务质量:通过。
[标记任务 2 完成]
...
[所有任务之后]
[派发最终 code-reviewer]
最终 reviewer:所有需求都满足,可以合并
完成!
对比手动执行:
对比 Executing Plans:
效率提升:
质量关卡:
成本:
绝不:
scripts/task-brief)scripts/review-package BASE HEAD),并在 prompt 中指明打印出的路径git log)如果 subagent 提问:
如果 reviewer 发现问题:
如果 subagent 任务失败:
必需的工作流 skills:
Subagent 应使用:
替代工作流: