为什么 SDD 突然火了
2025 年下半年,GitHub 上同时冒出了两个热门项目,都主打同一个概念——SDD(Specification-Driven Development,规格驱动开发)。
| 项目 | Stars | 出品方 | 创建时间 |
|---|---|---|---|
| spec-kit | 87,549 | GitHub 官方 | 2025-08 |
| OpenSpec | 39,543 | Fission AI | 2025-08 |
SDD 这个概念早在 2010 年前后就有人提过,但始终不温不火。它之所以在 2025 年爆发,根本原因是 AI 编码助手的成熟度达到了实用门槛。以前写规格是为了让人理解需求,现在写规格是为了让 AI 理解需求并生成代码。这个转变让 SDD 从锦上添花变成了必备技能。
方法论的演进脉络
软件开发方法论的演进方向是一致的:把质量保障的关口不断前移。传统开发流程是需求、编码、测试、部署,问题往往在测试甚至部署后才暴露。TDD 在 2003 年提出先写测试再写编码,确保代码可测试。BDD 在 2006 年进一步把起点推到行为描述,用自然语言定义系统应该有什么行为。SDD 则把起点推到了规格层面:先用结构化文档定义清楚要做什么,再让 AI 按规格生成代码。
| 方法论 | 起点 | 核心思路 |
|---|---|---|
| 传统开发 | 编码 | 边写边调试,问题在测试阶段才暴露 |
| TDD | 测试 | 先写测试用例,确保代码可验证 |
| BDD | 行为描述 | 用自然语言描述系统行为,再推导测试和代码 |
| SDD | 规格 | 先写完整规格,让 AI 按规格生成代码 |
SDD 过去不火的原因
SDD 的核心思想是先写规格再写代码,逻辑上很合理,但过去有三个实际障碍阻碍了它的普及。
第一,人写代码比写规格快。资深程序员脑子里有现成的代码模板,直接动手比先写文档效率高得多。第二,规格容易和代码脱节。代码改了,规格忘了同步,最后规格沦为摆设。第三,缺乏工具支撑。规格只是 Markdown 文档,既无法执行也无法验证代码是否符合规格。
这三个问题在 2024-2025 年间被 AI 编码工具逐步解决了。AI 能根据规格自动生成代码,能根据规格变更自动调整实现,也能自动检验代码与规格的一致性。
SDD 爆发的三个条件
| 条件 | 具体变化 |
|---|---|
| AI 编码工具成熟 | Claude Code、Cursor、Copilot 能输出生产级代码 |
| 开发者角色转变 | 从代码编写者变成规格设计者加代码审查者 |
| 工具链完善 | spec-kit 和 OpenSpec 为规格提供了完整的执行框架 |
行业预测到 2026 年,80% 的开发者将常态化使用 AI 编码工具,花在规格设计和架构上的时间会超过写代码本身。
SDD 的核心定义
SDD 的工作方式是先用结构化规格精确描述要做什么,再让 AI 照着规格生成代码,最后验证代码是否符合规格。它的几个核心能力包括:
| 能力 | 说明 |
|---|---|
| 协作澄清 | 开发者有时自己也不清楚需求,AI 协助完成问题定义和方案探索,这是 SDD 最被低估的能力 |
| 规格即契约 | 规格不是参考文档,而是人机之间的契约,AI 必须严格按规格实现 |
| 迭代友好 | 规格可以随时更新,AI 会同步调整代码,不是写完就扔 |
| 验证闭环 | 有工具能验证代码是否符合规格,偏离时自动提醒 |
| 追溯性强 | 每一行代码都能追溯到对应的规格条款 |
协作澄清:最被低估的能力
很多人以为 SDD 的流程是开发者先写清楚规格再让 AI 照做。但现实情况是开发者往往也不清楚自己要什么。传统模式假设开发者想清楚了再写规格再让 AI 实现,但 SDD 的澄清模式更贴近真实场景:开发者有一个模糊的想法,AI 通过提问协助澄清,双方共同定义问题,探索可能的方案,最后形成规格让 AI 去实现。
类比来说,传统模式像你拿着一份完整的菜单去餐厅让厨师照做,澄清模式像你说想吃点清淡的,然后厨师和你讨论是汤还是蒸菜、有什么忌口,最后一起确定菜单。/speckit.clarify 和 /opsx:explore 这类命令的价值就在这里:AI 不是被动执行者,而是主动的需求澄清伙伴。
澄清过程本身就是在定义问题。很多 Bug 的根因不是代码写错了,而是需求本身就没想清楚。
规格的文件结构
一个完整的 SDD 规格通常包含四个部分。以 OpenSpec 为例,一个变更的目录结构如下:
1 | openspec/changes/add-dark-mode/ |
proposal 回答为什么做和做了影响什么,specs 回答具体要什么功能和使用场景,design 回答技术实现方案,tasks 把实施拆成可追踪的步骤。
SDD 与 TDD、BDD 的关系
SDD 不是替代 TDD 和 BDD,而是在它们之上增加了一层规格约束。SDD 在最上层定义要做什么,BDD 在中间层定义系统应该有什么行为,TDD 在底层定义怎么验证正确性,最后的代码实现受这三层约束。AI 不是自由发挥,而是在规格、行为和测试三重约束下生成代码。
| 层次 | 关注点 | 回答的问题 |
|---|---|---|
| SDD | 规格 | 要做什么 |
| BDD | 行为 | 系统应该有什么行为 |
| TDD | 测试 | 怎么验证正确性 |
| 实现 | 代码 | AI 在上述三层约束下生成 |
有 SDD 和没有 SDD 的工作流对比
没有 SDD 时,需求和 AI 在对话中不断补充,来回修改效率很低。
1 | 你:帮我加个深色模式 |
有 SDD 时,先对齐要做什么,再一次性实现,减少了来回修改的开销。
1 | 你:/opsx:propose "添加深色模式" |
支持的 Code Agent
| Code Agent | spec-kit 支持 | OpenSpec 支持 |
|---|---|---|
| Claude Code | --ai claude |
/opsx:* 命令 |
| Cursor | slash commands | slash commands |
| GitHub Copilot CLI | 原生支持 | skills 模式 |
| Codex CLI | skills 模式 | skills 模式 |
| Windsurf | 支持 | 支持 |
问题澄清模式
前面讲的工作流都有一个前提:开发者知道要做什么。但实际工作中经常遇到模糊需求,比如想给博客加个评论功能但不知道怎么设计,或者用户反馈搜索太慢但不清楚具体慢在哪里。这时候澄清模式就派上用场了。
| 澄清前 | 澄清后 |
|---|---|
| 我想加评论功能(模糊) | 评论需要登录、支持楼中楼最多 3 层、可编辑删除、需管理员审核(清晰) |
| 搜索太慢(笼统) | 首页搜索接口响应 3s+,原因是全文检索没走索引,需优化 SQL 加缓存(具体) |
| 提升用户体验(抽象) | 页面加骨架屏、关键操作加确认弹窗、表单加实时校验提示(可落地) |
很多项目的返工和延期根因都在这里:需求理解偏差导致做出来的东西不是想要的,边界没定清楚导致范围不断膨胀,技术路线没探索充分导致方案选错。SDD 的澄清模式帮你把这些问题前置到编码之前解决。
spec-kit 的澄清流程
使用 /speckit.clarify 命令,AI 通过逐步提问帮你明确需求边界:
1 | 你:/speckit.clarify "我想给博客加个评论功能" |
OpenSpec 的探索流程
使用 /opsx:explore 命令,AI 先帮你定位问题范围、排查原因、探索方案:
1 | 你:/opsx:explore "用户反馈搜索太慢,想优化一下" |
安装步骤
spec-kit 安装
1 | # 方式一:推荐安装稳定版本(v0.6.1) |
初始化项目:
1 | # 创建新项目 |
OpenSpec 安装
1 | # 需要 Node.js 20.19.0+ |
实战示例:为博客添加深色模式
spec-kit 完整流程
步骤一,定义项目原则。在 Claude Code 中执行 /speckit.constitution 命令,设定代码风格、测试覆盖和文档要求,AI 会生成 .speckit/constitution.md 文件。
步骤二,创建功能规格。执行 /speckit.spec add-dark-mode,并给出需求要点:支持亮色、深色、跟随系统三种模式,偏好存储在 localStorage,切换按钮放在导航栏右侧,切换时有平滑过渡动画。AI 会生成 .speckit/features/add-dark-mode/spec.md。
步骤三,生成实施计划。执行 /speckit.plan add-dark-mode,AI 生成包含技术方案选择、文件改动清单和实施步骤的计划文件。
步骤四,分解任务。执行 /speckit.tasks add-dark-mode,AI 生成如下任务清单:
1 | ## Tasks |
步骤五,执行实施。执行 /speckit.implement add-dark-mode,AI 按任务清单逐项实现代码。
步骤六,验证审查。执行 /speckit.verify add-dark-mode,AI 检查每个任务是否完成、代码是否符合规格、测试是否通过。
OpenSpec 完整流程
步骤一,一键生成完整规格。执行 /opsx:propose 并描述需求,AI 一次性生成完整规格目录:
1 | openspec/changes/add-dark-mode/ |
步骤二,审查并调整规格。打开 specs/requirements.md,补充一个需求:切换按钮需要显示当前模式图标(太阳、月亮、电脑)。AI 更新规格文件。
步骤三,执行实施。执行 /opsx:apply,AI 按任务清单逐项实现:
1 | AI: Implementing tasks... |
步骤四,归档。执行 /opsx:archive,AI 将完成的变更归档到历史目录,规格文件同步更新。
spec-kit vs OpenSpec 怎么选
| 维度 | spec-kit | OpenSpec |
|---|---|---|
| 出品方 | GitHub 官方 | Fission AI(创业公司) |
| 风格 | 工程化、严谨 | 灵活、快速 |
| 安装 | Python + uv | Node.js + npm |
| 流程 | 分步执行(6 个命令) | 一键生成加一键应用 |
| 扩展性 | 40+ 官方扩展 | 配置化定制 |
| 适合场景 | 大型项目、团队协作 | 个人项目、快速迭代 |
| 学习曲线 | 较陡(概念多) | 较平(上手快) |
选择建议:大型团队或 Python 项目选 spec-kit,个人开发者或 TypeScript 项目选 OpenSpec。如果想快速体验 SDD 的流程,可以先试 OpenSpec 再系统学习 spec-kit。
SDD 的核心价值在于把质量关口前移到规格阶段。当 AI 能够根据规格生成代码时,规格的质量直接决定了生成代码的质量。与其在实现过程中反复返工,不如在动手之前先把需求聊清楚。
参考资料
- GitHub spec-kit — 87k+ Stars
- Fission-AI OpenSpec — 39k+ Stars
- The Rise of SDD in the AI Era
- SDD Complete Guide