一份工程复盘型的思考文档,关于为什么 Specification-Driven Development(规范驱动开发)会成为下一代开发模式,以及 AI 在其中扮演的角色。
背景:当规范不再是"文档",而是"真理"
在传统开发中,我们的软件开发流程大体是这样的:
PRD → 技术设计 → 写代码 → 测试 → 上线 → 再改文档
每个环节都在追着下一个跑,结果是:
- 文档与代码永远不同步;
- 版本混乱、信息丢失;
- 产品经理、前端、后端、测试各讲一套语言;
- 重构的成本高到让人害怕。
过去 20 年里,我们一直梦想:
"能不能用自然语言描述系统,然后自动生成代码?"
但一直做不到,因为:
- 自然语言太模糊;
- 模型理解不准确;
- 生成的代码不可控、不稳定。
而 近几年(尤其 GPT-4/5 这一代) ,语言模型的能力跨过了一个门槛:
- 能准确理解复杂的逻辑与上下文;
- 能根据自然语言生成高质量、可运行的代码;
- 能保持结构一致性与可维护性。
于是诞生了一个新的范式:
自然语言 → 可执行规范 → 自动生成系统代码
这就是那句话里提到的"门槛":
"AI 能力已经达到了自然语言规范可以可靠地生成工作代码的门槛。"
而这正是 Specification-Driven Development(SDD) 的核心。
一、什么是 Specification-Driven Development(SDD)
SDD 的核心思想很简单:
规范(Specification)是软件的唯一真实来源(Single Source of Truth)。
在传统开发里:
- PRD / API 文档只是「指导说明」;
- 工程师手动根据文档实现功能;
- QA 再依据文档测试;
- 最后文档和代码逐渐分离。
在 SDD 中:
- 规范文件(Spec)以结构化格式存在(如 YAML、JSON Schema、DSL 等);
- 工具根据规范自动生成代码、测试、SDK、Mock 服务器和文档;
- 规范的修改会自动更新整个系统。
换句话说:"文档不再是描述,而是源代码的一部分。"
二、GitHub 的 spec-kit:AI 时代的规范引擎
GitHub 的 spec-kit 是 SDD 思想的一个开源实现原型。
它探索了如何让"产品规范(Product Spec)"成为系统生成的源头。
核心理念
"The Product Requirements Document (PRD) isn't a guide for implementation; it's the source that generates implementation."
也就是说:
- PRD 不再是"描述怎么做"的文档
- 而是一个可执行规范(Executable Specification)
工作机制简述
-
开发者编写规范文件
- 使用自然语言 + 结构化语法(YAML/Markdown 等)
- 例如定义一个"用户注册"的场景、接口、约束条件
-
spec-kit 解析规范
- 生成相应的代码框架(API、模型、测试样例)
- 可以集成 AI 模型来生成实现细节
-
验证与同步
- 当规范更新,系统能自动检测哪些代码需要调整
- 测试用例也自动衍生,保证实现与规范一致
🧩 最终,规范就是代码的源头,而不是反过来。
三、SDD 解决了哪些根本性问题
| 问题 | 传统做法 | SDD 做法 |
|---|---|---|
| 文档与代码不一致 | 手动维护多个版本 | 自动生成,保持一致 |
| 沟通语言不统一 | PM、设计、研发各讲一套 | 规范成为统一语言 |
| 修改成本高 | 改代码、改测试、改文档 | 改规范即可全自动更新 |
| 重构风险大 | 牵一发动全身 | 自动再生代码结构 |
SDD 的本质是:让系统的语义成为代码的输入,而非输出。
四、规范与代码关系的根本转变
传统开发模式的逻辑是:
规范服务于代码(文档是参考物)
SDD 模式下则变为:
代码服务于规范(规范是源头)
| 对比项 | 传统开发 | Specification-Driven Development |
|---|---|---|
| 主体 | 代码 | 规范 |
| 文档角色 | 辅助说明 | 生成源 |
| 一致性 | 依赖人工同步 | 自动生成 |
| 变更方式 | 改代码再改文档 | 改规范再生系统 |
| 核心思想 | 实现中心 | 意图中心 |
这就是为什么有人说:
"The Product Requirements Document (PRD) isn't a guide for implementation; it's the source that generates implementation."
五、AI 让这一切成为可能
十年前我们尝试过"模型驱动开发(MDD)""代码生成器"等方案,但都因为理解力不够而失败。
AI 的崛起让这件事变得现实。
"人工智能能力已经达到了自然语言规范可以可靠地生成工作代码的门槛。"
AI 不再只是"代码自动补全工具",而是成为:
- 规范到代码的翻译引擎;
- 自然语言到结构化 DSL 的转换器;
- 自动保持一致性的智能代理。
六、AI 并不是取代开发者
AI 的目标不是写完所有代码,而是:
自动化规范与实现之间的机械性转换 ,
让人类开发者专注在「思考与创造」。
| 能力提升点 | 描述 |
|---|---|
| 探索与创造力 | 可以频繁重构、快速试错 |
| "重新开始"能力 | 改规范即可重建系统骨架 |
| 结构化思维 | 加法、减法、批判性分析更容易 |
AI 负责实现,
人类负责定义"为什么"和"要实现什么"。
七、开发者角色的升级
| 过去 | 未来(SDD + AI) |
|---|---|
| 写代码 | 设计规范 |
| 实现功能 | 定义系统行为 |
| 管理复杂性 | 管理意图与逻辑 |
| 专注语法与结构 | 专注创造与判断 |
未来的开发者将不再是「码农(Code Worker)」
而是「意图工程师(Intent Engineer)」------
系统的设计师与规范的创造者。
八、流程对比:传统 vs SDD + AI
传统开发是线性的、分散的; SDD + AI 模式是闭环的、同步的。
九、工程复盘:从痛点到范式转变
痛点
- 文档与实现脱节
- 沟通成本高
- 重构困难
- 知识沉淀分散
转变
- 以规范为核心,信息单一来源
- 由 AI 自动生成实现细节
- 快速迭代、快速验证
- 团队共享的语义化资产
10、结语:让规范成为真理,让代码回归工具
SDD + AI 并不是减少开发者,而是重新定义开发工作本身 。
我们不再被"代码细节"束缚,而是把注意力放回"系统意图"与"产品逻辑"。
AI 解放了我们的机械劳动,让"开发"重新回到"创造"的本质。