第 11 天:命令循环——spec → story → implement → verify → review → release → phase-close

SDD+Harness 四周学习计划 · Week 2 · Day 11

Posted by LSG on August 20, 2026

SDD + Harness 四周学习计划 · Week 2 · Day 11(全计划第 11 课)

今日主题:命令循环:spec → story → implement → verify → review → release → phase-close

建议用时:60–90 分钟 | 前置:Day 9 的 .ai/ 结构(commands/ 的位置与用法)+ Day 10 已装好 harness 的测试仓库

输出物:一张七命令循环图 + 每个命令的「输入 / 产物 / 触发时机」速查表


0. 一句话剧透

Day 9 你见过 .ai/commands/ 里有七个 Markdown 文件,今天把它们串成一条命令循环spec → story → implement → verify → review → release → phase-close

这套循环的用法是「让 AI 遵循该文件」——每个文件是一份流程说明书(内含 Usage / Inputs / Procedure / Done criteria),你想让 AI 进入哪个阶段,就把对应文件喂给它。sdd-harness 不绑定特定 AI,它靠这七个文件把任何 AI 拉进同一条流水线。

把这七个词当成「开发的生命周期」:从「定契约」到「收尾归档」,每一步都有明确输入和产物——这正是 Day 1 说的「可验证、可回退」。


1. 今日目标(学完你能做到)

  • 能按顺序背出七个命令,并说出每个命令在循环里的位置
  • 能说出每个 commands 文件的通用四段结构(Usage / Inputs / Procedure / Done criteria)
  • 能讲清「让 AI 遵循该文件」是什么用法,以及为什么这能实现 runtime-agnostic
  • 能说出开发主循环(spec→story→implement→verify)与收尾(review→release→phase-close)的分界
  • 能把命令循环与分支规范 / SemVer 关联起来(squash merge、release 分支、tag)
  • 完成实操:精读一个 commands 文件 + 纸上走一遍循环

对应计划 Day 11 主题:命令循环。今天不装任何新东西——你用 Day 10 的测试仓库来读文件、走流程。


2. 学习动线(建议时间分配)

步骤 内容 用时
1 打开 .ai/commands/,通读七个文件名与开头 10 分钟
2 精读「3」:命令循环全景 + 通用四段结构 10 分钟
3 精读「4」:开发主循环 spec → story → implement → verify 20 分钟
4 精读「5」:收尾 review → release → phase-close 15 分钟
5 精读「6」:循环与分支/SemVer 的咬合 10 分钟
6 实操「7」:精读一个文件 + 纸上走循环 15–20 分钟
7 自测「8」+ 打卡 10 分钟

3. 命令循环全景:七个 Markdown 流程文件

.ai/commands/ 下是七个 Markdown 文件,名字就是循环的阶段:

1
2
spec → story → implement → verify → review → release → phase-close
(定契约)(拆故事)(实现)(验证)(评审)(发布)(阶段收尾)

用法:不是「在终端敲一个命令」,而是「让 AI 遵循该文件」——把这个 Markdown 文件作为流程指令交给当前 AI 会话,AI 就按文件里的步骤走。每个文件都是同一套四段结构:

含义 对应问题
Usage 什么时候用这个命令 现在该不该进入这个阶段
Inputs 需要什么输入(文件、信息、前置产物) 手头有什么才能开始
Procedure 一步步做什么 具体怎么执行
Done criteria 什么算完成 阶段验收标准

关键认知:这七个文件就是「流程的具象化」。 换任何 AI,流程不变——因为流程不在 AI 脑子里,在仓库文件里。这就是 Day 9 runtime-agnostic 在「流程层」的落地。

注:本节只给出七个命令的名称、顺序与通用结构;每个文件的逐字内容请以仓库 .ai/commands/ 实际文件为准(本讲义不逐字引用,细节标「待核验」)。


4. 开发主循环:spec → story → implement → verify

前四个命令构成一次「开发」的主体,和 Week 1 的 SDD 认知严丝合缝:

4.1 spec(定契约)

  • 位置:循环起点。
  • 做什么:把需求写成 spec,落到 .ai/specs/。这正是 Week 1 你练的东西——七要素、可量化验收、WHAT 不写 HOW。
  • 与 Week 1 的接点:你 Day 7 产出的 spec v2(Day5-spec-<功能名>-v2.md)就是「spec 阶段」的现成素材,Day 13 实操会把它带进 .ai/specs/ 跑三态。
  • 触发时机:有需求要开发时(从 BACKLOG.md 取出)。

4.2 story(拆故事)

  • 位置:spec 之后。
  • 做什么:把 spec 拆成可执行的故事/任务单元——对应 Week 1 的「拆任务」环节(Spec-Kit 的 /tasks 干的就是类似的事)。
  • 输入:已定稿的 spec;产物:若干可独立实现、可独立验收的故事条目。

