TL;DR: 如果说 Vibe Coding 让你"跑得快",那么 Spec Coding (Spec-Driven Development, SDD) 关心的是"跑得远"。它在 2026 年的核心论点是:在 AI 辅助的工作里,长期资产正从代码转向规格——那份被审查、被版本化、生成代码必须满足的文档。OpenSpec 是实践这一范式的一个流行、且不绑定具体工具的框架。本文讲清这个范式、走一遍工作流,并诚实地说明它保证什么、不保证什么。

引言:当"感觉"不再足够

在 2025 年,许多开发者报告 Vibe Coding 带来了显著提速。但随着项目规模增长,一组熟悉的问题也随之而来:逻辑散落在无数文件中、难以察觉的回归 Bug、以及越来越厚的 AI 生成技术债。

这份不安背后是有数据的。GitClear 2025 年的报告分析了 2.11 亿行改动代码(作者提交时间跨 2020–2024 年),发现"复制粘贴"的代码行从占改动的 8.3% 升至 12.3%(相对增长约 48%),而"移动"的代码——GitClear 用作重构的代理指标——从 2021 年占改动行的 25% 降到 2024 年的不足 10%。2024 年是复制粘贴首次超过移动代码的年份。(来源:GitClear《AI Copilot Code Quality 2025》;数据为 2020–2024 年口径。)

仔细看,这是代码如何被改动的趋势,而非对质量的直接测量——但它与很多团队的体感吻合。Spec Coding(规格驱动开发) 是一种回应:不是给 AI 踩刹车,而是给它的产出装上铁轨。

什么是 Spec Coding?

核心思想:规格是首要产物

这一框定在近期文献中已有表述——例如一篇 2026 年的预印本《Spec-Driven Development: From Code to Contract in the Age of AI Coding Assistants》(arXiv,投稿至 AIware 会议)主张把规格当作首要产物,代码作为被生成或被验证的次级产出。这是一种正在被讨论的研究框定,而非既定的行业标准——但它把这一转变刻画得很到位。

在这一范式中,程序员的工作重点从"手写逻辑"转向**"编写、审查和维护规格说明书"**。

三个核心原则

  1. 单一事实来源 (SSOT):规格文档是需求的合法定义,代码应与规格对齐。
  2. 约束驱动 (Constraint-Driven):AI 在规格设定的边界内创作,而非自由即兴发挥。
  3. 可回溯性 (Traceability):理想情况下,生成的代码能追溯到规格中的具体条款——这正是让审查和审计变得可行的关键。

这些是方法所优化的目标,不是白拿的保证。可回溯性只在你持续保持规格与代码同步时才成立;规格不会自我执行。


OpenSpec:一个流行且不绑定工具的框架

OpenSpec 是 Fission-AI 推出的开源框架(MIT 协议),它把 SDD 原则落地为可操作的工具链。其声明的核心哲学:

text
→ fluid not rigid        (流动,而非僵化)
→ iterative not waterfall (迭代,而非瀑布)
→ easy not complex        (简单,而非复杂)
→ built for brownfield    (适用于已有项目)
→ scalable from personal projects to enterprises (从个人到企业可扩展)

为什么要一个规格层? AI 编程助手很能干,但当需求的唯一记录是聊天历史时,结果不可预测。OpenSpec 添加了一个轻量级规格层,确保在写代码之前先对要做什么达成共识。

快速安装:

bash
npm install -g @fission-ai/openspec@latest
cd your-project
openspec init

(依据 2026-07 的 OpenSpec README 核验;opsx: 命令命名空间是当前版本,取代了更早的 CLI 形式。命令名和安装细节可能随版本变化,请以 README 为准。)


Spec Coding 的核心工作流 (SDD Workflow)

SDD 将开发拆分为若干清晰阶段,形成一个以审查为中心的闭环。在 OpenSpec 中,这个闭环的核心通过几条斜杠命令运行:

graph LR A["/opsx:propose 提出变更"] --> B["审查制品"] B --> C["/opsx:apply 逐任务执行"] C --> D["验证测试"] D --> E["/opsx:archive 归档变更"] D -- 偏离 --> A

1. 定义规格 — /opsx:propose

使用 /opsx:propose "你的想法" 启动一个新变更。OpenSpec 会生成一组制品:

制品 对应 SDD 阶段 内容
proposal.md WHY 为什么做、改了什么
specs/ WHAT 需求和验收场景(WHEN/THEN 格式)
design.md HOW 技术方案、架构设计
tasks.md Checklist 原子化的实施清单

2. 审查制品

你审查 AI 生成的制品,确认理解准确。OpenSpec 没有僵化的阶段门——你可以随时修改任何制品。这一审查步骤正是该方法价值所在;跳过它,"规格驱动"就退回成了"氛围驱动"。

