规范驱动开发:用Spec管住AI编程助手的失控

规范驱动开发(SDD)用一份Markdown规范文件掌控AI编程助手,把开发者从代码生成者变为架构师。
这门由JetBrains与DeepLearning.AI合作推出的课程,系统介绍了规范驱动开发(SDD)——一种应对AI编程助手"失控"的工程化方法。其核心逻辑是:在agent开始生成代码之前,先用一份结构化的Markdown规范文件定义好项目使命、技术栈、路线图和功能约束,让规范成为人与agent之间的契约。SDD带来三大收益:用一行规范控制数百行代码变更、通过持久化文档消除跨会话的上下文衰减、以及在代码生成前锁定开发者意图。工作流围绕"项目宪法"展开,每个功能走规划-实现-验证的循环。课程还覆盖了遗留项目的逆向工程、技能封装自动化,以及通过MCP、ACP等标准协议保持工作流与具体工具解耦,使整套方法论在模型快速迭代的时代保持可移植性。
当你让编程助手连续运行二三十分钟生成代码时,与其事后花几个小时收拾残局,不如先花三四分钟写清楚指令。这是DeepLearning.AI与JetBrains合作推出的规范驱动开发(Spec-Driven Development,简称SDD)课程的核心观点。由JetBrains开发者倡导者Paul Everett主讲,Andrew Ng引入,这门课系统讲解了如何用一份Markdown规范文件来掌控AI编程助手的行为。
从Vibe Coding到工程化
Vibe coding(氛围编程)的典型场景是:你写一句"给我做个按钮",然后看结果——按钮太大了、颜色不对,你再指出问题,让agent重试,循环往复。对一个按钮来说这没问题,但放到大型项目里就会崩溃。高层级的提示词虽然快,却会产出一次性代码和不断累积的技术债,而且那段冗长的对话历史甚至不会被保存下来。
课程将SDD定义为"对无监督AI生成所带来混乱的专业回应"。它的本质是一次范式转变:把说明"做什么、为什么做"的规范(specification),与"怎么做"的实现(implementation)解耦。规范成了人与人、人与agent之间的契约。开发者的主要任务从亲手写代码,转向把意图转化为清晰的规范。

课程打了个比方:编译器把人类可读的源码转换成机器码,而SDD则通过agent和提示词,把规范转换成源码——只不过规范是用人类语言写的,便于利益相关方理解。
上下文窗口(context window)是大语言模型在单次推理中能处理的最大文本量,目前主流模型在10万到200万token之间。当对话历史越来越长,早期的指令和约定会被推出有效注意力范围,模型开始"遗忘"项目规则,输出质量随之下降——这就是课程所说的上下文衰减(context decay)的底层机制。无状态(stateless)则意味着每次新会话agent都从零开始,不保留上一次交互的任何记忆,除非开发者主动把必要信息带入新会话。SDD通过持久化的规范文档充当外部记忆,弥补了模型这一先天缺陷。
规范带来的三大收益
课程反复强调SDD的三个核心好处。第一是用小改动控制大变更。规范里一句"使用SQLite配合Prisma ORM"可能影响数百行代码,改成"换成MongoDB"也只是一句话的事。这让写规范远比手写代码高效,大幅降低了与超高速编程agent协作时的认知负担。
第二是消除上下文衰减(context decay)。Agent是无状态的,随着对话推进,上下文窗口被填满,agent开始频繁出错。规范能在不同会话、甚至不同agent之间持续存在,把agent锚定在代码库所需的核心上下文上。
第三是提升意图保真度(intent fidelity)。规范迫使你在agent开始生成代码之前,先定义好问题、成功标准、约束条件和用户流程。因为开发者拥有LLM所缺乏的独特背景和主观判断,明确写下这些决策,结果自然优于让模型随机选择。
宪法与功能开发循环
SDD的工作流从项目级的"宪法"(Constitution)开始。宪法定义三大支柱:使命(mission,解释项目的愿景、受众、范围)、技术栈(tech stack,团队对开发部署技术和约束的共识)和路线图(roadmap,按阶段排列的动态文档)。课程指出,不少开发者用顶层的agents.md文件来做类似的事,但项目宪法更结构化,而且不绑定特定agent。

宪法确定后,每个功能都走一个可重复的循环:规划(plan)→ 实现(implement)→ 验证(validate)。每个功能在独立分支上开发,功能之间保持干净的起点,减少上下文切换的麻烦。功能之间还有一个"重新规划"(replanning)环节——修订宪法、更新路线图,甚至改进流程本身。课程用"放慢才能跑快"来形容这一步。
写宪法的推荐做法是与agent对话。课程演示的示例项目叫Agent Clinic——一个给AI agent治病的诊所,用来调侃agent也会有幻觉、上下文腐烂、记忆问题。开发者把项目描述和stakeholder写的readme交给agent,让它就使命、技术栈、路线图提问。Agent往往会提出开发者没想到的架构模式和权衡问题,比如"速度 vs 数据保真度"。
人在回路中的角色转变
课程把开发者比作建筑师:你把详细图纸交给施工队,然后负责监督施工、审查验收或要求返工,而不是告诉工人该怎么干活。"agent是肌肉,规范是大脑"。

