SDD 规约驱动开发入门:从概念到在 Claude Code 和 Hermes Agent 中的落地
发布于 2026-07-12 02:56
SDD 规约驱动开发入门:从概念到在 Claude Code 和 Hermes Agent 中的落地
什么是 SDD
SDD(Specification-Driven Development,规约驱动开发)是一种以规范文档为"唯一事实来源"(Single Source of Truth)的开发方法论。核心理念是:规范不服务于代码,代码服务于规范。
传统开发中,代码是最终产出,文档是辅助材料,代码写出来后文档往往迅速过时。SDD 将这一关系颠倒过来:规范(Spec)是权威来源,代码只是规范的外在表现。维护软件就是演进规范,调试就是修复生成了错误代码的规范。
SDD 与 Vibe Coding(随兴编码)的直接区别:
- Vibe Coding:想到什么就让 AI 写什么,靠感觉
- SDD:先写清楚"要做什么",再让 AI 按规范执行
SDD 的四阶段工作流
Specify(写规范) -> Plan(做计划) -> Tasks(列任务) -> Implement(实现)
- Specify:用自然语言写需求、验收标准、边界条件、技术约束
- Plan:设计技术方案、选型、架构决策
- Tasks:拆解为具体可执行的任务列表
- Implement:AI 按规范逐步生成代码
四个阶段可以随时迭代,不是刚性串行的。需求变了就改规范,然后重新 apply。
当前主流 SDD 工具
OpenSpec(Fission AI)
最通用的 SDD 框架,门槛最低。
- 安装:
npm install -g @fission-ai/openspec@latest - 初始化:
cd project && openspec init - 在项目目录创建 openspec/specs/(规范库)和 openspec/changes/(变更目录)
- 通过斜杠命令驱动:
/opsx:propose->/opsx:apply->/opsx:archive - 原生支持 Claude Code、Cursor、Codex CLI 等 20+ AI 编程工具
- 不依赖 MCP 服务器,不需要 API key
Spec-kit(微软)
更注重结构化约束的 SDD 工具。
- 项目宪法(constitution.md)机制:一组不可变的架构原则,约束所有技术决策
- 预实现质量门禁(Phase -1 Gates)
- 支持 Claude Code、GitHub Copilot、Cursor 等 8+ 工具
- 适合架构一致性要求高的项目
Superpowers(开源)
自动触发的工程行为约束框架。
- 无需手动调用命令,AI 自动判断并应用对应技能
- 内置 TDD 支持(红绿重构循环)
- 支持子智能体并行执行独立任务
- 主要支持 Claude Code 和 Cursor
在 Claude Code 中落地 SDD
最直接,因为 OpenSpec 原生支持 Claude Code。
终端:npm install -g @fission-ai/openspec@latest
终端:cd your-project && openspec init
AI对话:/opsx:explore
AI对话:/opsx:propose add-dark-mode
AI对话:/opsx:apply
AI对话:/opsx:archive
OpenSpec 在初始化时生成 CLAUDE.md,告诉 Claude Code 如何处理 /opsx: 斜杠命令。不需要额外配置 MCP 或 API key。
在 Hermes Agent 中落地 SDD
Hermes Agent 没有斜杠命令机制,但可以通过三种方式实现:
方式一:Skills 自定义(推荐,零安装)
在 .hermes/skills/ 目录下创建一个 SDD 技能,定义完整的规范驱动工作流。Agent 在开发时自动按规范执行:先读 specs/ 目录下的 spec.md,理解需求后再实现。
方式二:MCP 工具
将 OpenSpec 或 SDD 工作流封装为 MCP 工具,在 Hermes 的 config.yaml 中配置,Agent 通过工具调用执行 SDD 流程。
方式三:Kanban + delegate_task
利用 Hermes 的 Kanban 编排能力和子任务派发(delegate_task),将 SDD 流程拆解为分析 -> 计划 -> 实现 -> 验证四个阶段,每个阶段由子 Agent 独立完成。
OpenSpec 包含什么
1. 命令行工具
| 命令 | 用途 |
|---|---|
openspec init |
在项目中初始化 SDD 工作流 |
openspec update |
更新项目中的 command 文件 |
openspec config profile |
切换工作流(标准/扩展) |
2. 项目目录结构
openspec/
specs/ # 规范库,存放所有功能的 spec.md
feature-a/
spec.md
changes/ # 变更目录,记录每次修改
feature-a-v2/
spec.md
plan.md
tasks.md
specs/ 和 changes/ 双区域设计:changes/ 是工作区,变更归档后合并到 specs/。
3. 斜杠命令系统
| 命令 | 功能 |
|---|---|
/opsx:explore |
与 AI 讨论需求,不产生工件 |
/opsx:propose |
AI 输出 spec + plan + tasks |
/opsx:apply |
AI 按规范生成代码 |
/opsx:archive |
更新规范库,归档变更 |
4. 规范文件格式
自由格式,不限模板。常见内容:需求描述、验收标准(GIVEN/WHEN/THEN 场景)、技术约束、边界条件。
5. 原生支持 20+ 种 AI 编程工具
包括 Claude Code、Cursor、Codex CLI、Aider 等。
OpenSpec 不做的事
- 不接 MCP 服务器,不需要 API key
- 不替换 Git 工作流
- 不强制定制模板,自然语言即可
- 不是 CI/CD 工具
最小落地建议
从最简单的方式开始:
- 在项目目录创建一个 specs/ 目录
- 为当前功能写一份 spec.md,包含需求、验收标准、技术约束
- 开发前先确认 spec,然后让 AI 按 spec 实现
- 新功能或需求变更时,先改 spec 再改代码
这个流程不需要任何工具,但已经体现了 SDD 的核心价值:规范是源头,代码是结果。
如果你觉得本文有用,请点赞,收藏,转发
你有什么问题,请留言,我来帮你解答。
← 返回博客列表