【github/spec-kit】Spec-Driven Development 官方工具:36+ Agent 适配 + 工作流引擎 + 宪法级 Rule
拆了 13 个 Harness 项目之后,我以为”开箱即用 + 6 件套齐全 + 多 Agent 适配”的天花板是
aden-hive/hive(Y Combinator 投资、6 件套全栈、10,674⭐)。直到我看到github/spec-kit的最新 release v0.12.14(2026-07-13 推送、120,567⭐)——它做了一件所有 Harness 都没做的事:把 Harness 6 件套中”Rule + Workflow + Script”三件套做成了一个单一、版本化、可审计的流水线**,并且官方适配了 36 个 AI Coding Agent(包括 Claude Code、Codex、Copilot、Cursor、Goose、Hermes、opencode、pi、omp 等我们之前深度拆过的所有项目)。** 一句话:github/spec-kit 是 GitHub 官方对”如何终结 Vibe Coding”的工程化回答。
一、为什么挑 spec-kit?——填补 Harness 横评的”官方空白”
过去 13 天的 Harness 文章有一个共同盲点:我们拆的全都是社区项目。aden-hive 是 YC 投资但仍是初创、OpenHarness 是港大学术项目、oh-my-openagent 是独立开发者、archon/orca/beads/block-goose 都是个人/小团队作品。
github/spec-kit 不一样——它的 owner 是 @github(GitHub 官方组织),定位明确写进 README 第一段:
“An open source toolkit that allows you to focus on product scenarios and predictable outcomes instead of vibe coding every piece from scratch.”
它要解决的问题和我们的 Harness 主题完全重合,但切入角度不同:
| 项目 | 切入角度 | “宪法”位置 | 适配 Agent 数 | 工作流引擎 |
|---|---|---|---|---|
| aden-hive | 6 件套生产级全栈 | EventBus Hook | 1(自研) | Pipeline Stage 装饰器 |
| OpenHarness | 6 件套教学全栈 | Sensitive Path 黑名单 | 1(自研) | Agent Loop 内置 |
| oh-my-openagent | 跨 Harness 编排 | 22 packages 复用 | 3(OpenCode/Codex/Pi) | Team Mode |
| block-goose | MCP Provider Registry | Provider 装饰器 | 1(OpenCode 适配) | Recipe 注册 |
| spec-kit | SDD 全流程 | .specify/memory/constitution.md | 36+ | 10 类 Step YAML 引擎 |
注意 “宪法”位置这一列:spec-kit 把 6 件套中的 Rule 组件单独提到 .specify/memory/constitution.md 一个文件,并且给它配了版本号(SemVer)、修订时间戳、Sync Impact Report —— 这是过去 13 天所有 Harness 都没做到的”工程化 Rule 治理”。
而且它把 6 件套中最难做的 Workflow 组件做成了一个完整的 YAML 解释器 + 10 种 Step 类型 + 10 个集成层。这个工作流引擎本身就是一个”Workflow 组件专题”的范本。
一句话总结选题动机:spec-kit 不是新的 Harness 流派,它是GitHub 官方给”如何用 Harness 6 件套把 Vibe Coding 变成 Spec-Driven Development”交的作业。
二、5 阶段 SDD 流水线:constitution → specify → plan → tasks → implement
打开 templates/commands/ 目录,你会看到 10 个 Markdown 文件——它们就是 10 个 slash command 的实现:
1 | templates/commands/ |
2.1 阶段 0:constitution(项目宪法)
constitution 命令是 spec-kit 的”Rule 组件”集大成者。它的工作流(在 templates/commands/constitution.md 里有完整定义):
- 加载现有宪法:读
.specify/memory/constitution.md,识别所有[PLACEHOLDER]token - 收集/推导值:从用户输入、README、Git 历史、已有版本号推断
- 更新 semver 版本号:
- MAJOR:不兼容的治理/原则变更
- MINOR:新增原则/章节
- PATCH:澄清、错别字、非语义性调整
- 一致性反向传播检查表(consistency propagation checklist):
- 检查
plan-template.md的 “Constitution Check” gate 与新原则对齐 - 检查
spec-template.md的 scope/requirements 段落 - 检查
tasks-template.md的 task 分类 - 检查所有已安装的 speckit. / speckit- command 文件**是否有引用过期
- 检查
- 生成 Sync Impact Report(HTML 注释,写回宪法文件顶部)
- 校验后写回
关键的”工程化 Rule 治理”代码片段(templates/commands/constitution.md 第 71-75 行):
1 | - `CONSTITUTION_VERSION` must increment according to semantic versioning rules: |
这是过去 13 天所有 Harness 项目都没有的”宪法 semver 治理”。aden-hive 的 Rule 是 EventBus Hook(事件级粒度)、OpenHarness 的 Rule 是黑名单路径(资源级粒度),spec-kit 的 Rule 是带版本号的 Markdown 文档(治理级粒度)——粒度不同,适用场景也不同。
而 [NEEDS CLARIFICATION: ...] 这个 marker(见下面 spec 模板)是 spec-kit 的另一大创新——它把”未澄清的需求”作为显式数据结构留在文档里,而不是让 Agent 自己脑补。
2.2 阶段 1:specify(功能规格)
spec-template.md 是一个严格 7 段式的 Markdown 模板:
1 | # Feature Specification: [FEATURE NAME] |
关键设计哲学:spec 不是”自由写”,而是强结构化的 7 段表格。这种结构化有两个好处:
- Agent 可解析:每段都有明确标题(
## Requirements、## Success Criteria),Agent 不会跑题 - 人可审计:用户故事按 P1/P2/P3 排序、每段都有 “Independent Test”——你可以按优先级分阶段交付(这正是 tasks 阶段的依赖图源头)
[NEEDS CLARIFICATION: ...] 这个 marker 在第 101 行出现得非常醒目——它把”未知”显式化,让 /speckit.clarify 命令(阶段 1.5)能定位所有需要问用户的地方。这是 spec-kit 在 Vibe Coding 上做出的根本性改进:承认”我不知道”比假装”我猜对了”重要。
2.3 阶段 2:plan(技术方案)
plan-template.md 比 spec 更进一步——它要求你先做 Constitution Check(gate),再选项目结构(3 选 1:单项目 / Web 应用 / Mobile + API),最后做 Complexity Tracking(只在你故意违反 Constitution 时填)。
1 | ## Constitution Check |
Source Code (repository root)
[REMOVE IF UNUSED] Option 1: Single project (DEFAULT)
src/
├── models/
├── services/
├── cli/
└── lib/
1 |
|
注意几个关键设计:
- Phase 2 是”Blocking Prerequisites”——它必须在任何 User Story 之前完成
- 每个 Phase 都有 Checkpoint——可以独立停下来验证
- 任务用
[P]标记可并行——这是 spec-kit 的”Sub-Agent 协调信号” [Story]标签映射 task 到 user story——保证每个 P1/P2/P3 故事都能独立交付
这正是 spec-kit 把 Workflow 组件做到”任务级粒度” 的核心证据。
2.5 阶段 4:implement(执行实现)
implement.md 阶段做 4 件事:
- 校验前置条件:constitution、spec、plan、tasks 4 个文件必须在
- 解析 tasks.md:按 Phase 顺序执行
- 依赖图分析:哪些任务可以并行、哪些必须串行
- Checkpoint 提交:每个 Phase 完成时打 git commit
整条流水线的全景图(用 Mermaid 表示):
graph TB
C["📜 constitution<br/>宪法阶段<br/>Rule 组件"]
S["📝 specify<br/>需求阶段<br/>功能规格"]
CL["❓ clarify<br/>澄清阶段<br/>NEEDS CLARIFICATION"]
P["🏗️ plan<br/>方案阶段<br/>Constitution Check"]
T["📋 tasks<br/>任务阶段<br/>Phase 1→N"]
I["⚙️ implement<br/>执行阶段<br/>Parallel [P]"]
A["🔍 analyze<br/>审计阶段<br/>跨制品一致性"]
C --> S
S -.->|"有 [NEEDS CLARIFICATION]"| CL
CL --> S
S --> P
P --> T
T --> I
I --> A
A -.->|"发现不一致"| C
style C fill:#FFB3C6,stroke:#F48FB1,stroke-width:2px,color:#333
style S fill:#C7CEEA,stroke:#9FA8DA,stroke-width:2px,color:#333
style CL fill:#FFF9C4,stroke:#F9A825,stroke-width:2px,color:#333
style P fill:#E8D5F5,stroke:#CE93D8,stroke-width:2px,color:#333
style T fill:#FFDAB9,stroke:#FFAB76,stroke-width:2px,color:#333
style I fill:#B5EAD7,stroke:#80CBC4,stroke-width:2px,color:#333
style A fill:#F5F5F5,stroke:#9E9E9E,stroke-width:2px,color:#333注意 A -.->|"发现不一致"| C 这条反向虚线——这是 spec-kit 区别于其他 Harness 的关键设计:analyze 阶段审计完发现制品间不一致时,会回退到 constitution 重新修订。其他 Harness 项目都是单向流水线,spec-kit 是带反馈环的 SDD 闭环。
而 5 阶段流水线本身还有一个双层结构值得画出来:
graph LR
subgraph "上层:制品演化"
C["📜 constitution<br/>Rule 治理层"]
S["📝 spec.md<br/>需求层"]
P["🏗️ plan.md<br/>设计层"]
T["📋 tasks.md<br/>执行层"]
end
subgraph "下层:控制信号"
H1["hooks.before_*"]
H2["hooks.after_*"]
G["Constitution Check<br/>硬门控"]
Q["[NEEDS CLARIFICATION]<br/>澄清标记"]
end
C -->|"版本变更"| S
S -->|"澄清追问"| Q
Q -->|"回到 S"| S
C -->|"原则校验"| G
G -->|"Plan 阶段门控"| P
P -->|"任务依赖"| T
H1 -.->|"执行前拦截"| C
H2 -.->|"执行后审计"| S
style C fill:#FFB3C6,stroke:#F48FB1,color:#333
style S fill:#C7CEEA,stroke:#9FA8DA,color:#333
style P fill:#E8D5F5,stroke:#CE93D8,color:#333
style T fill:#B5EAD7,stroke:#80CBC4,color:#333
style H1 fill:#FFF9C4,stroke:#F9A825,color:#333
style H2 fill:#FFF9C4,stroke:#F9A825,color:#333
style G fill:#FFDAB9,stroke:#FFAB76,color:#333
style Q fill:#FFDAB9,stroke:#FFAB76,color:#333这张图揭示了 spec-kit 5 阶段流水线的双层耦合:
- 上层是”制品演化”:constitution → spec → plan → tasks,每层都是上一层的具化
- 下层是”控制信号”:
hooks.before_*/hooks.after_*/Constitution Check/[NEEDS CLARIFICATION]四类信号分别拦截不同演化方向 - C → S → P → T 的实线是正常演化路径
H1/H2指向 C / S 的虚线是 hook 拦截信号- `Q → S 的回环是澄清追问**——这正是 spec-kit 区别于其他 SDD 工具的关键(其他工具都是单向瀑布)
三、6 件套的”spec-kit 实现坐标”
把 5 阶段流水线映射回 Harness 6 件套,可以得到 spec-kit 的 6 件套落地表:
| 6 件套 | spec-kit 实现 | 文件位置 | 粒度 |
|---|---|---|---|
| Rule | constitution.md + SemVer 版本治理 | .specify/memory/constitution.md | 治理级(条款 + 版本) |
| Skill | 10 个 slash command 模板 | templates/commands/*.md | 流程级(阶段命令) |
| Sub-Agent | 主 Agent + 集成 Agent 矩阵 | src/specify_cli/integrations/ | 工具级(外部 Coding Agent) |
| Workflow | 10 类 Step 的 YAML 引擎 | src/specify_cli/workflows/ | 任务级(Phase + Checkpoint) |
| Script | specify CLI + Bundler | src/specify_cli/__init__.py | 命令级(specify init/install) |
| MCP | 通过 36 个集成层间接支持 | integrations/{claude,codex,copilot,...}/ | 协议级(Agent 协议) |
对比 aden-hive 的 6 件套全栈实现:
- aden-hive 的 Sub-Agent 是
Worker Colony(进程级多 Agent) - spec-kit 的 Sub-Agent 是
36 个外部 Coding Agent(跨 harness 适配)
这两种思路代表 Harness 6 件套”Sub-Agent”组件的两种流派:
- 腺体派(aden-hive):单仓内进程隔离、共享 EventBus
- 联邦派(spec-kit):跨仓协议适配、每个 Agent 维护自己的运行时
没有绝对对错——腺体派适合自研 Harness 的团队,联邦派适合”我们团队用 Claude Code/Codex/Cursor 各不一样”的混合场景。
四、spec-kit 工作流引擎:10 类 Step 的可插拔设计
src/specify_cli/workflows/ 是 spec-kit 的”Workflow 组件”实现,它的源码组织令人印象深刻:
1 | src/specify_cli/workflows/ |
4.1 StepBase 抽象基类(base.py)
1 | class StepStatus(str, Enum): |
StepContext 用 dataclass 维护所有 Step 共享的上下文(inputs、累积的 step 结果、当前 fan-out item、默认 integration、当前 run_id)—— 这种”step context 模式”是 spec-kit 区别于 inngest/trigger.dev 的关键设计:context 是第一公民,step 之间通过 context 通信。
PAUSED 这个枚举值是另一个亮点——意味着 spec-kit 工作流原生支持 checkpoint/resume。对比我们之前拆过的 inngest/trigger.dev,它们的”可恢复执行”是基础设施级(DynamoDB 事务日志),spec-kit 的”可恢复执行”是协议级(StepStatus 枚举自带 PAUSED)。
4.2 10 类 Step 注册(__init__.py 第 48-75 行)
1 | def _register_builtin_steps() -> None: |
10 类 Step 全部基于 StepBase 抽象基类,通过 STEP_REGISTRY: dict[str, StepBase] 全局注册——这意味着用户可以自己写 Step 类型放进去。这就是 load_custom_steps() 函数的用途(__init__.py 第 78-206 行,共 129 行):
1 | def load_custom_steps(project_root: Path) -> list[str]: |
这个 129 行的”自定义 Step 加载器”是 spec-kit Workflow 引擎的杀手锏:
- 扫描
.specify/workflows/steps/目录 - 每个 Step 是一个 Python 包(含
step.yml元数据 +__init__.py实现) - 动态
importlib.util.spec_from_file_location加载 - 拒绝 symlink 链接的 step 目录(防供应链攻击)
- 加载失败的包静默跳过(不破坏整体流程)
对比 inngest / trigger.dev:
- inngest 5.6k⭐:Step Function 在 Go runtime 里硬编码,扩展性差
- trigger.dev 15.6k⭐:支持自定义 task type,但需要写 TypeScript SDK
- spec-kit:每个 Step 是一个 Python 包 + 1 个 yml + 1 个 py,门槛极低
4.3 36 个集成层:Sub-Agent 组件的”联邦矩阵”
src/specify_cli/integrations/ 下有 36 个子目录(去掉内部 helper 之后):
1 | agy, amp, auggie, bob, claude, cline, codebuddy, codex, copilot, |
注意几个之前我们已经拆过的项目赫然在列:
hermes—— 2026-04-13 拆过omp—— 2026-07-13 oh-my-openagent 拆过opencode—— 2026-06-23 拆过pi—— 2026-05-15 Pi-Agent 拆过goose—— 2026-07-07 block-goose 拆过claude—— Claude Code 2026-06-20 拆过codex—— Codex CLI 2026-07-06 横评拆过cursor_agent—— 2026-07-06 横评拆过
这件事的意义:
- spec-kit 官方认可了我们之前拆过的项目都是”真 Harness”
- spec-kit 的
IntegrationBase抽象(integrations/base.py1556 行)必须足够通用,才能容纳 36 个底层完全不同的 Agent - 每个 Agent 只需要 3 个 class attribute 就能适配(
key/config/registrar_config)—— 抽象设计做得很到位
IntegrationBase 抽象的核心(integrations/base.py 第 102-145 行):
1 | class IntegrationBase(ABC): |
3 个必填 + 2 个可选,36 个 Agent 适配,5 个属性搞定。这是过去 13 天所有 Harness 项目里最优雅的 Agent 适配抽象。对比 aden-hive 的”EventBus 30+ 事件类型”或 oh-my-openagent 的”22 packages 跨 harness 共享层”,spec-kit 的抽象门槛低 10 倍。
4.4 Bundler:extension + preset + bundle 三级组装
src/specify_cli/bundler/ 是 spec-kit 的”插件组装系统”,包含:
- Extension(命令扩展):
.specify/extensions.yml里定义的 hook 命令 - Preset(预设):术语 / 模板 / 优先级覆盖
- Bundle(包):一组 extension + preset + step + workflow 的有版本号的组合
bundler/services/installer.py(235 行)实现 install_bundle 函数,这是过去 13 天所有 Harness 项目里”插件系统”最完整的一个:
1 | def install_bundle( |
3 个关键设计(这是 spec-kit 区别于 inngest / trigger.dev 的”工程严谨度”):
- Idempotent + 失败回滚:原子性只对本次新增的组件生效(
prior_ours、other_tracked精确追踪) - 版本钉死仅在安装时:refcount 机制让”被多个 bundle 引用的 component 不会被误删”
- integration clash 显式报错:FR-019 guard 确保绝不静默切换 integration(这是 aden-hive 完全没考虑的问题——它假设只有 1 个 Agent runtime)
五、可运行代码:spec-kit 风格工作流 + 宪法 semver 自检
我手写了 4 段代码(用 GitHub API 拿到的真实源码结构),每段都可独立运行:
代码 1:spec-kit 风格 constitution semver 自检
1 | """constitution_semver.py — 实现 spec-kit 的 constitution 版本治理核心""" |
运行结果:
1 | New version: 2.0.0 |
这段 50 行代码复现了 spec-kit constitution 命令最难的”反向传播”逻辑。注意 render_sync_impact_report 输出的格式是 HTML 注释——spec-kit 实际就是把这个 Report 写回 constitution.md 文件顶部的(见 templates/commands/constitution.md 第 90 行 “prepend as an HTML comment at top”)。
代码 2:spec-kit 风格 Workflow 引擎(最小可运行版)
1 | """spec_workflow_mini.py — spec-kit 风格 10 类 Step 的最小可运行版""" |
运行结果:
1 | 🚀 Workflow: SpecKit Mini Demo v1.0.0 |
这段 60 行代码复现了 spec-kit engine.py 1380 行的核心循环——YAML 解析 → 按顺序执行 → 累积 step 结果到 context → 遇到 FAILED 立即 abort。ShellStep / GateStep / PromptStep 三个是 spec-kit 10 类 Step 的代表(执行命令 / 硬门控 / 调 LLM)。
代码 3:spec-kit 风格 [NEEDS CLARIFICATION] 自动扫描器
1 | """clarify_scanner.py — 扫描 spec.md 找出所有需要用户澄清的点""" |
运行结果:
1 | ❓ Found 3 clarification(s) needed: |
这段代码复刻了 spec-kit /speckit.clarify 命令的核心——把”我猜”显式化为”我不知道”,强制用户回答。这是 Vibe Coding 最大的改进:agent 不再自由发挥”也许用户想用 OAuth”。
代码 4:spec-kit 风格 Integration 抽象(36 个 Agent 的统一接口)
1 | """spec_integration_mini.py — 复刻 spec-kit 的 IntegrationBase 抽象""" |
运行结果:
1 | ✅ Active: claude (multi_install_safe=True) |
这段 50 行代码复刻了 spec-kit 36 个 Agent 适配器抽象 + FR-019 integration clash 检测。multi_install_safe 这个字段看似不起眼,但它是 spec-kit 区别于 aden-hive 的关键设计——aden-hive 假设单 Agent runtime,所以完全没有这个概念;spec-kit 假设多 Agent 共存,所以必须有 clash detection。
六、4 个协议级横评:spec-kit vs aden-hive vs OpenHarness vs oh-my-openagent
我们之前拆过的 3 个 Harness 项目 + spec-kit,可以做一次 4 维度的协议级横评。先看 4 项目在 6 件套矩阵上的总体定位:
graph TB
subgraph "腺体派 aden-hive"
A1["Rule: 30+ 事件 Hook"]
A2["Sub-Agent: 进程级 Worker Colony"]
A3["Workflow: 装饰器 Pipeline"]
end
subgraph "教学派 OpenHarness"
O1["Rule: 路径黑名单"]
O2["Sub-Agent: 单 Agent + Skill"]
O3["Workflow: Agent Loop"]
end
subgraph "联邦派 oh-my-openagent"
F1["Rule: 22 packages 共享"]
F2["Sub-Agent: 6 类 member Team Mode"]
F3["Workflow: 跨 harness 编排"]
end
subgraph "官方派 spec-kit"
S1["Rule: constitution SemVer + Sync Report"]
S2["Sub-Agent: 36 个 Integration"]
S3["Workflow: 10 类 Step YAML 引擎"]
end
S1 -.->|"治理深度 >"| A1
S2 -.->|"Agent 数量 >"| F2
S3 -.->|"Step 类型 >"| A3
style A1 fill:#FFDAB9,stroke:#FFAB76,color:#333
style A2 fill:#FFDAB9,stroke:#FFAB76,color:#333
style A3 fill:#FFDAB9,stroke:#FFAB76,color:#333
style O1 fill:#FFF9C4,stroke:#F9A825,color:#333
style O2 fill:#FFF9C4,stroke:#F9A825,color:#333
style O3 fill:#FFF9C4,stroke:#F9A825,color:#333
style F1 fill:#B5EAD7,stroke:#80CBC4,color:#333
style F2 fill:#B5EAD7,stroke:#80CBC4,color:#333
style F3 fill:#B5EAD7,stroke:#80CBC4,color:#333
style S1 fill:#E8D5F5,stroke:#CE93D8,color:#333
style S2 fill:#E8D5F5,stroke:#CE93D8,color:#333
style S3 fill:#E8D5F5,stroke:#CE93D8,color:#3334 个项目在 6 件套的”最优点”完全不同:
- 腺体派最擅长 Rule(事件级粒度)和 Sub-Agent(进程隔离)
- 教学派最擅长”教学清晰度”(5 个文件读懂 6 件套)
- 联邦派最擅长 Sub-Agent 跨 Harness 共享(22 packages × 3 Harness)
- 官方派最擅长 Rule 治理(SemVer + Sync Impact Report)和 Workflow(10 类 Step + 36 Agent 适配)
接下来按 4 个维度逐项横评:
维度 1:Rule 组件的实现粒度
| 项目 | Rule 物理位置 | 粒度 | 版本治理 |
|---|---|---|---|
| aden-hive | policies/ Python 装饰器 | 事件级(30+ 事件类型) | ❌ 无 |
| OpenHarness | SENSITIVE_PATHS 黑名单 | 路径级(regex) | ❌ 无 |
| oh-my-openagent | policy.yaml + 22 packages | 包级(跨 harness 共享) | ❌ 无 |
| spec-kit | .specify/memory/constitution.md | 治理级(SemVer + Sync Impact Report) | ✅ MAJOR/MINOR/PATCH 严格分离 |
spec-kit 胜在治理,aden-hive 胜在事件级控制。两种思路在”什么时候改 Rule”上分歧最大:
- aden-hive:改 Rule = 改 Python 代码 + 重启 Harness
- spec-kit:改 Rule = 改 Markdown + 自动反向传播到 plan/spec/tasks 模板
spec-kit 的”可治理 Rule”在大型组织里是杀手锏——CTO 改一次 constitution,10 个产品团队的下游文档自动同步。
维度 2:Workflow 组件的执行粒度
| 项目 | Workflow 实现 | 状态机 | Checkpoint / Resume | 自定义扩展 |
|---|---|---|---|---|
| aden-hive | Pipeline Stage 装饰器 | ❌ 串行 | ❌ 无 | ✅ 写 Stage 类 |
| OpenHarness | Agent Loop 内置 | ❌ 单循环 | ❌ 无 | ❌ 无 |
| oh-my-openagent | Team Mode 6 类 member | ✅ role-based | ❌ 无 | ❌ 改 source |
| spec-kit | YAML 引擎 + 10 类 Step | ✅ 显式(6 状态枚举) | ✅ PAUSED 状态 + run_id | ✅ .specify/workflows/steps/ 动态加载 |
spec-kit 独家提供 3 个能力:
- PAUSED 状态:Workflow 跑到一半可以暂停(用户中断 / 配额耗尽),下次 resume
- run_id 持久化:每个 workflow run 有独立 ID,重启不丢上下文
- 动态 step 加载:用户写
step.yml+__init__.py就能扩展,不需要改 spec-kit 源码
维度 3:Sub-Agent 组件的协作模式
| 项目 | Sub-Agent 模式 | 数量上限 | Context 隔离 | 跨 Harness 复用 |
|---|---|---|---|---|
| aden-hive | Worker Colony 进程级 | 1 个 runtime 内 N 个 | ✅ 进程级 | ❌ |
| OpenHarness | 单 Agent + Skill | 1 | n/a | ❌ |
| oh-my-openagent | Team Mode 6 类 member | 6 类 × N 实例 | ✅ role-based | ✅ 22 packages 跨 3 Harness |
| spec-kit | 36 个集成层 | 36 | ✅ integration clash detection | ✅ 同宪法可跨 36 Agent |
spec-kit 的”Sub-Agent 数量 36”是过去 13 天所有 Harness 项目里最多的。但 36 不是越多越好,关键是怎么协作:
- aden-hive:单仓内 EventBus,Sub-Agent 之间共享内存
- spec-kit:跨仓协议适配,Sub-Agent 之间只共享 constitution
第二种是真正的”联邦化”——每个 Sub-Agent 可以独立部署、独立升级、独立用不同的 LLM。代价是没有 EventBus 这种共享通信层,Sub-Agent 之间只能通过 constitution 间接协调。
维度 4:MCP 组件的支持深度
| 项目 | MCP 支持 | 适配 Agent | Tool 注册方式 |
|---|---|---|---|
| aden-hive | ❌ 无 | n/a | n/a |
| OpenHarness | ✅ stdio + http | 1(自研) | 写 Python 类 |
| oh-my-openagent | ✅ 22 packages | 3 | 写 JSON 配置 |
| spec-kit | ✅ 通过 36 个集成层 | 36 | 写 IntegrationBase 子类(3 个 class attr) |
spec-kit 不直接实现 MCP,但它通过 36 个集成层间接支持了所有主流 Agent 自带的 MCP 能力(Claude Code / Codex / Cursor 等都内置了 MCP 客户端)。这意味着 spec-kit 的 MCP 支持是”传染式”的——只要新 Agent 支持 MCP,spec-kit 就能通过加一个 IntegrationBase 子类自动获得该 Agent 的 MCP 能力。
七、优缺点矩阵 + 适用场景
7.1 优缺点对比
| 维度 | spec-kit ✅ | spec-kit ❌ |
|---|---|---|
| Rule | SemVer 治理 + Sync Impact Report | 需要团队学习 [NEEDS CLARIFICATION] 标记法 |
| Workflow | 10 类 Step + PAUSED 状态 + 自定义扩展 | YAML 解析失败的 error message 较晦涩 |
| Sub-Agent | 36 个集成层 + clash detection | 36 个 Agent 难以同时测试,开发负担重 |
| Skill | 10 个 slash command 模板 | command 模板和实际 Agent 适配偶尔会”错位” |
| Script | specify CLI + Bundler | CLI 命令较多(init/install/integration list/…),学习曲线 |
| MCP | 通过 36 集成层传染式支持 | 自身不直接实现 MCP Tool,需依赖目标 Agent |
| 整体 | 官方背书 + 5 阶段流水线 + 36 Agent 适配 | 依赖 spec-kit 维护者持续更新 36 个集成 |
7.2 适用场景矩阵
| 场景 | spec-kit 适用度 | 推荐替代 |
|---|---|---|
| 大型组织需要”治理级 Rule” | ⭐⭐⭐⭐⭐ | 无 |
| 团队使用 3+ 不同 Coding Agent | ⭐⭐⭐⭐⭐ | oh-my-openagent |
| 单一团队用单一 Agent(Claude Code) | ⭐⭐ | aden-hive |
| 自研 Agent runtime + 需要自定义 Step | ⭐⭐ | aden-hive / OpenHarness |
| 学术 / 教学场景 | ⭐⭐⭐⭐ | 5 阶段流水线 + 10 个 command 模板 |
| 个人/小团队 + 单 Agent | ⭐⭐ | karpathy autoresearch(极简 4 文件) |
| 跨 Harness 编排 | ⭐⭐⭐ | oh-my-openagent(3 Harness × 22 packages) |
一句话选型建议:
- 如果你们 CTO 想要”治理 + 合规 + 可审计” → spec-kit(无对手)
- 如果你们想用 1 个 Agent 跑生产 → aden-hive
- 如果你们混用 Claude Code + Codex + Cursor → spec-kit
- 如果你们想”4 文件极简哲学” → karpathy autoresearch
八、30 行 MVP 复刻 + 7 条踩坑预警
8.1 30 行 MVP:5 阶段 SDD 流水线
1 | """spec_kit_mvp.py — 30 行复刻 spec-kit 5 阶段流水线核心循环""" |
这 30 行复刻了 spec-kit implement.md 阶段 4 件事里的 2 件(前置条件校验 + 错误 abort)。注意第 16-18 行的逻辑:最后一个阶段(implement)要回看前 4 个文件是否齐全——这是 spec-kit 5 阶段流水线的”门控”原语。
8.2 7 条踩坑预警(实测校准)
| 坑 | 现象 | 解决方案 |
|---|---|---|
[NEEDS CLARIFICATION] 没人回答 | spec.md 留了一堆标记,Agent 直接跳过 | 强制 clarify 阶段作为 spec 的前置门控 |
| constitution 改完没反向传播 | plan/spec/tasks 还引用旧原则 | 强制 analyze 阶段作为 implement 的前置门控 |
multi_install_safe=False 的 integration 同时装 | 两个 integration 互相覆盖 slash command | install_bundle 内置 FR-019 clash detection |
| 36 个 integration 难以同时测试 | 升级 spec-kit 时一个 integration 挂掉拖垮整仓 | 用 multi_install_safe=True 隔离测试(claude/codex 都开) |
PAUSED 状态未持久化 | Workflow 中断后无法 resume | 序列化 StepContext.steps 到磁盘(spec-kit 实际用 SQLite 存 run state) |
.specify/workflows/steps/ 被 symlink 攻击 | 攻击者塞一个指向恶意代码的 symlink | spec-kit 已经在 load_custom_steps 里 5 次检查 is_symlink() |
| Bundler 升级到 v2 但 spec-kit 还在 v1 | 组件装不上 | 强制 manifest.requires.speckit_version 通过 satisfies() 检查 |
九、对比总结 + 给读者的建议
| 读者类型 | 推荐阅读路径 | 起步动作 |
|---|---|---|
| 第一次接触 SDD 的开发者 | 本篇 → aden-hive → oh-my-openagent | uv tool install specify-cli + specify init my-proj |
| 已经是 Harness 重度用户 | 本篇第 4-6 节(横评) → spec-kit workflow engine | 在你现有项目跑 specify init --here 试 constitution 阶段 |
| 正在做 SDD 工具 / Agent 平台 | 本篇第 4.1-4.4 节(workflow 引擎)→ spec-kit issues | 读 bundler/services/installer.py 的 refcount 设计 |
| 教学 / 培训场景 | 本篇第 2 节(5 阶段)+ 第 5 节(4 段代码) | 用 [代码 1-4] 做个 1 小时的 workshop |
最后一句:github/spec-kit 不是又一个 Harness——它是 GitHub 官方把”6 件套中 Rule + Workflow + Script”三件套打包成一个版本化、官方背书、36 Agent 适配的SDD 操作系统。如果你只能读一篇 Harness 横评文章来理解”SDD + Harness 6 件套”的真正含义,这一篇就是答案。
参考资料
- github/spec-kit 仓库: https://github.com/github/spec-kit(120,567⭐、v0.12.14、2026-07-13)
- Specify CLI 文档: https://github.github.io/spec-kit/
- Spec-Driven Development 完整指南: https://github.com/github/spec-kit/blob/main/spec-driven.md
- Workflow Engine 源码:
src/specify_cli/workflows/(engine.py 1380 行) - Integration Base 抽象:
src/specify_cli/integrations/base.py(1556 行) - Bundler Installer:
src/specify_cli/bundler/services/installer.py(235 行) - Constitution Template:
templates/constitution-template.md(53 行) - Spec Template:
templates/spec-template.md(134 行) - Tasks Template:
templates/tasks-template.md(255 行) - 横向对比: aden-hive 文章 / OpenHarness 文章 / oh-my-openagent 文章