# 任务拆解与执行
website-project 确认站点规划、SEO、部署、验收和运维阶段,再进入任务拆解software-project 确认边界、架构、数据/API、发布、回滚和交付阶段,再进入任务拆解将复杂需求拆分为2-7个原子任务(每Wave 2-5个)。每个任务必须满足:
任务结构(XML格式):
<task type="auto|human-verify|decision">
<name>[任务名称]</name>
<files>[涉及文件列表]</files>
<action>
[具体执行步骤]
</action>
<verify>
[验证方法:测试命令/检查清单/人工确认]
</verify>
<security>
[安全验证:SQL注入/XSS/CSRF/权限绕过/文件上传/反序列化/敏感信息泄露;不涉及则写"不涉及,原因:...";**禁止留空**]
</security>
<done>
[完成标准:什么状态算完成]
</done>
</task>
长任务需求专项拆解:若需求含"批量导入/导出/生成静态页/重建索引/采集同步/清理缓存/>3 秒或 >100 条处理",不得按单端点单任务拆解,必须按 Init → Step → Poll 拆成依赖有序的 Wave:
task_id、total、status=queuedlast_id/游标保证每批唯一)running 超阈值标记 failed 或允许 resume)Init/Step/Poll/Done/Failed/Cancelled 状态、轮询间隔 800-2000ms、重试/取消入口、进度感知各 Wave 间存在依赖(Step 依赖 Init 的任务记录,Poll 依赖 Step 的进度),必须串行;权限/CSRF/文件/SQL 等安全触发面须在每 Wave 的 <security> 写明验证方法。
按依赖关系将任务分组:
Wave 1(并行,无依赖)
├── Task 1.1: [任务A]
└── Task 1.2: [任务B]
Wave 2(依赖Wave 1)
├── Task 2.1: [任务C,依赖1.1]
└── Task 2.2: [任务D,依赖1.2]
Wave 3(依赖Wave 2)
└── Task 3.1: [任务E,依赖2.1和2.2]
分组原则:
<security> 中给出验证方法执行单个任务时,只加载必要上下文:
任务上下文 = {
spec: [相关requirement和scenario],
design: [相关技术决策],
files: [该任务需要读写的文件],
decisions: [影响该任务的历史决策],
previous_summary: [前置Wave的任务summary]
}
如平台允许子 Agent 或并行代理执行,必须使用简报式上下文,而不是传递完整对话历史:
委派简报 = {
task: [单一任务目标],
background: [只保留与任务直接相关的背景],
files: [允许读取或修改的文件范围],
constraints: [技术/安全/编码/输出限制],
verify: [必须返回的验证证据],
forbidden: [不得触碰的模块、不得扩展的范围]
}
禁止加载:
上下文隔离同时受主 SKILL.md「二、子Agent 边界与委派协议 → 2.3」与「长任务执行可靠性(L0)」约束:长任务只加载当前 Wave / 当前原子任务所需上下文,已完成 Wave 细节仅以
previous_summary传递,不回灌完整对话历史,避免上下文污染导致后续 Wave 误判。
每个任务执行后:
记录summary:
## Task Summary: [任务名]
**完成状态**: [完成/部分完成/失败]
**修改文件**: [文件列表]
**验证证据**: [命令/API响应/测试结果/人工确认]
**置信度**: [高/中/低,低置信度必须说明原因]
**关键决策**: [执行中做出的决策]
**偏差说明**: [与plan的差异及原因]
**遗留问题**: [未解决的问题]
验证通过:标记done,进入下一任务
验证失败:修复或回滚,重新执行
所有Wave执行完毕后,将任务执行结果和关键决策沉淀到项目记忆(参见 project-memory-management.md):
## 任务拆解报告
### 需求概述
[一句话总结]
### 任务列表
#### Wave 1(并行)
```xml
<task type="auto">
<name>...</name>
<files>...</files>
<action>...</action>
<verify>...</verify>
<security>...</security>
<done>...</done>
</task>
```
#### Wave 2(依赖Wave 1)
...
### 执行建议
- 优先执行Wave 1,并行推进
- Wave 2等Wave 1全部完成后再开始
- 每个任务完成后立即验证
### 风险点
- [风险1及缓解措施]
<security> 节点禁止为空:涉及安全触发面必须写明验证方法,不涉及必须写明原因| 步骤 | 失败条件 | 回退目标 | 最大重试 | 不可恢复时升级路径 |
|---|---|---|---|---|
| 第一步:需求分析 | 需求边界不清,隐含依赖未识别 | 基于已知信息拆解,标注"依赖待确认" | 1 | 输出需求澄清清单,等待用户补充 |
| 第二步:原子任务拆解 | 任务数量超出单次context window容量 | 按模块/资源域拆分为多个Wave集合 | 1 | 建议拆分为多个独立Spec驱动开发会话 |
| 第三步:Wave分组 | 任务间存在循环依赖 | 识别循环并合并为单任务,或引入中间状态 | 2 | 输出依赖图,建议架构层面解耦 |
| 第四步:上下文隔离 | 任务上下文跨Wave污染 | 强制重置context,仅加载previous_summary | 1 | 标注"上下文隔离失败",建议人工接管 |
| 委派执行 | 子 Agent 接收到完整对话、模糊目标或缺少验收口径 | 收回任务,重写委派简报后再执行 | 1 | 标注"委派边界失败",由主 Agent 重新分析任务 |
| 第五步:执行与验证闭环 | 验证连续失败3次 | 暂停执行,输出差异分析 | 0 | 标记任务为"阻塞",输出阻塞清单移交人工 |
| 第六步:记录到项目记忆 | 项目记忆系统不可用 | 输出执行报告和决策到本地文件 | 1 | 标注"执行结果未沉淀",提示用户手动保存 |
spec-driven-development 确保需求已对齐code-generation 实现具体代码code-review 检查质量