← 最新论文
🤖 AI

Spec-Driven Development:From Code to Contract in the Age of AI Coding Assistants

本文提供了一份关于规范驱动开发(SDD)的全面指南,概述了其原则、三个层级的规范严谨度以及支持工具,旨在展示如何通过将规范作为主要制品,在不同软件领域中有效地利用 AI 编程助手。

原作者: Deepak Babu Piskala

发布于 2026-02-03
📖 1 分钟阅读☕ 轻松阅读

原作者: Deepak Babu Piskala

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你正在雇佣一位非常有才华、速度极快、但有点“死脑筋”的机器人厨师,为你烹饪一顿复杂的晚餐。

旧方式(代码优先):
你走到机器人面前说:“给我做顿美味的晚餐。”
机器人为了表现得乐于助人,立即开始切菜和热锅。它猜测你想吃意面,猜测你想吃辣的,甚至猜测你想用那瓶你没提到的昂贵松露油。
十分钟后,你得到了一盘香辣松露意面。而你原本想要的是一份沙拉。
现在你不得不告诉机器人停下来,把意面扔掉,然后重新开始。这就是论文中所说的“氛围编程”(vibe coding)——依赖模糊的提示,让 AI 去猜测你的意图。其结果往往是一团糟,需要不断的修正。

新方式(规范驱动开发):
与其大声下令,不如先写一张食谱卡(即“规范”)。
你准确地写下:“我要一份沙拉。使用菠菜、西红柿和费塔奶酪。不要坚果。酱汁另放。常温食用。”
你把这张卡交给机器人。机器人阅读它,确认理解无误,然后才开始烹饪。
如果机器人试图加入坚果,它会停止,因为卡片上写着“不要坚果”。如果它试图热食端上,它也会停止。
在这种情况下,食谱卡才是老板。食物(代码)只是遵循食谱的结果。如果食物味道不对,你不会责怪厨师;你会检查是否是食谱不够清晰。

三个严格程度等级

论文解释说,你不一定需要一份 50 页的合同。根据你的认真程度,有三种使用这种“食谱卡”方法的方式:

  1. 规范先行(“草图”模式):

    • 定义: 在开始烹饪之前先写好食谱,以确保大家对要做什么达成共识。
    • 适用场景: 非常适合尝试新想法或一次性项目。
    • 代价: 一旦餐点做好了,你可能会把食谱卡扔掉。如果你以后更改了菜品,食谱卡可能不会同步更新。这适用于起步阶段,但不适合长期维护。
  2. 规范锚定(“活菜单”模式):

    • 定义: 食谱卡就贴在冰箱旁边,紧挨着炉灶。每当你更改了菜品(增加了奶酪,或者换了酱汁),你必须立即更新食谱卡。
    • 适用场景: 这是大多数专业厨房(生产环境软件)的最佳选择。
    • 魔力所在: 厨房里有一个机器人检查员。如果厨师更改了菜品却忘了更新食谱卡,检查员就会发出警报。这确保了菜单(文档)始终与食物(软件)保持一致。
  3. 规范即源(“3D 打印机”模式):

    • 定义: 这是最极端的版本。你永远不会直接接触食物。你只编辑食谱卡。随后,一台机器会完全基于该卡片自动“打印”出食物。
    • 适用场景: 这用于汽车引擎或医疗设备等高风险领域,因为任何错误都可能导致危险。
    • 规则: 如果你想更换汽车的刹车,你不能钻到引擎盖下面用扳手去修。你要修改蓝图,然后机器会完美地重建刹车。你绝不允许手动编辑生成的零件。

为什么 AI 让这变得必要

论文认为,AI 编程助手就像那位有才华但死脑筋的机器人厨师。它们非常擅长执行指令,但极其不擅长“读心术”。

  • 没有规范时: 你要求 AI “添加一个登录功能”。AI 会自行猜测密码规则、数据库类型和安全级别。它经常会猜错。
  • 有了规范后: 你给 AI 一个清晰的契约:“登录需要 12 位字符的密码,使用电子邮件,并在连续失败 3 次后锁定账户。” AI 会完美地遵循这些规则。

工作流:四步舞步

论文建议采用一种简单的节奏:

  1. 指定 (Specify): 编写“是什么”(食谱)。
  2. 计划 (Plan): 编写“怎么做”(购物清单和厨房布局)。
  3. 实现 (Implement): 构建它(烹饪)。
  4. 验证 (Validate): 检查它(试味)。如果味道与食谱不符,你要么修正烹饪过程,要么更新食谱,但你绝不能忽略这种不匹配。

何时使用(以及何时不使用)

论文提供了一个简单的决策指南:

  • 使用它,当你在: 构建大型项目、团队协作、使用 AI,或者构建出错成本极高的东西(如银行或汽车)时。
  • 不要使用它,当你在: 制作一个准备丢弃的快速原型,或者作为一个独立开发者构建一个需求显而易见的简单待办事项应用时。在这种情况下,写一份详细的食谱纯属浪费时间。

核心要义

几十年来,软件开发人员总是先写代码,然后才写“食谱”(文档),如果他们写了的话。这篇论文说:反转这个逻辑。
规范 (Specification) 作为你创建的首要内容。将代码 (Code) 视为该规范自动生成的输出结果。

通过这样做,你不再靠猜测,不再与你的 AI 工具作斗争,并确保你构建的东西正是你想要构建的东西。代码应成为规范的影子,而非相反。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →