con un clic
subagent-driven-development
当在当前会话中执行包含独立任务的实现计划时使用
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
当在当前会话中执行包含独立任务的实现计划时使用
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
从 OpenSpec 变更中实现任务。当用户想开始实现、继续实现或处理任务时使用。
在实验性工作流中归档已完成的变更。当用户想在实现完成后定稿并归档变更时使用。
进入探索模式 - 一个用于探索想法、调查问题、澄清需求的思考伙伴。当用户想在变更之前或期间先思考一番时使用。
一步生成所有产出物来提议新变更。当用户想快速描述要构建的内容并获得包含设计、规范和任务的完整提案时使用。
将变更中的增量规范同步到主规范。当用户希望将增量规范的变更更新到主规范中(而不归档变更)时使用。
XWOS C 代码风格指南。用于在 XWOS(玄武操作系统)代码库中编写或审查 C 代码时遵循项目约定的编码规范。包括文件组织、命名约定、类型系统、代码格式化、错误处理、注释规范等。
| name | subagent-driven-development |
| description | 当在当前会话中执行包含独立任务的实现计划时使用 |
| version | 1.0.0 |
| license | MIT |
| metadata | {"hermes":{"tags":["agents","development"]}} |
通过为每个任务分派一个全新的实现子智能体来执行计划:每个任务完成后做一次任务审查(规格合规性 + 代码质量),全部任务结束后再做一次覆盖整个分支的宽范围审查。
为什么用子智能体: 你把任务委派给具有隔离上下文的专用智能体。通过精心设计它们的指令和上下文,确保它们专注并成功完成任务。它们绝不应继承你会话的上下文或历史记录——你要精确构造它们所需的一切。这样也能为你自己保留用于协调工作的上下文。
核心原则: 每个任务一个全新子智能体 + 任务审查(规格 + 质量)+ 结尾宽范围审查 = 高质量、快速迭代
旁白: 工具调用之间最多说一句简短的旁白——进度账本和工具结果本身就是记录。
持续执行: 不要在任务之间停下来向你的人类伙伴确认。不间断地执行计划里的所有任务。唯一该停下的理由是:你无法解决的 BLOCKED 状态、确实妨碍推进的歧义,或所有任务已完成。"我该继续吗?"之类的询问和进度小结都在浪费他们的时间——他们让你执行计划,那就执行。
digraph when_to_use {
"有实现计划?" [shape=diamond];
"任务基本独立?" [shape=diamond];
"留在当前会话?" [shape=diamond];
"subagent-driven-development" [shape=box];
"executing-plans" [shape=box];
"手动执行或先头脑风暴" [shape=box];
"有实现计划?" -> "任务基本独立?" [label="是"];
"有实现计划?" -> "手动执行或先头脑风暴" [label="否"];
"任务基本独立?" -> "留在当前会话?" [label="是"];
"任务基本独立?" -> "手动执行或先头脑风暴" [label="否 - 紧密耦合"];
"留在当前会话?" -> "subagent-driven-development" [label="是"];
"留在当前会话?" -> "executing-plans" [label="否 - 并行会话"];
}
与 Executing Plans(并行会话)的对比:
digraph process {
rankdir=TB;
subgraph cluster_per_task {
label="每个任务";
"分派实现子智能体 (./implementer-prompt.md)" [shape=box];
"实现子智能体有疑问?" [shape=diamond];
"回答问题,提供上下文" [shape=box];
"实现子智能体实现、测试、提交、自审" [shape=box];
"写出 diff 文件,分派任务审查子智能体 (./task-reviewer-prompt.md)" [shape=box];
"任务审查者报告规格 ✅ 且质量通过?" [shape=diamond];
"针对 关键/重要 问题分派修复子智能体" [shape=box];
"在待办列表和进度账本中标记任务完成" [shape=box];
}
"读取计划,记录上下文和全局约束,创建待办" [shape=box];
"还有剩余任务?" [shape=diamond];
"分派最终代码审查子智能体 (../requesting-code-review/code-reviewer.md)" [shape=box];
"使用 superpowers:finishing-a-development-branch" [shape=box style=filled fillcolor=lightgreen];
"读取计划,记录上下文和全局约束,创建待办" -> "分派实现子智能体 (./implementer-prompt.md)";
"分派实现子智能体 (./implementer-prompt.md)" -> "实现子智能体有疑问?";
"实现子智能体有疑问?" -> "回答问题,提供上下文" [label="是"];
"回答问题,提供上下文" -> "分派实现子智能体 (./implementer-prompt.md)";
"实现子智能体有疑问?" -> "实现子智能体实现、测试、提交、自审" [label="否"];
"实现子智能体实现、测试、提交、自审" -> "写出 diff 文件,分派任务审查子智能体 (./task-reviewer-prompt.md)";
"写出 diff 文件,分派任务审查子智能体 (./task-reviewer-prompt.md)" -> "任务审查者报告规格 ✅ 且质量通过?";
"任务审查者报告规格 ✅ 且质量通过?" -> "针对 关键/重要 问题分派修复子智能体" [label="否"];
"针对 关键/重要 问题分派修复子智能体" -> "写出 diff 文件,分派任务审查子智能体 (./task-reviewer-prompt.md)" [label="重新审查"];
"任务审查者报告规格 ✅ 且质量通过?" -> "在待办列表和进度账本中标记任务完成" [label="是"];
"在待办列表和进度账本中标记任务完成" -> "还有剩余任务?";
"还有剩余任务?" -> "分派实现子智能体 (./implementer-prompt.md)" [label="是"];
"还有剩余任务?" -> "分派最终代码审查子智能体 (../requesting-code-review/code-reviewer.md)" [label="否"];
"分派最终代码审查子智能体 (../requesting-code-review/code-reviewer.md)" -> "使用 superpowers:finishing-a-development-branch";
}
在分派任务 1 之前,先把计划整体扫一遍,找出冲突:
把你发现的所有问题打包成一个问题呈给你的人类伙伴——每一处发现都紧挨着强制它的计划原文,问哪一方说了算——在执行开始之前一次性问清,而不是在计划执行途中每发现一处就打断一次。如果扫描下来很干净,就不作声、直接开始。审查循环仍然是那些只有在实现时才暴露出来的冲突的兜底网。
在能胜任每个角色的前提下,使用最弱的模型,以节省成本、提高速度。
机械性实现任务(隔离的函数、清晰的规格、1-2 个文件):使用快速、便宜的模型。当计划编写得足够详细时,大多数实现任务都是机械性的。
集成和判断类任务(多文件协调、模式匹配、调试):使用标准模型。
架构和设计类任务:使用最强的可用模型。最终的整分支审查就属于这一类——用最强的可用模型来分派它,而不是会话默认模型。
审查类任务:用同样的判断力去选模型,并按 diff 的规模、复杂度和风险来缩放。一个小的机械性 diff 不需要最强的模型;一处微妙的并发改动才需要。
分派子智能体时永远显式指定模型。 省略模型会默默继承你会话的模型——往往是最强也最贵的那个——从而悄悄让本节的努力落空。
轮次数比 token 单价更重要。 墙钟时间和上下文成本随子智能体所用的轮次数增长,而最便宜的模型在多步工作上常常要多花 2-3 倍的轮次——总成本反而更高。给审查者、以及从散文式描述开工的实现者,用中档模型作为下限。当任务的计划文本已经包含要写的完整代码时,实现就是誊写加测试:那种实现者用最便宜的档位。单文件的机械性修复也用最便宜的档位。
任务复杂度信号(实现任务):
实现子智能体会报告四种状态之一。对每种状态做相应处理:
DONE: 生成审查包(在本技能目录下运行 scripts/review-package BASE HEAD——它会打印出自己写入的那个唯一文件路径;BASE 是你在分派实现者之前记录下来的那个提交——绝不用 HEAD~1,那会悄悄丢掉多提交任务里除最后一个之外的所有提交),然后把打印出的路径交给任务审查者去分派。
DONE_WITH_CONCERNS: 实现者完成了工作但标记了疑虑。在继续之前先读这些疑虑。如果疑虑涉及正确性或范围,在审查前先解决。如果只是观察性说明(例如"这个文件越来越大了"),记录下来并继续进入审查。
NEEDS_CONTEXT: 实现者需要未提供的信息。补上缺失的上下文并重新分派。
BLOCKED: 实现者无法完成任务。评估阻塞原因:
绝不忽略一次上报,也绝不在不做任何更改的情况下强迫同一模型重试。如果实现者说卡住了,那就说明有什么东西需要改变。
任务审查者可能会报告"⚠️ 无法从 diff 中核实"的事项——那些藏在未改动代码里、或横跨多个任务的需求。这些事项不会阻塞审查的其余部分,但在标记任务完成之前你必须逐一亲自解决:你手里握着计划和跨任务上下文,而审查者没有。如果你确认某一项确实是真实的缺口,就把它当作一次未通过的规格审查处理——退回给实现者并重新审查。
每个任务的审查都是任务范围内的关卡。宽范围审查只发生一次,在最终的整分支审查。当你填写审查者模板时:
scripts/review-package BASE HEAD,把它打印出的文件路径交给审查者(若没有 bash:对该区间跑 git log --oneline、git diff --stat、git diff -U10,重定向到一个唯一命名的文件)。这些输出永远不会进入你自己的上下文,而审查者在一次 Read 调用里就能看到提交列表、stat 摘要和带上下文的完整 diff。用你在分派实现者之前记录下的 BASE——绝不用 HEAD~1,那会悄悄截断多提交任务。scripts/review-package MERGE_BASE HEAD(MERGE_BASE = 分支起点的那个提交,例如 git merge-base main HEAD),把打印出的路径放进最终审查的分派里,这样最终审查者读一个文件就行,不必用 git 命令重新推导整个分支的 diff。你粘进分派提示词里的一切、以及子智能体打印回来的一切,都会在会话余下的时间里常驻在你的上下文中,并在之后的每一个轮次被重新读取。把产物作为文件来交接:
scripts/task-brief PLAN_FILE N——它把该任务的完整文本抽取到一个唯一命名的文件并打印路径。组织你的分派,让这份简报保持为需求的唯一来源。你的分派应包含:(1) 一行说明这个任务在项目中的位置;(2) 简报路径,引入语为"先读这个——它是你的需求,里面有要逐字使用的精确取值";(3) 简报无从知晓的、来自前序任务的接口和决策;(4) 你对简报中注意到的任何歧义的裁定;(5) 报告文件路径和报告契约。精确取值(数字、魔法字符串、签名、测试用例)只出现在简报里。…/task-N-brief.md → 报告 …/task-N-report.md),并写进分派提示词。实现者把完整报告写在那里,只返回状态、提交、一行测试小结和疑虑。会话记忆无法在上下文压缩(compaction)中存活。在真实会话里,丢失了位置的控制者曾重新分派整段已经完成的任务序列——这是观察到的最昂贵的失败。把进度记在一个账本文件里,而不只是记在待办里。
cat "$(git rev-parse --show-toplevel)/.superpowers/sdd/progress.md"。在那里被列为完成的任务就是完成了——不要重新分派它们;从第一个未标记完成的任务处继续。Task N: complete (commits <base7>..<head7>, review clean)。git log,而不是你自己的记忆。git clean -fdx 会毁掉这个账本(它是被 git 忽略的临时文件);万一发生了,就从 git log 恢复。你:我正在使用子智能体驱动开发来执行这个计划。
[一次性读取计划文件:docs/superpowers/plans/feature-plan.md]
[为所有任务创建待办]
任务 1:Hook 安装脚本
[对任务 1 运行 task-brief;分派实现者,附带简报 + 报告路径 + 上下文]
实现者:"在我开始之前——hook 应该安装在用户级别还是系统级别?"
你:"用户级别(~/.config/superpowers/hooks/)"
实现者:"明白了。现在开始实现……"
[稍后] 实现者:
- 实现了 install-hook 命令
- 添加了测试,5/5 通过
- 自审:发现遗漏了 --force 参数,已添加
- 已提交
[运行 review-package,把打印出的路径交给任务审查者去分派]
任务审查者:规格 ✅ - 所有需求已满足,无多余内容。
优点:测试覆盖好,代码整洁。问题:无。任务质量:通过。
[标记任务 1 完成]
任务 2:恢复模式
[对任务 2 运行 task-brief;分派实现者,附带简报 + 报告路径 + 上下文]
实现者:[无疑问,直接开始]
实现者:
- 添加了 verify/repair 模式
- 8/8 测试通过
- 自审:一切正常
- 已提交
[运行 review-package,把打印出的路径交给任务审查者去分派]
任务审查者:规格 ❌:
- 缺失:进度报告(规格要求"每 100 项报告一次")
- 多余:添加了 --json 参数(未被要求)
问题(重要):魔法数字(100)
[分派修复子智能体,带上所有发现]
修复者:移除了 --json 参数,添加了进度报告,提取了 PROGRESS_INTERVAL 常量
[任务审查者再次审查]
任务审查者:规格 ✅。任务质量:通过。
[标记任务 2 完成]
...
[所有任务完成后]
[分派最终代码审查者]
最终审查者:所有需求已满足,可以合并
完成!
与手动执行相比:
与 Executing Plans 相比:
效率提升:
质量关卡:
成本:
绝不:
scripts/task-brief)scripts/review-package BASE HEAD),并在提示词里点名打印出的路径git log)如果子智能体提问:
如果审查者发现问题:
如果子智能体任务失败:
必需的工作流技能:
子智能体应使用:
替代工作流: