SDD + Harness 四周学习计划 · Week 2 · Day 12(全计划第 12 课)
今日主题:对比其他实现:harness-sdd(可移植多 CLI)、SDD-Agent-Harness(Spec→Plan→Build→Verify→Report)
建议用时:60–90 分钟 | 前置:Day 9–11 的 sdd-harness 精读与实操(今天的对比基准)
输出物:一张三方对比表 + 一句话选型结论(什么场景选哪个)
0. 一句话剧透
你已经亲手装过、被拦过 sdd-harness 了——它是「零依赖、仓库即 harness」的代表。今天把它放到坐标系里,看另外两个实现:harness-sdd(可移植多 CLI 的 agent harness)和 SDD-Agent-Harness(一个本地 AI 开发 App,固定工作流 Spec→Plan→Build→Verify→Report)。
三个实现解决同一个问题——让 AI 开发可审查、可验证、可回退——但「载体」完全不同:一个是仓库里的文件(sdd-harness),一个是可平移的模板+引导(harness-sdd),一个是本地应用(SDD-Agent-Harness)。看懂三者的差异,你就看懂了 harness 的「形态光谱」。
对比方法提醒:今天是「以 sdd-harness 为基准」的横向研究,不是零基础介绍。凡是 Day 9–11 讲过的概念(.ai/、commands、hooks、runtime-agnostic)直接拿来用。
1. 今日目标(学完你能做到)
- 能说清 harness-sdd 的定位:可移植 agent harness,主要跑在 Claude Code,可平移到其他 CLI
- 能解释 harness-sdd 的口号 “model is the engine, harness is the chassis”
- 能说清 SDD-Agent-Harness 的固定工作流 Spec→Plan→Build→Verify→Report,以及它「留下文档与证据」的目标
- 能从「载体 / 工作流 / 强制手段 / 适用场景」四个维度做三方对比
- 完成实操:填选型结论(我的场景 → 选哪个 → 为什么)
对应计划 Day 12 主题:对比其他实现。对比不是为了分输赢,是为了知道「换一种实现时,哪些是变的、哪些是不变的」。
2. 学习动线(建议时间分配)
| 步骤 | 内容 | 用时 |
|---|---|---|
| 1 | 精读「3」:先钉住 sdd-harness 的基准坐标 | 10 分钟 |
| 2 | 精读「4」:harness-sdd(+ 模板 harness-sdd-template) | 20 分钟 |
| 3 | 精读「5」:SDD-Agent-Harness | 15 分钟 |
| 4 | 精读「6」:三方对比表 + 选型逻辑 | 15 分钟 |
| 5 | 实操「7」:填选型结论 | 10–15 分钟 |
| 6 | 自测「8」+ 打卡 | 10 分钟 |
3. 对比基准:先把 sdd-harness 的坐标钉住
Day 9–11 你学到的 sdd-harness,用四句话概括(这就是今天的基准):
- 载体:仓库里的一组文件——
.ai/目录(ROUTING/PRODUCT/CONTEXT/BACKLOG/adrs/agents/commands/hooks/specs)+ 根目录 5 行指针文件。 - 思想:runtime-agnostic、零依赖(bash + git)——换 AI 只是换指针文件。
- 流程:七个命令文件(spec→story→implement→verify→review→release→phase-close),用法是「让 AI 遵循该文件」。
- 强制:pre-commit hook 守门(feat/feature 分支改代码不碰 spec/ADR → 拦截;chore/docs/fix/hotfix 豁免;SH_SDD_SKIP 显式例外)。
记住这四个维度:载体、思想、流程、强制。下面两个实现都用这四把尺子量。
4. harness-sdd:可移植的 agent harness
仓库:github.com/araozmd/harness-sdd。核验要点:
定位:一个可移植的 agent harness——主要跑在 Claude Code 上,但设计上可以平移到 Codex / Gemini CLI / OpenCode / Antigravity 等其他 CLI 工具。
口号:”model is the engine, harness is the chassis”——模型是引擎,harness 是底盘。引擎(AI 模型)可以换,底盘(harness)是仓库里的文件,跟着仓库走、不跟着工具走。这句话和 sdd-harness 的 runtime-agnostic 是同一个思想的不同表述:harness 只是仓库里的文件。
开场方式:以交互式 Inception(intake)开场收集需求——不是直接让 AI 猜需求,而是通过一轮结构化问答把需求「问」出来,再进入后续流程。
配套模板:github.com/marcmassa/harness-sdd-template——把模板复制进你的仓库,外加一个 .agents/bootstrap.sh 脚本,脚本会自动探测你用的是哪个 CLI(claude-code / opencode / gemini-cli 等),按检测到的运行时做引导。
和 sdd-harness 的第一处关键差异:harness-sdd 明确围绕「某个具体 CLI(Claude Code)+ 可平移」设计,而 sdd-harness 是「完全不假设运行时、只留指针」。两者都认同「harness 是仓库里的文件」,但落地的「入口设计」不同。
5. SDD-Agent-Harness:Codex-like 的本地 AI 开发 App
仓库:github.com/LeoninCS/SDD-Agent-Harness。核验要点:
定位:一个 Codex-like 的本地 AI 开发 App——它不只是「仓库里的一组文件」,而是一个本地运行的应用程序。
固定工作流:Spec → Plan → Build → Verify → Report。一次开发被切成五个固定阶段:
| 阶段 | 作用 |
|---|---|
| Spec | 定义要做什么(规格/契约) |
| Plan | 规划怎么做(方案/步骤) |
| Build | 实现 |
| Verify | 验证(对照 spec) |
| Report | 汇报(产出文档/证据) |
核心目标:让一次开发留下可审查、可验证、可回退的文档与证据——和 SDD 的「产物可审查、流程可回退」完全一致,只是它把这套流程固化在一个 App 里。
和 sdd-harness 的第二处关键差异:载体不同。sdd-harness 是「文件进仓库」,SDD-Agent-Harness 是「本地 App 承载流程」;sdd-harness 用 hook 强制,SDD-Agent-Harness 用「固定五阶段工作流」把 AI 框住。
6. 三方对比表
| 维度 | sdd-harness | harness-sdd(+ template) | SDD-Agent-Harness |
|---|---|---|---|
| 载体 | 仓库内 .ai/ 文件 |
仓库内文件 + .agents/bootstrap.sh 模板 |
本地 AI 开发 App |
| 运行时 | runtime-agnostic,零依赖(bash+git) | 主要 Claude Code,可平移 Codex/Gemini CLI/OpenCode/Antigravity | Codex-like 本地 App |
| 开场 | ROUTING.md 唯一入口引导 | 交互式 Inception(intake)收集需求 | 固定工作流从 Spec 起步 |
| 工作流 | 七命令:spec→story→implement→verify→review→release→phase-close | 以 harness 文件引导(细节以仓库为准) | 固定五阶段:Spec→Plan→Build→Verify→Report |
| 强制手段 | pre-commit hook 守门(改代码不写 spec 被拦) | 待核验(以仓库 README 为准) | 固定工作流框定 + 文档/证据留痕 |
| 核心口号/目标 | 换 AI 只换指针文件 | model is the engine, harness is the chassis | 一次开发留下可审查、可验证、可回退的文档与证据 |
选型逻辑(供参考,不是唯一答案):
- 想要零依赖、换 AI 自由 → sdd-harness(你已经在用了)。
- 主力是 Claude Code、想要现成的交互式 intake 引导 → harness-sdd + template。
- 想要一个独立 App 把整个流程包起来(不太想自己拼文件)→ SDD-Agent-Harness。
三条路线共享同一个内核:SDD 管「做什么」(spec/契约),harness 管「怎么做对」(流程/守门/证据)。变的只是「形态」:文件、模板还是 App。
7. 今日实操(约 15 分钟):填选型结论
1
2
3
4
5
6
7
8
9
10
我的场景(一两句,比如"个人项目,主力 Claude Code,偶尔换 Codex"):
______
我的选择(可多选):□ 继续用 sdd-harness □ 试 harness-sdd □ 试 SDD-Agent-Harness
理由(必须写,不能只打勾):
______
对比中我学到的一个"不变"(三个实现共同的内核):
______
选型结论没有标准答案。Day 14 周复盘时,这张纸是你「Harness 理解图」的输入材料之一。
自测题
- harness-sdd 的口号是什么?怎么理解?(简答)
- harness-sdd 主要跑在哪个 CLI 上?可以平移到哪些?(填空)
- harness-sdd 的开场方式叫什么?作用是什么?(简答)
- SDD-Agent-Harness 的固定工作流是哪五步?(填空)
- SDD-Agent-Harness 的核心目标是什么?(简答)
- harness-sdd-template 提供什么?(简答)
- 判断题:三个实现都强制要求「改代码必须先写 spec」,强制方式完全相同。(判断——提示:sdd-harness 用 hook,SDD-Agent-Harness 用固定工作流,方式不同)
- 选择题:以下哪个实现是「本地 AI 开发 App」? A. sdd-harness B. harness-sdd C. SDD-Agent-Harness D. harness-sdd-template
- 从「载体」维度,三个实现分别是什么?(简答)
- 一句话:三个实现共享的内核是什么?(简答)
提示:第 6 题——把模板复制进仓库 +
.agents/bootstrap.sh自动探测 CLI;第 10 题——SDD 管做什么、harness 管怎么做对,产物可审查可回退。
延伸阅读
- sdd-harness GitHub(今天对比的基准实现):https://github.com/iMark21/sdd-harness
- harness-sdd GitHub(可移植 agent harness):https://github.com/araozmd/harness-sdd
- SDD-Agent-Harness GitHub(固定工作流本地 App):https://github.com/LeoninCS/SDD-Agent-Harness
- harness-sdd-template GitHub(模板 + bootstrap 探测脚本):https://github.com/marcmassa/harness-sdd-template
本工作纸依据《SDD+Harness四周学习计划.md》Day 12 主题编制。整理日期:2026-09-09