第 13 章 | 编写 tasks.md
💡 进群学习加 wx: agentupdate
(申请发送: agentupdate)
(申请发送: agentupdate)
第 13 章:编写 tasks.md
学习目标
把 spec 翻译成可执行的"组"——dispatch 的最小单位。
任务清单的核心结构
## 1. 组名
- [ ] 1.1 任务描述
- [ ] 1.2 任务描述
- [ ] 1.3 任务描述
## 2. 组名
- [ ] 2.1 ...
两个硬规则:
## N.数字标题划分组(这是 dispatch 的边界)- [ ]checkbox 是状态标记(developer 完成后改- [x])
组的粒度
flowchart LR
Bad1["太粗:
1 组 30 个 task"] --> ProB1["每次 dispatch
上下文爆炸"]
Bad2["太细:
每 task 一组"] --> ProB2["dispatch 50+ 次
编排成本高"]
Good["合适:
3~7 task / 组"] --> ProG["dispatch 10~15 次
每次工作量明确"]
style Bad1 fill:#ffcdd2
style Bad2 fill:#ffcdd2
style Good fill:#c8e6c9→ MVP 阶段先按 3~7 task / 组拆。
组与 Requirement 的映射
不是 1:1,是多对多:
组 3 (TTS Backend) ─┬→ Requirement: TTS 配音生成
└→ 部分: Markdown 解析 (narration 字段)
组 7 (编排器) ─┬→ Requirement: 同步策略
├→ Requirement: 录制中错误暂停 (部分)
└→ 部分: 终端控制
→ 一个组可以涉及多个 Requirement,一个 Requirement 也可被多个组实现。
任务的"完成定义"
每条 task 必须可被 yes/no 验证。模板:
✅ "实现 TTSBackend 抽象类,方法 synthesize(text) -> Path"
→ 看代码有没有这个类、方法签名对不对,能立刻判断
❌ "完善 TTS 模块"
→ "完善"是什么?验不了
❌ "提高代码质量"
→ 同上,含糊
实例:doc2video 的 13 个组
flowchart TB
G1["1. 项目脚手架
(4 task)"] --> G2["2. Markdown 解析
(5 task)"]
G2 --> G3["3. TTS Backend
(4 task)"]
G2 --> G4["4. Tmux 终端控制
(6 task)"]
G3 --> G7["7. 编排器
(5 task) TDD"]
G4 --> G7
G2 --> G5["5. 文档面板
(5 task)"]
G5 --> G7
G4 --> G6["6. 屏幕录制
(5 task)"]
G6 --> G7
G7 --> G8["8. Dry-run 预检
(5 task)"]
G7 --> G9["9. 错误暂停
(7 task) TDD"]
G7 --> G10["10. 视频合成
(4 task)"]
G10 --> G11["11. 报告输出
(3 task)"]
G11 --> G12["12. CLI 整合
(5 task)"]
G12 --> G13["13. 文档与示例
(3 task)"]
style G7 fill:#fff9c4
style G9 fill:#fff9c4→ 黄色标记是 TDD 组(先写测试再实现)。
排序规则
✅ 上游模块先做(脚手架 → 解析 → TTS / 终端 → 编排)
✅ 独立可并行的组排相邻(TTS 与 Tmux 互不依赖)
✅ 集成组放最后(CLI 整合、E2E 示例)
✅ 复杂的 TDD 组明确标注
❌ 不要按"工作量大小"排序
❌ 不要把验证类组放最前
TDD 标记
某些组需要先写测试(H3 规则):
## 7. 编排器(同步策略) <!-- TDD -->
- [ ] 7.1 ...
- [ ] 7.2 ...
<!-- TDD --> 注释告诉 dev.md 在 dispatch developer 之前先 dispatch tester 写失败测试。
反模式
❌ 一个组 20+ task 太大
❌ 一个组 1 task 太碎
❌ 跨组循环依赖 死锁
❌ task 不可验证 无法判断完成
❌ task 列出"实现"动词但没说要什么 没契约
你现在能做什么
- 把 spec 拆成 5~15 个组
- 每条 task 都能 yes/no 验证完成
- 标记需要 TDD 的复杂组
- 画出组的依赖图