Skip to content

1.2.2 什么是 Spec Coding(规范驱动开发)

一句话解释

Spec Coding = 先写清楚"要做什么",再让 AI 按规范生成代码。

如果说 Vibe Coding 是"打车说目的地",那 Spec Coding 就是"给司机一份详细的路线图"。

为什么需要 Spec Coding?

Vibe Coding 很爽,但当项目变复杂时,你会遇到问题:

  • 功能越加越多,AI 开始"忘记"之前的需求
  • 改一个地方,另一个地方莫名其妙坏了
  • 你自己都记不清最初想做什么了
  • 和别人协作时,说不清楚项目要做成什么样

这时候,你需要一种更"规范"的方式——Spec Coding

行业趋势:Spec Coding 正在成为主流

2025年,越来越多的工具开始支持 Spec Coding 方式:

  • Amazon Kiro:AWS 推出的 AI IDE,核心卖点就是"Spec-Driven Development"。它要求你先写 requirements.md、design.md、tasks.md,然后 AI 按规范生成代码。

  • GitHub Spec Kit:GitHub 推出的规范工具包,帮助团队在 AI 编程时代建立"活文档"(living documents)——随项目演进的规范。

  • JetBrains Junie:JetBrains 的 AI 编程助手,官方教程明确推荐"先写需求文档,再让 AI 生成开发计划"。

这说明什么?Spec Coding 不是"麻烦",而是让 AI 更好地帮你的方法

工具越来越智能,但"想清楚要做什么"这件事,永远是人类的工作。

Spec Coding 的核心思路

Spec 是 Specification 的缩写,意思是"规格说明书"。

Spec Coding 的核心是:先想清楚、写清楚,再动手

你需要先产出一些文档,让 AI(和你自己)都清楚:

  • 要做什么
  • 怎么做
  • 分几步做

然后 AI 按照这些文档来生成代码。

Spec Coding 的三件套文档

Spec Coding 的核心产物是三份文档。别被"文档"吓到——它们可以很简单,关键是有总比没有好

1. requirements.md(需求文档)

回答的问题:要做什么?

内容包括:

  • 产品是什么
  • 用户是谁
  • 核心功能有哪些
  • 不做什么(同样重要!)

示例(简化版):

markdown
# 背单词 App 需求文档

## 产品概述
一个帮助用户每天背 20 个单词的网页应用。

## 目标用户
准备四六级考试的大学生。

## 核心功能(P0)
1. 每天展示 20 个单词
2. 用户可以标记"认识"或"不认识"
3. 查看今日学习进度

## 不包含(Out of Scope)
- 用户注册登录
- 单词发音
- 多设备同步

2. design.md(设计文档)

回答的问题:怎么做?

内容包括:

  • 技术选型(用什么工具/框架)
  • 数据结构(信息怎么组织)
  • 页面结构(有几个页面,每个页面干什么)

示例(简化版):

markdown
# 背单词 App 设计文档

## 技术选型
- 纯前端实现,使用 HTML + CSS + JavaScript
- 数据存储:LocalStorage

## 数据结构
- 单词列表:[{ word: "apple", meaning: "苹果", status: "unknown" }, ...]
- 学习进度:{ total: 20, learned: 5, date: "2025-01-15" }

## 页面结构
1. 首页:显示今日进度,开始学习按钮
2. 学习页:卡片式展示单词,认识/不认识按钮
3. 结果页:今日学习总结

3. tasks.md(任务清单)

回答的问题:分几步做?

把大目标拆成小任务,每个任务都是一次可以完成的事。

示例(简化版):

markdown
# 背单词 App 任务清单

## 第一阶段:基础框架
- [ ] 创建项目基本文件结构
- [ ] 实现首页 UI
- [ ] 准备 20 个测试单词数据

## 第二阶段:核心功能
- [ ] 实现单词卡片展示
- [ ] 实现"认识/不认识"按钮功能
- [ ] 实现进度统计

## 第三阶段:数据持久化
- [ ] 用 LocalStorage 保存学习记录
- [ ] 实现"继续昨天的进度"功能

Spec Coding vs Vibe Coding 对比

维度Vibe CodingSpec Coding
启动速度快,说干就干慢,需要先写文档
适合项目规模小(1-3 个功能)中大(5 个以上功能)
代码质量够用就行相对规范
可维护性低,改着改着可能乱高,有文档可追溯
协作友好度低,别人看不懂高,文档是沟通工具
学习曲线平,马上能上手陡一点,要学写文档

一个类比

还是用出行来类比:

场景你会怎么做?
去楼下便利店直接走(Vibe Coding)
第一次去一个陌生城市旅游先做攻略,列出要去的景点、路线(Spec Coding)

简单任务,直接干;复杂任务,先规划。

常见问题

写文档好麻烦,能不能让 AI 帮忙?

完全可以。直接告诉 AI:"我想做一个背单词的应用,帮我写一份简单的需求文档,包括产品概述、目标用户、核心功能和不做什么。" AI 会给出初稿,在此基础上修改即可。

文档要写多详细?

够用就行。个人项目几行字的清单就够;团队项目需要把每个功能的输入输出写清楚;生产级项目则需要更专业的格式(超出本教程范围)。

Vibe 和 Spec 能混着用吗?

不仅能,而且推荐这样做。很多人的实际工作流是:先 Vibe Coding 快速搭原型 → 验证通过后补文档 → 后续迭代用 Spec Coding 方式。

小结

  • Spec Coding 是"先规划,再动手"的 AI 编程方式
  • 核心产物是三件套文档:需求、设计、任务清单
  • 适合复杂项目、团队协作、长期维护的场景
  • 可以和 Vibe Coding 混合使用

下一节详细讨论:如何判断什么时候用 Vibe,什么时候用 Spec?