AI 编程与智能体

什么是 Spec Driven Development?spec-kit・Kiro 总结

SDD(Spec Driven Development,规范驱动开发)是一种在让 AI 编写代码之前,先用文档确定规范,并将其作为唯一事实来源的方法论。本文整理了 spec·plan·tasks 四阶段流程、两种工具,以及它与氛围编程的区别。

4 分钟阅读
什么是 Spec Driven Development?spec-kit・Kiro 总结 封面图

让 AI 编写代码的方式正在迅速分化。

一边是通过对话即兴构建的氛围编程;另一边则是本文的主题——规范驱动开发(Spec Driven Development,SDD)。

用一句话概括:SDD 会在让 AI 编写代码之前,先把规范(spec)写入文档并确定下来。

这份文档作为唯一事实来源,引导 AI 完成规划、实现和验证。

本文将整理 SDD 的工作机制、代表性工具 spec-kit 和 Kiro,以及它与氛围编程的使用边界。工具信息截至 2026 年 8 月。

先来看核心摘要。

  1. SDD 先通过 spec 文档确定“要构建什么”,并将代码视为其产物。
  2. 流程分为四个阶段:spec(需求)→ plan(技术设计)→ tasks(任务拆分)→ 实现。
  3. GitHub 的 spec-kit 和 AWS 的 Kiro,是将这套流程工具化的代表产品。
  4. 通常的边界是:原型使用氛围编程,需要长期维护的产品代码使用 SDD。

为什么规范再次受到重视

先写文档再开发并不是什么新想法。瀑布模型时代的需求规格说明书就是这么做的,但因为过于沉重而被敏捷开发取代。

然而,AI 代理的出现改变了局面。即使面对含糊的需求,人类开发者也会通过提问逐步补充上下文。

相比之下,AI 收到含糊的提示时,会用看似合理的猜测填补空白。结果与需求不符,表面上却看起来正常,形成最棘手的缺陷。

因此产生了“要让 AI 工作,就必须先消除歧义”的需求,规范也再次成为答案。不同之处在于,这次文档是 AI 的执行依据,而不只是给人阅读的材料。


四阶段流水线:从 spec 到 tasks

不同工具的名称略有差异,但基本结构相同。

阶段 产出物 确定内容
Specify spec.md 构建什么、为什么构建(需求・场景)
Plan plan.md 如何构建(技术栈・架构)
Tasks tasks.md 按什么顺序构建(拆分工作单元)
Implement 代码 按顺序实现每个 task
从 spec 经过 plan・tasks 到实现的 SDD 四阶段流程图
每个阶段都需要人工批准,需求变更要回到 spec,而不是修改代码

核心规则有两条。

第一,只有在人员审查并批准每个阶段的产出物后,才能进入下一阶段。这样可以在文档阶段过滤歧义,避免它进入代码。

第二,如果实现过程中需求发生变化,应修改 spec 而不是代码,并重新执行后续阶段。因为 spec 必须始终代表最新事实。

换个角度看,代码不再是源头,而是编译 spec 后得到的产物。真正的源代码是文档。


两种工具:spec-kit 和 Kiro

GitHub 的 spec-kit 是一个不依赖特定代理的开源工具包。

它在 Claude Code、Copilot、Gemini CLI 等工具之上加入 /specify、/plan、/tasks 斜杠命令,从而强制执行上述流水线。

它的另一个特点是使用 constitution 文档记录项目不可变的原则。

AWS 的 Kiro 是一款从设计之初就以 SDD 为核心的代理型 IDE。它会创建三种文档:requirements.md、design.md 和 tasks.md。

它的优势在于需求表示法,会使用 EARS(Easy Approach to Requirements Syntax)表示法对需求进行结构化。

这种方法会将需求整理成“系统在某种情况下应当做某事”的句子。

如果你已经在使用 Claude Code 这类通用代理,添加 spec-kit 的引入成本更低。如果想要 IDE 集成体验,Kiro 更合适。


与氛围编程的边界

SDD 并非总是正确选择。创建和审查三种文档确实需要成本,因此将它用于周末原型或一次性脚本,可能会本末倒置。

判断标准是代码的生命周期。如果代码本周就可以丢弃,就用氛围编程快速迭代。

如果代码需要维护和扩展数个月或更久,先用 SDD 消除歧义反而能降低总成本。

实际运行时还要注意一点:spec 与代码不一致却被长期搁置的 drift。

“需求变更必须先改 spec”这条规则一旦失效,spec 就会变成没人信任的文档。这样一来,整个 SDD 就会沦为形式流程。

两位开发者用笔共同审查打印出的规范文档和 Markdown 检查清单
在文档审查阶段消除歧义,比等到代码审查时再发现更省成本

总结

归根结底,SDD 主张“AI 时代真正的编程语言是自然语言规范”。它将原本用一行提示带过的意图传达,提升为可审查的文档。

下次开发功能时,先别急着写提示,试着先写一份 spec 文档。一天之内就能判断这种方法论是否适合你的工作。


参考资料