第 4 章 / 共 10 章
spec、plan、tasks 各管什么
4.1 混在一份文件里会发生什么
第2章那份规格已经不错了,但如果你把它直接丢给 agent 说「照着做」,还是会出问题——特别是当需求稍大一点的时候。
因为它只回答了「做什么」。「怎么做」(用哪个库解析 XML?还是手写字符串拼接?在哪一层做转义?)和「分几步做」(先写序列化还是先接按钮?)仍然是空白。agent 会在同一次回复里同时做这三件事:一边确定需求、一边定技术方案、一边写代码。三件事混在一个上下文里,你既没法在方案错的时候及时叫停,也没法只重做其中一段。
主流工具在这一点上高度一致,只是叫法不同:
- GitHub Spec Kit 的命令链是
/speckit.constitution→/speckit.specify→/speckit.plan→/speckit.tasks→/speckit.implement,中间还有/speckit.clarify(澄清)和/speckit.analyze(一致性检查)。 - Kiro 由提示先生成用户故事和 EARS 验收标准,再分析代码库生成设计文档(数据流图、接口、数据库 schema、API 端点),最后生成带依赖顺序、且每条都回链到需求的任务列表。
- OpenSpec 走的是更轻的三段:
/opsx:propose(提出变更)→/opsx:apply(实施)→/opsx:archive(归档)。
抛开工具名,它们是同一条链路。
4.2 三份文件的分工

| 产物 | 回答 | 谁来评审 | 改动成本 |
|---|---|---|---|
| spec(规格) | 做什么、什么算完 | 你(也可能包括产品、使用者) | 最低,改几行字 |
| plan(计划) | 用什么方案、动哪些文件、有什么风险 | 你(技术判断) | 中等,改方案不改代码 |
| tasks(任务) | 分几步、每步怎么验收 | 你快速扫一眼 | 中等 |
| 实现 | 代码 | 测试 + 代码审查 | 最高 |
这张表的实际用途是把争论提前。方案上的分歧,在 plan 阶段是一段文字的修改;等到实现完再发现,就是一个 PR 的重写。
一份 plan 大致长这样:
# 计划:订阅列表导出为 OPML
## 技术方案
- 不引入 XML 库。OPML 结构简单且固定,用模板字符串生成,转义单独抽一个函数处理。
- 下载通过 Blob + URL.createObjectURL 触发,避免依赖后端。
- 分组映射:folder 为空的订阅挂在根 outline 下,非空的按 folder 名聚合成父 outline。
## 涉及文件
- 新增 src/lib/opml.ts:serializeToOpml(subs: Subscription[]): string
- 新增 src/lib/opml.test.ts
- 修改 src/pages/Settings.tsx:新增按钮与点击处理
## 风险
- folder 名可能重复或含特殊字符 → 转义函数需同时用于 title 和 folder
- 大列表下主线程阻塞 → 已在非目标中排除,千条以内可接受
## 不改动
- src/store/subscriptions.ts
注意 plan 里出现了函数签名和文件路径,但没有出现循环和条件语句——它停在「方案」这一层,不下探到实现。
4.3 任务卡的粒度
任务拆分最常见的错误是拆得太粗(「实现导出功能」等于没拆)或太细(「创建文件」「写函数签名」这种)。
好粒度只有一个判断标准:一张任务卡完成后,你能立刻验收它,而且它不依赖尚未完成的其他卡。
# 任务
## T1 OPML 序列化函数
- 实现 src/lib/opml.ts 的 serializeToOpml
- 覆盖验收标准 1、2、4
- 验收:npm test src/lib/opml.test.ts 全绿,测试包含空列表、含分组、含特殊字符三种输入
## T2 设置页导出入口
- 在 Settings.tsx 新增「导出订阅」按钮与点击处理
- 覆盖验收标准 1、3
- 验收:手动点击可下载文件;订阅为空时显示提示且不下载
## T3 端到端验证
- 用真实订阅数据导出一次,导入到另一个阅读器
- 覆盖验收标准 1、2、4
- 验收:目标阅读器成功识别全部订阅与分组
4.4 追溯性不是免费的
顺带提一个真实的取舍。已有研究比较了几种追溯强度不同的 SDD 做法:要求逐行引用需求的、只做产物级追溯的(Spec Kit 属于这一档)、以及事后补追溯图的(OpenSpec 属于这一档)。结论是取舍关系:不要求逐行引用时,模型输出的确定性更高;但只有要求引用的条件下,才能自动检测出「代码里出现了规格中不存在的东西」这类幻觉。
对个人项目和小团队,产物级追溯(任务卡回链验收标准)就是性价比最高的一档。逐行引用留给真正需要合规审计的场景。