您的位置首页 >人工智能 >

02-SDD 到底是什么Spec-Driven Development 规范驱动开发入门

我先联网检索「02-SDD」到底指什么,确认其所属领域和定义。

我精读阿里云开发者社区原文与腾讯云实践文章,确认 SDD 的定义、工作流和与 Vibe Coding 的区别。

在这组技术系列文章里,"02-" 是章节编号(第二篇),"SDD" 是本篇要讲的核心概念,全称 Spec-Driven Development,规范驱动开发(也译规格驱动开发)。它是一种在 AI 编程时代流行起来的工程化开发方法:先把 "系统应该做什么、不能做什么、边界条件是什么" 写成结构化、可验证的规范(Spec),并把规范作为唯一真源(Single Source of Truth),代码则是从规范派生出来的产物 —— 先定义 WHAT(做什么),再让 AI 或团队决定 HOW(怎么做)。典型流程是 Specify(写需求规范)→ Plan/Design(技术设计)→ Task(任务拆解)→ Implement & Verify(实现与验证)。它主要解决纯 Vibe Coding 下需求跑偏、上下文丢失、架构漂移、代码不可审查等问题;但 SDD 并不适合所有场景,小改动、一次性脚本和探索期原型直接开发即可,规范投入产出比并不划算。

一、先分清:这里的 SDD 指什么

项目说明
本篇 SDDSpec-Driven Development,规范 / 规格驱动开发,面向 AI 辅助编程的工程方法
"02-" 含义系列文章第二篇的章节编号,不是技术术语本身
核心产物分层规范文件(宪法 / 行为 / 方案 / 任务),而非某段代码或某个工具
适用背景AI 编程助手、AI Agent 大量生成代码后,需要把意图和约束固化下来

补充:SDD 在其他领域也可能是 SEPA Direct Debit(欧洲直接借记)、Software Design Description(软件设计文档)等缩写;本文按原标题上下文,只讲 AI 编程语境下的规范驱动开发,不与其他含义混用。

二、三句话读懂 SDD

  1. 规范是唯一真源,代码是规范的产物。 需要改系统时,先改规范,再由规范驱动代码变更;代码可以重写,规范不能丢。
  2. 规范必须先于代码存在,且以可验证的形式存在。 "可验证" 是关键,这也是 SDD 与 "事后补一份设计文档" 的本质区别。
  3. 规范是人与机器共读的。 给人看用于评审和交接,给 AI 看作为每次生成代码的输入约束;所以规范要结构化、短句、可编号、可追溯。

三、SDD 要解决什么问题

纯靠对话让 AI 写代码,项目上线一段时间后容易出现以下失败模式:

  • 上下文丢失:清空对话或跨会话后,AI 忘记数据库结构、编码规范等约定。
  • 需求漂移:多轮迭代后实现偏离最初意图,没人说得清从哪里开始偏的。
  • 反复重来:小改动引发大范围返工,甚至从零重新生成。
  • 架构漂移:AI 自行加入缓存层等 "看似合理" 的设计,几轮后假设嵌入数据模型,难以移除。
  • 不可审查:几百行未经文档化的 AI 生成代码,评审者看不出设计意图。
  • 多文件崩溃:改动涉及多个文件时,上下文窗口挤掉前面的约束条件。

根源往往不是模型不够聪明,而是从来没有一份写下来、版本化保存的规范。

四、典型 SDD 工作流

阶段做什么产出物
Specify(写需求)写清做什么、为什么做:需求、用户故事、验收标准,先不谈实现行为规范、验收标准
Plan/Design(技术设计)把规范转成技术设计:架构、数据模型、接口、约束、迁移与回滚方案技术方案文档
Task(任务拆解)按顺序拆成可执行、可验证的任务清单任务清单
Implement & Verify(实现与验证)AI 按任务清单实现,人审查聚焦的变更,而非整段代码转储代码、测试、评审记录

评审重点随之前移:团队先评审 Spec 和 Plan,而不是等代码生成完再去读 "一坨 AI 输出"。

五、规范的四个层次

落地成败的关键,是不要把所有内容塞进一个文件。

