什么是 SDD 规范驱动开发?
SDD(Specification-Driven Development )规范驱动开发,看名字虽然高大上,但其实就是很多互联网公司一直在运行的工作流程,先明确需求,形成规范文档,然后开发根据文档来设计和开发,测试根据文档来写测试用例。
SDD 其强调了需求文档的重要性,所有的后继任务都需要跟需求文档对齐。
重提SDD,是因为现在的大语言模型 AI 编程,同样也出现了需求不明确,带来了结果不符合预期的问题。
规范驱动开发尝鲜工具:Kiro / Comate
如果想快速尝试一下,可以使用亚马逊推出的 AI 编程IDE Kiro 实现,他自身就带了 Spec 开发。国内的百度 Comate 也有跟进,也可看看是否可以白嫖。
安装之后,主界面区分了 Vibe 和 Spec 两种开发模式。

Comate 的 Spec Mode,目前还是 Beta 阶段。
需求澄清
使用方法很简单,切换到 Spec Mode 之后,输入需求即可。
稍等片刻,AI 就会提供一份需求文档。
它拆分需求非常详细,算是优秀的需求文档了。但是这个文档也不是纯粹的自然语言,验收标准里面有一些条件语句:WHEN、THEN、SHALL 等等,是用来强制对齐验收结果的。

详细设计与拆分任务
上文图中看到,需求文档几乎没有任何技术相关的内容。
需求澄清完成之后,确认进入下一步设计。这时候才会出现很多技术选型需要做的内容。
设计也没问题,那就来到最后一步,AI会生成详细的执行清单。
Kiro厉害的地方在于可以单独选择任意一个任务执行。

Spec Mode 与 Plan Agent 的不同
文档定义不同
上次测试了各大组件 IDE 的 Plan Agent。
这些 IDE 都有 Plan Agent,但是并没有完整的需求文档书写的过程,写出来的文档更多是设计文档和执行任务的结合体。
国产AI编程IDE的Plan模式,对比Cursor差别在哪?
Kiro里面的设计文档有很多流程图、类型定义、数据库实例等内容,真的像一个高级程序员在动手前写的详细设计文档,看了都想点个赞。

即使是上次测试文档能力最强的 CodeBuddy 生成的内容,数据库等都是寥寥几句,写的很概要,在对比之下就显得业余很多了。
任务与文档关联性
上次的测试中发现,除了 Cursor 之外,其他 IDE 的最后拆分的任务,和开发计划写好的内容关联比较弱,出现两者不一致的情况反而是常态。开发过程中,每一步都有偏差,那最后产出就很难如你期望的那样了。
但在上文图中可以看到,Kiro 的设计文档和任务列表中,都明确标记了具体关联的需求,三个文档关联性是很强的。
任务拆分合理性
Plan Agent 常常会因为上下文过长,导致中断。
相对而言,SDD 拆分任务之后,不少任务都是可以独立执行的,如果当前任务有前置任务,在前置任务执行之前,当前任务是无法执行的。用户也可以选择单次执行1个或多个任务。
所以,流程变得可控了。即使如遇到中断,对整体影响更小。
什么时候使用 SDD?
回答这个问题之前,先明确一个事情:Spec Mode无法提升大模型本身的能力。而是让在其约束下的大模型生成的内容,更符合我们的需求。比如:如果大模型本身处理后端数据库的能力不行,通过 Spec Mode 也无法获得好的数据库设计。
目前来说,对程序员而言,如果你需要详细设计,那就需要SDD。 所以,一般的小需求用 Plan Agent 或者直接生成,复杂的需求使用 Spec Mode 开发。
另外,如果仅仅是前端开发的项目,大部分时候不需要使用 SDD。
这是因为前端技术通常更侧重于交互和视觉效果,许多需求可以通过组件库或现成框架快速实现,而数据会通过后端 API 约束。唯一涉及的时候,可能就是状态管理了。
同样,在目前大公司成熟的开发团队中,也不太可能频繁用到 SDD。
这些团队往往成员之间分工明确,需求到达程序员手里是,已经不需要澄清需求了,还有很多业务也趋于稳定了,不常常需要更改数据库设计等核心内容。
但是,要提醒的是:如果 AI 编程发展顺利,很多程序员会承担一定的产品的角色。如果真的如此,SDD 工具能帮你来快速适应角色的转换,更好地产出符合需求的产品。
因此,了解 SDD 还是很有必要的。
更通用的方案
Kiro 和 Comate 这种把 Spec Mode 融入了 IDE,好是好,但是如果不用这两个 IDE ,有没有类似的方法执行 SDD?
有的,目前正在尝试 3个开源工具:
-
spec-kit:github.com/github/spec...
-
OpenSpec:github.com/Fission-AI/...
-
BMAD-METHOD:github.com/bmad-code-o...
感兴趣的,可以一起研究下。
相关的测试内容,后续会继续在此号发布。欢迎关注。