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(需求文档)
回答的问题:要做什么?
内容包括:
- 产品是什么
- 用户是谁
- 核心功能有哪些
- 不做什么(同样重要!)
示例(简化版):
# 背单词 App 需求文档
## 产品概述
一个帮助用户每天背 20 个单词的网页应用。
## 目标用户
准备四六级考试的大学生。
## 核心功能(P0)
1. 每天展示 20 个单词
2. 用户可以标记"认识"或"不认识"
3. 查看今日学习进度
## 不包含(Out of Scope)
- 用户注册登录
- 单词发音
- 多设备同步2. design.md(设计文档)
回答的问题:怎么做?
内容包括:
- 技术选型(用什么工具/框架)
- 数据结构(信息怎么组织)
- 页面结构(有几个页面,每个页面干什么)
示例(简化版):
# 背单词 App 设计文档
## 技术选型
- 纯前端实现,使用 HTML + CSS + JavaScript
- 数据存储:LocalStorage
## 数据结构
- 单词列表:[{ word: "apple", meaning: "苹果", status: "unknown" }, ...]
- 学习进度:{ total: 20, learned: 5, date: "2025-01-15" }
## 页面结构
1. 首页:显示今日进度,开始学习按钮
2. 学习页:卡片式展示单词,认识/不认识按钮
3. 结果页:今日学习总结3. tasks.md(任务清单)
回答的问题:分几步做?
把大目标拆成小任务,每个任务都是一次可以完成的事。
示例(简化版):
# 背单词 App 任务清单
## 第一阶段:基础框架
- [ ] 创建项目基本文件结构
- [ ] 实现首页 UI
- [ ] 准备 20 个测试单词数据
## 第二阶段:核心功能
- [ ] 实现单词卡片展示
- [ ] 实现"认识/不认识"按钮功能
- [ ] 实现进度统计
## 第三阶段:数据持久化
- [ ] 用 LocalStorage 保存学习记录
- [ ] 实现"继续昨天的进度"功能Spec Coding vs Vibe Coding 对比
| 维度 | Vibe Coding | Spec Coding |
|---|---|---|
| 启动速度 | 快,说干就干 | 慢,需要先写文档 |
| 适合项目规模 | 小(1-3 个功能) | 中大(5 个以上功能) |
| 代码质量 | 够用就行 | 相对规范 |
| 可维护性 | 低,改着改着可能乱 | 高,有文档可追溯 |
| 协作友好度 | 低,别人看不懂 | 高,文档是沟通工具 |
| 学习曲线 | 平,马上能上手 | 陡一点,要学写文档 |
一个类比
还是用出行来类比:
| 场景 | 你会怎么做? |
|---|---|
| 去楼下便利店 | 直接走(Vibe Coding) |
| 第一次去一个陌生城市旅游 | 先做攻略,列出要去的景点、路线(Spec Coding) |
简单任务,直接干;复杂任务,先规划。
常见问题
写文档好麻烦,能不能让 AI 帮忙?
完全可以。直接告诉 AI:"我想做一个背单词的应用,帮我写一份简单的需求文档,包括产品概述、目标用户、核心功能和不做什么。" AI 会给出初稿,在此基础上修改即可。
文档要写多详细?
够用就行。个人项目几行字的清单就够;团队项目需要把每个功能的输入输出写清楚;生产级项目则需要更专业的格式(超出本教程范围)。
Vibe 和 Spec 能混着用吗?
不仅能,而且推荐这样做。很多人的实际工作流是:先 Vibe Coding 快速搭原型 → 验证通过后补文档 → 后续迭代用 Spec Coding 方式。
小结
- Spec Coding 是"先规划,再动手"的 AI 编程方式
- 核心产物是三件套文档:需求、设计、任务清单
- 适合复杂项目、团队协作、长期维护的场景
- 可以和 Vibe Coding 混合使用
下一节详细讨论:如何判断什么时候用 Vibe,什么时候用 Spec?