层次典型文件回答的问题长度上限变更频率批准人
L0 宪法constitution.md团队做技术决定的底线是什么1 页半年技术负责人
L1 行为规范spec.md / requirements.md系统应表现出什么行为(做什么、不做什么)2-4 页每个需求产品 + 技术
L2 技术方案plan.md / design.md用什么结构、技术、迁移和回滚方式实现2-3 页每个需求技术负责人
L3 任务清单tasks.md按什么顺序、由谁、以什么验证标准完成1-2 页每个需求开发自管

纪律只有一条:上一层不写下一层的内容。行为规范里出现 "用 Redis 做原子扣减" 就是越界,那属于 L2 技术方案;技术方案一变,行为规范不该跟着作废。

六、让需求可验证:EARS 句式

EARS(Easy Approach to Requirements Syntax)是一套受限需求句式,用来逼作者把触发条件、状态和异常分支写清楚,让规范既能被人评审,也能被 AI 读取。

类型句式示例
通用系统应……系统应为每次库存变更记录一条不可修改的流水。
事件驱动当〔触发〕时,系统应……当用户点击 "领取" 且库存大于 0 时,系统应创建一张 "未使用" 状态的券并返回券码。
状态驱动当处于〔状态〕时,系统应……当券处于 "已锁定" 状态时,系统应拒绝除核销与解锁外的所有状态变更。
非期望如果〔异常条件〕,则系统应……如果用户已达每人限领上限,则系统应拒绝领取、返回错误码,且不扣减库存。
可选特性当启用〔配置〕时,系统应……当启用 "仅限新用户" 配置时,系统应仅允许注册 7 天内且无已支付订单的用户领取。

写作三条要求:一句一条(不用 "并且"" 同时 " 连接两个行为)、给编号(如 FR-001,编号永不复用)、禁形容词(快速、友好、合理、尽量等,换成数字或明确条件)。

七、与瀑布、敏捷、TDD/BDD 的区别

方法论核心 / 权威产物谁读与代码的关系主要失效点
瀑布需求规格说明书(SRS)人文档完成后基本脱离,代码另行演进文档与代码脱钩,改代码不改文档
敏捷 / Scrum用户故事 + 验收标准人故事卡在迭代结束后废弃粒度太粗,边界条件 "实现时再说"
TDD / BDD测试用例 / 业务语言行为描述人 + 机器测试即规范,只覆盖已想到的路径要求先想清设计,不描述 "为什么"
SDD分层规范(行为 + 架构 + 边界 + 约束)人 + AI规范驱动生成,变更回写规范规范腐败、流程过重

一句话概括:TDD 用测试锁住行为,SDD 用规范产生行为;测试回答 "它现在对不对",规范回答 "它应该是什么、为什么"。

八、什么场景该用、什么场景不必用

改动特征判断处理方式
改文案、调样式、一行修复、改配置不需要 SDD直接改,不写规范
单文件、单函数、逻辑清晰、可 1 小时回滚不需要 SDD直接改,PR 描述写清意图
跨 2-3 个文件、有分支和边界条件轻量规范只写 L1 验收标准(5-10 条),方案用口头 + PR 描述
跨模块、涉及数据模型变更、有并发或状态机完整 SDDL0-L3 全走,含分析门禁
多人并行、需要交接、有合规或审计要求完整 SDD + 归档全流程 + 变更提案 + 归档留痕
探索期原型、一次性脚本、技术验证不需要 SDD标注为一次性产物,禁止进主干

建议的强制线:涉及数据库结构变更、跨服务调用、资金或库存计算、权限判定的需求,一律走完整 SDD,这四类返工成本最高,规范投入产出比最好。

九、主流 SDD 工具参考

工具形态最擅长主要短板
GitHub Spec KitCLI + 斜杠命令,可接入多种 AI 助手新项目、需要正式评审的产品需求流程偏重,小改动承担不起
Amazon Kiro独立 IDE(基于 Code OSS)单人深度开发、IDE 内闭环绑定自家 IDE,团队统一成本高
OpenSpecCLI + 斜杠命令,强增量规范与归档存量系统、频繁小步变更对新项目引导较弱
纯 Markdown 自建无工具,全靠约定任何场景兜底无自动化,依赖自觉