4.3 implement(实现)

  • 位置:故事就绪后。
  • 做什么:按故事实现代码,spec 与代码一起进入提交——这正是 Day 10 你被拦的那件事的正确做法(先有 spec,再有代码提交)。
  • 守门:pre-commit hook 在 feat/*/feature/* 分支检查你碰没碰 .ai/specs/ / .ai/adrs/

4.4 verify(验证)

  • 位置:实现之后、评审之前。
  • 做什么:对照 spec 的验收标准(Given-When-Then)验证实现——跑测试、核对行为,把「做完了」变成「有证据地做完了」。
  • 对应护栏:Hooks 是「提交时自动守门」,verify 是「人/AI 主动对照验收」。

主循环一句话:spec 定契约,story 拆任务,implement 照做,verify 对账。 这四步和 Week 1 的 SDD 完全同构——harness 只是把它们变成了「可反复执行的文件流程」。


5. 收尾与发布:review → release → phase-close

5.1 review(评审)

  • 位置:verify 之后。
  • 做什么:对实现做评审——代码是否满足 spec、有没有越界、spec 有没有被绕过。书面审查、记录结论。
  • 对应 Week 1:Day 5 让你做的「AI 视角反向通读」在这里升级为团队/流程级的 review 环节。

5.2 release(发布)

  • 位置:review 通过后。
  • 做什么:走发布流程——release/vX.Y.Z 分支 → squash merge 到 main → 打 tag vX.Y.Zback-merge 回 develop
  • 版本号:SemVer(主版本.次版本.修订号)。
  • 分支纪律main 只做发布;日常开发从 developtype/short-description 分支,squash merge 回 develop

5.3 phase-close(阶段收尾)

  • 位置:循环终点。
  • 做什么:关闭当前阶段——归档文档、清理分支、确认 backlog 状态、沉淀复盘。让一个循环「有始有终」,下一个循环从干净的状态开始。

收尾三件套一句话:review 把关质量,release 把东西发出去,phase-close 把账记完。 没有 phase-close,循环会越跑越乱——这是「可回退」的前提。


6. 循环与分支 / SemVer 怎么咬合

命令循环不是悬空的流程,它和 Git 分支模型是一套系统:

循环阶段 Git 侧动作
spec / story / implement / verify feat/*(或 feature/*)分支上推进;hook 守门
review review 通过前不合入
release release/vX.Y.Z → squash merge 到 main → tag vX.Y.Z → back-merge develop
phase-close 清理已合并分支、归档产物
  • squash merge:把分支上一串提交压成一个合入 develop/main——历史干净,每个合并点对应一个完整功能。
  • SemVervX.Y.Z——破坏性变更升主版本,新增功能升次版本,修 bug 升修订号。版本号本身就是「变更契约」。
  • main 只发布:保证 main 永远是「可发布状态」,这也是一种守门。

到这里,Day 9 埋的线全接上了:.ai/commands/ 管「流程」,.ai/hooks/ 管「守门」,分支规范管「怎么合」,SemVer 管「怎么标版本」——一个循环走完,开发、验证、发布、归档全链路有文档可查、可回退。


7. 今日实操(约 20 分钟)

7.1 精读一个 commands 文件(10 分钟)

打开测试仓库的 .ai/commands/spec.md(或 verify.md),回答:

  1. 它的 Usage 写了什么场景用?
  2. Inputs 要求哪些前置输入?
  3. Procedure 分几步?
  4. Done criteria 写了几条、分别是什么?

把四段答案记进笔记。如果你读的是 spec.md,会发现它和你 Week 1 学的七要素是同一种东西的「流程化版本」。

7.2 纸上走一遍循环(10 分钟)

选一个你想做的小功能(例如「给测试仓库加一个用户问候接口」),沿七命令在纸上走一遍:

1
2
3
4
5
6
7
spec      → 写清:目标、验收(Given-When-Then)、非目标
story     → 拆成 2–3 条故事
implement → 每条故事一个提交(在 feat/xxx 分支,spec 一起提交)
verify    → 对照验收标准列验证清单
review    → 挑一条你之前代码里最可能被 AI 钻空子的点
release   → 假设版本 v0.1.0,写 release 步骤(分支/tag/back-merge)
phase-close → 列出要归档的文档和要清理的分支

这张纸就是 Day 13 实操的剧本。今天先「纸上走」,Day 13「真跑一遍」。


自测题

  1. 七个命令按顺序写出来。(填空)
  2. 每个 commands 文件的四段结构是什么?各回答什么问题?(简答)
  3. 「让 AI 遵循该文件」是什么意思?为什么这实现了 runtime-agnostic?(简答)
  4. 开发主循环是哪四个命令?收尾是哪三个?(简答)
  5. spec 命令与 Week 1 的什么概念同构?(简答)
  6. story 命令解决的问题是什么?输入是什么?(简答)
  7. release 流程的四个动作是什么?(填空:release/vX.Y.Z__ → tag → __
  8. 判断题:main 分支可以直接做日常开发提交。(判断——正确答案:否,main 只做发布)
  9. 选择题:把一条功能分支的多条提交压成一个合入,叫什么? A. rebase B. squash merge C. cherry-pick D. fast-forward
  10. phase-close 不做的后果可能是什么?(开放性简答)

提示:第 4 题——前四后三;第 7 题——squash merge 到 main、back-merge 回 develop;第 9 题——Day 9/10 都出现过这个词。


延伸阅读

  • sdd-harness 仓库(.ai/commands/ 七个文件的原文在这):https://github.com/iMark21/sdd-harness
  • 《SDD 和 Harness:AI 编程的两大支柱》(SDD 完整闭环图与命令式流程的出处):https://blog.csdn.net/qq_43284469/article/details/164267908
  • 《AI 编程可闭环协作·卷三:Harness 与 SDD》(任务单最少内容、书面审查、合并前自动检查——和 review 环节对应,Week 4 精读):https://juejin.cn/post/7647333934796537919

本工作纸依据《SDD+Harness四周学习计划.md》Day 11 主题编制。整理日期:2026-09-09