用规范驱动开发(SDD)阻止 AI 毁掉你的代码库
AI 编程助手因缺乏结构化上下文而产生不稳定输出——它们会臆想需求、忽略团队约定、跨会话遗忘规则。规范驱动开发(SDD)通过前置规范编写来修复这一问题,将人类从逐行审查者转变为规则定义者,减少返工并使 AI 输出在多迭代、多开发者项目中变得可预测。
AI 编程助手正在改变开发方式,但它们也带来了新的问题:输出不稳定、范围蔓延、规则遗忘。当团队依赖 AI 进行多迭代、多开发者协作时,这些问题会被放大。规范驱动开发(Spec-Driven Development,SDD)提供了一种解决方案:将人类从逐行审查者转变为规则定义者,让 AI 在清晰的约束下执行。
SDD 的核心思想是前置规范工作。在编写代码之前,团队需要创建三种文档:Spec 文档定义构建什么和不碰什么,Design 文档锁定技术方案,Tasks 文件将工作分解为可验证的小块。AI 在这些护栏内执行,而不是即兴发挥。这种方法减少了 AI 幻觉和范围蔓延,使输出更加可预测。
OpenSpec 是一个轻量级工具,通过 /opsx 命令集(propose, apply, sync, archive)实现 SDD 工作流。它生成和管理规范、设计和任务文档,并支持 MCP(模型上下文协议)服务器。MCP 协议让 AI 编程工具直接连接到 Figma、Yapi 和内部维基等外部数据源,从而在生成初始 Spec 时自动获取相关上下文,避免了手动复制粘贴的错误。
在代码生成后,还有三层约束系统来捕获剩余的偏差:Skills(技能)编码团队的编码习惯,分为底层(通用规则如“先思考再编码”)和顶层(项目特定架构和命名习惯);AGENTS.md 文件作为 AI 工具的入门手册,包含稳定的项目级规则,如目录结构和禁止触碰的区域;Hooks(钩子)则在生命周期事件中强制执行硬约束,例如 PostToolUse 钩子可以拒绝包含硬编码中文字符串的文件。
归档完成变更是 SDD 中最被低估的步骤。通过 /opsx:archive,团队可以保存已确认的边界、放弃的设计路径和发现的陷阱,形成项目知识库。这样,下一次 AI 会话就能继承之前的积累,边际协作成本逐渐降低。经验法则是:任何预计超过两天的工作都值得编写 Spec,而简单的样式调整或一次性脚本则不需要。
总的来说,SDD 的核心转变不是工具,而是将人类从代码审查者转变为规范作者。AI 成为执行者而非协作者。只有 Hooks 能阻止不合规输出,使规则真正生效。归档是打破重复错误的关键。MCP 集成使 SDD 在规模上实用,而两天启发式法则是判断是否编写 Spec 的有用标尺。