3. 逐任务执行 — /opsx:apply

AI Agent 按 tasks.md 中的清单逐任务执行,每次只读取一个任务及其相关的规格上下文。收窄上下文往往能减少跑偏和幻觉——更小、更锋利的 Prompt 给模型编造的空间更少——但这并不能消除错误,所以测试与审查仍然适用。

4. 验证对齐

通过自动化测试和规格比对,确认产出物是否符合第一步定义的验收标准。注意那个常见陷阱:生成的测试可能通过,却在断言错误的东西,所以要读关键路径上的断言。

5. 归档变更 — /opsx:archive

将已完成的变更归档到 openspec/changes/archive/ 目录,附上时间戳,让决策以可读记录的形式留存,而不是随会话蒸发。


Vibe Coding vs. Spec Coding:对比

特性 Vibe Coding (氛围编程) Spec Coding (规格驱动)
驱动力 直觉、对话、即兴 Prompt 结构化文档、契约、规则
适合阶段 0 → 1 的探索、快速原型 1 → 10 的迭代、较大系统
代码质量 波动较大,取决于 Prompt 和模型 更稳定,受规格约束与审查治理
可维护性 较低,存在"黑盒"风险 更高,规格记录了意图
协作成本 个人英雄主义,难以协调 围绕共享规格更易协作
工具支持 原生 IDE + AI 聊天 OpenSpec 等框架
知识持久化 知识存在于聊天历史中 知识沉淀在 specs/ 目录和归档中

二者是互补的。一种常见做法:先用氛围探索一个功能,等它值得保留时,再写规格并对照重新生成。


竞品对比:OpenSpec vs. Spec Kit vs. Kiro

(定位与能力为 2026 年中口径;三者都在快速演进,标准化选型前请重新核实。)

维度 OpenSpec Spec Kit (GitHub) Kiro (AWS) 不使用任何框架
定位 不绑定工具的开源框架 GitHub 官方工具包 AWS 的 Agentic IDE 手动管理
开源 MIT MIT 闭源产品
工具耦合 低;文档列出支持 20+ AI 助手 基于 CLI,跨助手可用 自带 IDE(基于 Code OSS)
模型选择 取决于你用的助手 取决于你用的助手 通过 Amazon Bedrock 提供多种模型(Claude、GPT 及其他) 自定义
配置 Node.js + npm(3 条核心命令) Python 3.11+ 配合 uv 安装 Kiro IDE 自定义
适用范围 新旧项目、个人到企业 主要新项目 新旧项目 小型项目

一个值得纠正的说法:Kiro 常被描述为"只能用 Claude",但到 2026 年中,它已通过 Amazon Bedrock 提供多种模型,包括非 Claude 选项。选型请依据它与你技术栈的契合度,而不是一句过时的概括。


SDD 在哪里有帮助——又在哪里没有

1. 降低(而非治愈)歧义

许多 AI 错误源于上下文模糊。一份精确的规格会收窄模型的推理路径,配合小步执行,往往能提高可用产出的命中率。它并保证正确性——网上看到的任何具体"成功率"百分比,如果不附带可复现的方法论,都值得怀疑。诚实的说法是定性的:输入更锋利、明显的失误更少、验证依然是必须的。

2. 知识的持久化

在纯 Vibe Coding 中,项目知识存在于易逝的对话历史里。在 SDD 中,它存在于 specs/ 目录和归档中。换一个 AI 模型,新模型也能通过阅读规格快速进入状态——这是一个真实、实用的好处。

3. 日渐成熟的工具生态

OpenSpec 的文档列出支持 20+ 主流 AI 编程助手(Cursor、Claude Code、Windsurf、Copilot、Trae 等);GitHub 发布了 Spec Kit;AWS 发布了 Kiro。多个独立厂商向规格驱动工作流收敛,本身就是这一模式有生命力的信号。

4. 合规与可审计性

对于金融、医疗等受监管领域,一份被维护的"规格-代码"映射是审计的有力辅助——它给审查者一条从需求到实现的可追溯链路。它是合规的强力工具,虽然并非团队满足审计要求的唯一途径。


结语:从"写代码"到"编规格"

Spec Coding 把工程师的角色从"每一行的作者"重新框定为"代码必须满足的规格的作者"。判断力并没有消失——它集中到了规格和审查里。像 OpenSpec 这样的框架用几条命令就让这个模式变得可用,但真正让它奏效的纪律,是你装不上的那部分:写清晰的规格,并真的去审查 Agent 产出的东西。

想看它如何端到端落地?请阅读实战篇:Spec Coding 实战:用 OpenSpec 构建生产级 AI 开发流


相关阅读: