subagent-driven-development 是通过调度独立子代理来执行实现计划的 Skill。
核心原则:
每个任务用新鲜子代理 + 两阶段审查(先规范合规,后代码质量)= 高质量、快迭代。
为什么用子代理:
- 将任务委托给具有隔离上下文的专用代理
- 通过精确构建它们的指令和上下文,确保它们保持专注并成功完成任务
- 它们不应继承你的会话上下文或历史 —— 你精确构建它们需要的东西
- 这也保留了你自己的上下文用于协调工作
| 特征 | subagent-driven-development | executing-plans |
|---|
| 会话 | 同一会话(无上下文切换) | 并行会话 |
| 审查 | 每个任务后两阶段审查 | 每批任务后审查 |
| 迭代 | 更快(任务间无人工介入) | 较慢 |
| 子代理 | 每个任务新鲜子代理 | 不使用子代理 |
- 阅读计划文件
- 提取所有任务的完整文本
- 记录上下文
- 创建 TodoWrite
- 调度实现子代理(带完整任务文本 + 上下文)
- 实现子代理提问?→ 回答问题,继续
- 实现子代理实现、测试、提交、自我审查
- 调度规范合规审查子代理
- 审查通过?→ 继续;否则 → 修复后重新审查
- 调度代码质量审查子代理
- 审查通过?→ 继续;否则 → 修复后重新审查
- 标记任务完成
- 调度最终代码审查子代理
- 使用 finishing-a-development-branch
使用能处理每个角色的最弱模型以节省成本和提高速度:
- 机械实现任务(隔离函数、清晰规范、1-2 个文件):使用快速、便宜的模型。大多数实现任务是机械性的当计划详述良好时。
- 集成和判断任务(多文件协调、模式匹配、调试):使用标准模型。
- 架构、设计和审查任务:使用最有能力的模型。
任务复杂信号:
- 接触 1-2 个文件且有完整规范 → 便宜模型
- 接触多个文件有集成关注 → 标准模型
- 需要设计判断或广泛代码库理解 → 最有能力的模型
实现子代理报告四种状态之一。适当处理每个:
DONE: 继续到规范合规审查。
DONE_WITH_CONCERNS: 实现者完成了工作但标记了疑虑。阅读疑虑后再继续。如果疑虑关于正确性或范围,在审查前解决;如果它们是观察(例如”这个文件越来越大了”),记录下来并继续。
NEEDS_CONTEXT: 实现者需要未提供的信息。提供缺失的上下文并重新调度。
BLOCKED: 实现者无法完成任务。评估障碍:
- 如果是上下文问题,提供更多上下文并用相同模型重新调度
- 如果任务需要更多推理,用更有能力的模型重新调度
- 如果任务太大,拆成更小的块
- 如果计划本身错了,升级给人类
- 在 main/master 分支上开始实现(除非明确许可)
- 跳过审查(规范合规或代码质量)
- 继续未修复的问题
- 并行调度多个实现子代理(会冲突)
- 让子代理读取计划文件(提供完整文本代替)
- 跳过场景设置上下文(子代理需要理解任务位置)
- 忽略子代理问题(在让它们继续前回答)
- 对规范合规接受”差不多”(审查者发现问题 = 没完成)
- 跳过审查循环(审查者发现问题 = 实现者修复 = 审查再次)
- 让实现者自我审查取代实际审查(两者都需要)
- 在规范合规审查通过前开始代码质量审查(错误顺序)
- 当任一审查有未解决问题时进入下一任务
何时使用
关键要点
- 每任务用新鲜子代理
- 两阶段审查:先规范合规,后代码质量
- 审查循环直到通过
- 用合适复杂度的模型
必须使用的前置 Skill
- using-git-worktrees(设置隔离工作区)
必须使用
- writing-plans(创建计划)
- requesting-code-review(代码审查模板)
- finishing-a-development-branch(完成开发)
- 前置:
using-git-worktrees、writing-plans。
- 后续:
finishing-a-development-branch。
- 替代:
executing-plans(用于并行会话)。
查看源文件: GitHub原始文件