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(实现)
  1. Specify:用自然语言写需求、验收标准、边界条件、技术约束
  2. Plan:设计技术方案、选型、架构决策
  3. Tasks:拆解为具体可执行的任务列表
  4. 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 工具

最小落地建议

从最简单的方式开始:

  1. 在项目目录创建一个 specs/ 目录
  2. 为当前功能写一份 spec.md,包含需求、验收标准、技术约束
  3. 开发前先确认 spec,然后让 AI 按 spec 实现
  4. 新功能或需求变更时,先改 spec 再改代码

这个流程不需要任何工具,但已经体现了 SDD 的核心价值:规范是源头,代码是结果。


如果你觉得本文有用,请点赞,收藏,转发

你有什么问题,请留言,我来帮你解答。


← 返回博客列表