---
name: execution-subagent-driven-dev
description: 子代理驱动开发(SDD)。通过分发新鲜子代理执行每个任务，每个任务后进行审查，最后进行全分支审查。来自 Superpowers 的核心执行引擎。
---

# 子代理驱动开发(SDD)

通过为每个任务分发一个全新的实现者子代理来执行计划，每个任务后进行任务审查（规范合规 + 代码质量），最后进行全分支审查。

**为什么用子代理：** 你将任务委托给具有隔离上下文的专门代理。通过精确构建它们的指令和上下文，你确保它们保持专注并成功完成任务。它们不应该继承你会话的上下文或历史 — 你构建它们需要的一切。这也保护了你自己的上下文用于协调工作。

**核心原则：** 每任务新鲜子代理 + 任务审查（规范 + 质量）+ 宽泛最终审查 = 高质量、快速迭代

## 何时使用

- 有实现计划？
- 任务大多独立？
- 想在当前会话中完成？

如果都是 yes → 使用此技能。

## 流程

### 设置

1. 确保工作在隔离工作区中（使用 `git-worktrees` 技能）
2. 解析工作区目录：`scripts/sdd-workspace PLAN_FILE`
3. 检查账本（`<workspace>/progress.md`）
4. 读取计划一次，为每个任务创建 todo
5. 扫描计划中的冲突（任务间矛盾、与全局约束矛盾）

### 任务循环

对每个任务：

#### 1. 分发实现者
记录 BASE commit（`git rev-parse HEAD`）。
- **任务简报：** 运行 `scripts/task-brief PLAN_FILE N`
- **报告文件名：** 与简报同名（`task-N-report.md`）
- **分发 prompt 包含：**
  1. 一行项目背景
  2. 简报路径（"先读这个"）
  3. 来自前置任务的接口信息
  4. 你对歧义的解读
  5. 报告文件路径和报告契约

**绝不**让子代理读取整个计划文件。
**绝不**分发多个实现子代理并行（会冲突）。

#### 2. 处理报告

实现者报告四种状态之一：
- **DONE:** 生成审查包，分发审查者
- **DONE_WITH_CONCERNS:** 先读取疑虑，如果是正确性问题则先处理
- **NEEDS_CONTEXT:** 提供缺失上下文，重新分发
- **BLOCKED:** 评估阻塞原因，可能需要更强模型或拆分任务

#### 3. 审查任务

- 运行 `scripts/review-package PLAN_FILE BASE HEAD`
- 分发任务审查子代理
- 审查者输入：简报 + 报告 + 审查包 + 全局约束
- 审查者输出：规范合规 ✓/✗ + 质量通过/不通过 + 发现列表

**绝不跳过任务审查。实现者自审不能替代任务审查。**

#### 4. 修复循环

触发条件：规范 ❌、Critical/Important 发现、或确认有 ⚠️ 项。

**Rounds 1-3 — 恢复原始实现者：**
发送开放发现原文。它的上下文完整。

**Rounds 4-5 — 分发全新实现者，使用更强模型：**
"A prior implementer attempted this task N times; you own it now."

每轮：
1. 实现者修复 + 重新运行测试 + 追加修复报告
2. 运行 `scripts/review-package PLAN_FILE FIX_BASE HEAD`
3. 分发范围限定的重新审查
4. 重新审查者裁定每个发现：ADDRESSED 或 NOT ADDRESSED
5. 记录到账本

#### 5. 断路器（5 轮后）
停止分发。自己裁定每个开放发现：

- **审查者误报/有争议：** 停放 → `Task N: parked — <finding> — ruling: <why>`
- **真实但无下游依赖：** 停放，注明延迟
- **真实且承重：** STOP。`Task N: BLOCKED — <reason>`。报告给用户。

**只在顶部裁定。提前裁定是用不同名字预先判断。**

#### 6. 完成任务

审查干净后（或所有开放发现都已停放）：
- 追加完成行到账本
- 标记 todo 完成
- 继续下一任务

### 最终审查
所有任务完成后：
1. 运行 `scripts/review-package PLAN_FILE MERGE_BASE HEAD`
2. 分发最终审查（使用最强模型）
3. 如果有发现，分发一个修复子代理（不是每个发现一个）
4. 然后一次范围限定的重新审查
5. 裁定剩余发现

### 完成

1. 删除工作区（`rm -rf <workspace>`）
2. 使用 `finish-branch` 技能

## 模型选择

| 任务类型 | 模型级别 |
|----------|----------|
| 机械实现（1-2文件，完整规范） | cheap |
| 集成和判断（多文件协调） | standard |
| 架构和设计 | capable |
| 最终审查 | capable（总是） |
| 修复轮次 4-5 | 至少比卡住的实现者高一级 |

**总是显式指定模型。** 省略模型会继承会话模型（通常是最贵的）。

## 上下文管理铁律
- 所有产物通过文件传递
- 分发 prompt 只包含当前任务所需
- 不粘贴历史任务摘要
- 审查包是文件，不在你的上下文中
- 信任账本而非自己的记忆

## 合理化防御表

| 借口 | 现实 |
|------|------|
| "规范合规差不多就行了" | 审查者发现规范差异 = 没完成。修复或裁定。 |
| "我自己修复，分发太麻烦" | 控制器修复污染你的上下文且跳过审查。 |
| "再来一轮会收敛吧" | 过了顶部，轮次不会收敛。失败是结构性的。 |
| "审查者反正会发现新东西" | 范围限定的重新审查验证修复；它们不会游荡。 |
| "这个发现明显错了，我跳过吧" | 你只在顶部裁定，每个裁定都是账本条目。 |
| "修复很小，跳过重新审查" | 未审查的修复是回归的方式。 |
| "审查拖慢了循环" | 没有审查的循环只是未验证的折腾。 |
| "账本记录是多余的" | 账本是压缩后存活的东西。 |
