第 12 天:对比其他实现——harness-sdd 与 SDD-Agent-Harness

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

Posted by LSG on August 21, 2026

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,用四句话概括(这就是今天的基准):

  1. 载体:仓库里的一组文件——.ai/ 目录(ROUTING/PRODUCT/CONTEXT/BACKLOG/adrs/agents/commands/hooks/specs)+ 根目录 5 行指针文件。
  2. 思想:runtime-agnostic、零依赖(bash + git)——换 AI 只是换指针文件。
  3. 流程:七个命令文件(spec→story→implement→verify→review→release→phase-close),用法是「让 AI 遵循该文件」。
  4. 强制: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 脚本,脚本会自动探测你用的是哪个 CLIclaude-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 理解图」的输入材料之一。


自测题

  1. harness-sdd 的口号是什么?怎么理解?(简答)
  2. harness-sdd 主要跑在哪个 CLI 上?可以平移到哪些?(填空)
  3. harness-sdd 的开场方式叫什么?作用是什么?(简答)
  4. SDD-Agent-Harness 的固定工作流是哪五步?(填空)
  5. SDD-Agent-Harness 的核心目标是什么?(简答)
  6. harness-sdd-template 提供什么?(简答)
  7. 判断题:三个实现都强制要求「改代码必须先写 spec」,强制方式完全相同。(判断——提示:sdd-harness 用 hook,SDD-Agent-Harness 用固定工作流,方式不同)
  8. 选择题:以下哪个实现是「本地 AI 开发 App」? A. sdd-harness B. harness-sdd C. SDD-Agent-Harness D. harness-sdd-template
  9. 从「载体」维度,三个实现分别是什么?(简答)
  10. 一句话:三个实现共享的内核是什么?(简答)

提示:第 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