十、适用边界与常见误区

  • 适合:10 人以上团队、有集成点的复杂系统、需要追溯的监管行业(金融、医疗等)、多人并行与跨仓库协作。
  • 不适合:独立开发者、简单 CRUD、周末项目、需求频繁变动的小项目;此时写规范的时间可能超过直接写代码。
  • 常见误区:把所有规范塞进一个文件;上层规范越界写技术实现;规范写完就不再回写维护;用形容词代替可验证条件。
  • 业界有 "用 vibe 去探索,用 spec 去建造"(Use the vibes to explore. Use specifications to build.)的说法:探索阶段可以自由尝试,进入建造阶段再用规范约束。

整体来看,SDD 的本质是把 AI 时代最稀缺的能力 —— 准确表达意图、固化约束和可追溯变更 —— 从对话记录搬到版本化的规范文件里。它不是要替代编程能力,而是给 AI 生成代码套上一层工程纪律:先对齐规范,再生成代码,最后按规范验证,从而让团队协作、审查和长期维护变得可控。

【相关 FAQ】

问题 1:02-SDD 里的 SDD 到底是什么意思?

回答 1:在本篇上下文中,SDD 全称 Spec-Driven Development,中文叫规范驱动开发(也译规格驱动开发);"02-" 只是系列文章的章节编号。SDD 把规范作为唯一真源,代码由规范派生,先写清做什么和约束条件,再让 AI 或团队完成实现。

问题 2:SDD 规范驱动开发的典型工作流分哪几个阶段?

回答 1:典型 SDD 工作流分为 Specify(写需求规范)、Plan/Design(技术设计)、Task(任务拆解)、Implement & Verify(实现与验证)四个阶段。规范先于代码存在,团队先评审规范和方案,再由 AI 按任务清单生成代码并验证。

问题 3:SDD 规范驱动开发和 TDD、BDD 有什么区别?

回答 1:区别在于权威产物不同:TDD 的权威产物是测试用例,主张先写测试;BDD 用业务语言描述行为;SDD 的权威产物是完整规范,包含行为、架构、边界情况和约束,先写规范再让 Agent 产出代码、测试和文档。一句话说,TDD 用测试锁住行为,SDD 用规范产生行为。

问题 4:SDD 规范驱动开发一般把规范分成哪几个层次?

回答 1:SDD 通常把规范分为四层:L0 宪法(技术决定底线)、L1 行为规范(系统应表现的行为)、L2 技术方案(结构、技术、迁移回滚)、L3 任务清单(顺序、负责人、验证标准)。纪律是上一层不写下一层的内容,避免技术方案一变行为规范就作废。

问题 5:哪些场景适合用 SDD,哪些场景不必用规范驱动开发?

回答 1:跨模块、涉及数据模型变更、并发或状态机、多人并行、有合规审计要求的项目适合走完整 SDD;涉及数据库结构变更、跨服务调用、资金库存计算、权限判定的需求建议强制走完整 SDD。改文案、调样式、一行修复、单文件小改动、一次性脚本和探索期原型则不必使用 SDD,直接开发即可。

【参考资料】

  • [2026-11-13](02-SDD 到底是什么)阿里云开发者社区
  • [2026-07-28](Vibe Coding 在企业中的落地实践)腾讯云开发者社区
  • [2026-05-29](Vibe Coding 从自然语言到工程化实践:面向竞赛团队的 AI 编程新范式介绍)上海图书馆(上海科学技术情报研究所)
  • [2026-05-09](5 人 7 天干完 20 人数周的活:Spec-Driven Development 如何重新定义 AI 编程)腾讯网

【免责声明】

本文内容基于公开技术文章与社区资料整理,仅用于 SDD(Spec-Driven Development,规范驱动开发)概念的科普与方法梳理,不构成具体项目的开发流程咨询或工具选型承诺。文中流程分层、EARS 句式、工具对比和案例数据来自不同团队与公开报道,适用效果因项目规模、团队成熟度和场景差异而不同;落地时请结合自身工程规范与实际情况评估。文中提及的第三方工具名称归各自所有者所有,如信息存在更新或版权问题,请联系更正。