由于agent写代码极快,开发者开始谈论"认知债"(cognitive debt)——追踪代码在做什么、如何演进所需的心智负荷。应对方法是保持变更规模可控、频繁小步提交。审查时应聚焦于高层级问题(功能是否可用、是否符合规范),而非CSS类名这样的细节。课程演示中还用到了一个有效技巧:让agent派生多个子agent(sub-agent)对整个项目做深度审查,既给了agent更多思考空间,又用子agent隔离的方式保护了主agent的上下文窗口不被污染。
一个值得记住的观点是:实现过程中发现规范的遗漏(比如没规定如何抽取props类型)并不是失败,而是在探索中演进规范,并把新发现记录下来,以便未来获得更好的结果。
棕地项目与工作流自动化
很多人认为SDD和AI只适合全新的绿地(greenfield)项目,课程专门反驳了这一点。对已有的遗留(brownfield)项目,agent可以通过探索现有代码库、提交记录和文档,"逆向工程"出SDD所需的工件,生成宪法来对齐未来的代码变更。流程和绿地项目完全一致。

课程后半部分讲到如何用**agent技能(skills)**自动化重复性工作流。比如每次启动功能规范时都要输入相同的提示词,就可以打包成一个技能;验证步骤里的更新readme、lint、格式化、跑测试等也能封装成一个验证技能。技能可以是项目级或全局的。
一个重要趋势是从MCP转向"技能+CLI"。此前扩展agent的通用方式是MCP(Model Context Protocol),比如Context7这个为agent带来最新包文档的热门服务。但Context7现在也开始推荐用调用CLI工具的技能来替代MCP服务器——因为CLI工具能以更少的设置和更少的上下文消耗完成同样的工作。课程判断这一趋势正在加速。
MCP(Model Context Protocol)是Anthropic于2024年底提出的开放协议,旨在标准化AI模型与外部数据源、工具之间的连接方式,类似于为agent世界定义的"USB接口"。通过MCP服务器,agent可以实时调用搜索引擎、数据库、代码仓库等外部能力,而无需将这些能力硬编码进模型本身。Context7是其中颇具代表性的MCP服务,专门为agent提供各类开源库的最新官方文档,解决模型训练数据滞后导致引用过时API的问题。课程指出的趋势——从MCP转向CLI技能——反映了实践中发现MCP服务器的配置复杂度和额外上下文消耗有时超过其带来的便利,直接调用成熟的命令行工具往往更轻量、更可靠。
保持工作流与工具的独立性
课程最后强调,由于模型和agent进化太快,不应把工作流绑死在单一选择上。它介绍了一系列标准:agents.md用于规则,agent skills用于封装可重复工作流,MCP用于外部工具,ACP(Agent Client Protocol)用于连接agent与客户端。ACP的架构与LSP类似,配合ACP注册表,可以自动化地在IDE里查找、安装、连接各种agent,比如OpenCode。
开源工具方面,课程提到GitHub的SpecKit(提供constitution、plan、tasks、implement等斜杠命令)和FissionAI的OpenSpec(遵循propose→explore→apply→archive的工作流),两者都包含分支管理、验证脚本和规范文档格式。课程演示了同一个功能规范技能在Claude Code和OpenAI Codex之间迁移后照常运行,证明了工作流的可移植性。
正如课程结尾所说:"你今天写下的规范,会成为明天项目的记忆。" SDD的价值在于把工作重心从"怎么做"转移到"做什么、为什么做",让开发者重新成为软件的掌舵者,而不是对着agent的输出碰运气。
LSP(Language Server Protocol)是微软在2016年为VS Code提出、后被广泛采纳的协议,将代码补全、跳转定义、错误诊断等语言智能功能从编辑器中解耦出来,任意语言只需实现一个语言服务器就能被任意支持LSP的编辑器使用。ACP(Agent Client Protocol)借鉴了相同的解耦思路,试图在agent能力与IDE客户端之间建立标准化接口:agent实现ACP服务端,IDE实现ACP客户端,两者通过协议通信,从而让同一个agent可以在不同开发环境中无缝工作,开发者也不必因为换了编辑器就重新配置整套agent工具链。
相关推荐

Cloudflare开源决策模型Clef,亚马逊80亿芯片剥离出表
Cloudflare开源决策模型Clef刷新43项基准,亚马逊将80亿美元英伟达芯片剥离出表转向轻资产,华尔街启动600亿美元AI芯片融资,人形机器人半年出货暴增432%,一文速览今日AI行业要闻。

CSS开发者偏好实录:Adam Argyle谈最爱的颜色、单位与属性
CSS专家Adam Argyle在前端快问快答中分享最爱的颜色、格式、属性和单位,对比社区投票揭示OKLCH普及、display与rem称王、grid渐变常需查文档等前端生态信号。

DeepSeek Harness全模态桌面端搭建指南:生图、视频、远程操控全打通
手把手教你把 DeepSeek Harness 打造成全模态桌面端:用 DSH Desktop 安装客户端,接入 Agnes 免费生图生视频、DeepSeek V4.1 Flash 视觉理解、AnySearch 联网搜索,并通过 Anywhere 实现手机远程操控电脑。