16-Spec-Kit 是什么?先从整体流程机制讲起
Spec Kit 是什么?先从整体流程机制讲起
最近我在项目里开始尝试用 Spec Kit 管理 AI 协作开发。它不是让 AI 直接写代码,而是先把需求变成规格,再生成计划和任务,最后再进入编码。
这篇先不展开每个命令的细节,只简单聊一下 Spec Kit 的整体流程机制。后面我会一篇一篇拆开讲:
specify、clarify、plan、tasks、implement分别是怎么用的。
一、为什么需要 Spec Kit?
以前用 AI 写代码时,我经常会直接说:
帮我做一个忘记密码功能。
AI 通常会马上开始写代码。
但问题是,它可能还没完全理解项目背景,比如我的项目是一个 Monorepo 全栈博客项目:
claude/
├── apps/web/ # 前端 H5 应用
├── services/auth-service/ # 认证服务
├── services/backend/ # 博客主业务服务
├── services/log-service/ # 日志服务
└── packages/shared-logging/ # 共享日志包
如果没有提前约束,AI 可能会出现这些问题:
- 忘记密码代码写到了错误的服务里
- 前端页面没有按项目结构拆分
- 忽略了 HttpOnly Cookie、密码加密等安全规则
- 需求边界没说清楚,写着写着范围变大
- 最后只剩代码,看不出每一步是怎么来的
所以我需要的不是“AI 立刻写代码”,而是让 AI 先把事情想清楚。
Spec Kit 做的就是这件事。
二、Spec Kit 的核心思路
Spec Kit 的核心可以理解为:
先规格化,再计划化,再任务化,最后编码。
也就是把一句自然语言需求,逐步变成下面这些产物:
一句需求
↓
spec.md # 需求规格书
↓
clarify # 澄清不明确需求
↓
plan.md # 实现计划
↓
tasks.md # 任务清单
↓
代码实现
它更像是一套 AI 协作开发流程,而不是单纯的代码生成工具。
三、整体流程长什么样?
Spec Kit 常见流程大概是这样:
用户描述需求
↓
/speckit-specify
↓
生成 spec.md
↓
人工检查需求是否正确
↓
/speckit-clarify
↓
补充澄清不明确的问题
↓
/speckit-plan
↓
生成 plan.md
↓
人工检查技术方案是否合理
↓
/speckit-tasks
↓
生成 tasks.md
↓
/speckit-implement
↓
AI 按任务写代码
这里最关键的不是命令本身,而是中间多了几个“审核门”。
以前是:
需求 → 代码
现在变成:
需求 → 规格 → 计划 → 任务 → 代码
这会让 AI 开发过程更可控。
四、每个阶段大概负责什么?
1. specify:把需求说清楚
specify 阶段会生成 spec.md。
它主要回答:
- 要做什么功能?
- 谁会使用这个功能?
- 用户在什么场景下使用?
- 验收标准是什么?
- 哪些内容不在本次范围内?
比如“忘记密码功能”,在这个阶段只需要先说清楚:用户通过手机号验证码重置密码,不需要一上来就讨论数据库表和 Controller。
2. clarify:把模糊问题问清楚
clarify 阶段一般发生在 specify 之后、plan 之前。
它主要用来发现需求里还没说清楚的地方,比如:
- 验证码有效期是多久?
- 忘记密码成功后是否自动登录?
- 请求验证码是否需要图形验证码?
- 同一个手机号多久可以重新发送一次?
这些问题如果不提前问清楚,后面生成 plan.md 时就只能靠 AI 猜。
所以 clarify 的作用就是在进入技术设计前,先把关键业务规则补齐。
3. plan:把实现方案说清楚
plan 阶段会生成 plan.md。
它主要回答:
- 这个功能要改哪些系统?
- 前端放哪里?后端放哪里?
- 是否涉及数据库、接口、缓存、认证?
- 是否符合项目已有技术规范?
以我的项目为例,忘记密码属于认证能力,后端应该放在:
services/auth-service/
前端页面则应该放在:
apps/web/
这一步可以避免 AI 把代码写错地方。
4. tasks:把计划拆成任务
tasks 阶段会生成 tasks.md。
它主要把实现计划拆成一条条可执行任务,比如:
- [ ] 确认 auth-service 中用户密码字段
- [ ] 新增请求验证码接口
- [ ] 新增重置密码接口
- [ ] 前端新增忘记密码页面
- [ ] 登录页增加忘记密码入口
- [ ] 执行 lint 和类型检查
这样 AI 后续执行时就不是“想到哪写到哪”,而是按任务推进。
5. implement:按任务写代码
implement 阶段才是真正进入编码。
它会根据前面生成的 tasks.md 一项项实现功能。
也就是说,Spec Kit 并不是不写代码,而是把写代码放在最后一步。
五、我觉得 Spec Kit 最大的价值
对我来说,Spec Kit 最大的价值不是“生成了几个 Markdown 文件”,而是它让 AI 协作过程变得可追踪。
以前 AI 写完代码后,我可能需要反过来问:
- 你为什么这么设计?
- 这个接口为什么放这里?
- 这个需求有没有考虑边界?
- 这个任务做到哪一步了?
用了 Spec Kit 后,这些问题会提前体现在文档里:
| 阶段 | 产物 | 作用 |
|---|---|---|
| specify | spec.md | 初步整理需求规格 |
| clarify | 更新 spec.md | 澄清不明确的业务规则 |
| plan | plan.md | 确认技术方案是否合理 |
| tasks | tasks.md | 确认任务是否可执行 |
| implement | 代码 | 按任务落地实现 |
尤其是像 Monorepo 这种多系统项目,Spec Kit 可以帮我提前确认修改范围,避免 AI 随意跨服务改代码。
六、什么时候适合用 Spec Kit?
我目前的感觉是:
适合用:
- 新功能开发
- 前后端联动功能
- 涉及多个模块或服务
- 涉及认证、安全、权限等关键逻辑
- 希望保留需求和设计记录的功能
不一定需要用:
- 改一个文案
- 修一个很小的样式问题
- 一两行代码能解决的小 bug
简单说,需求越复杂、影响范围越大,Spec Kit 越有价值。
七、总结
Spec Kit 的流程可以用一句话概括:
不要让 AI 一上来就写代码,先让它把需求、方案和任务讲清楚。
整体链路是:
/speckit-specify → spec.md
/speckit-clarify → 澄清需求并更新 spec.md
/speckit-plan → plan.md
/speckit-tasks → tasks.md
/speckit-implement → 代码实现
这篇只是一个总览,先把整体机制讲清楚。
后面我会继续拆开写:
speckit-specify:如何把一句需求变成规格文档speckit-clarify:如何补充澄清不明确的需求speckit-plan:如何生成技术实现计划speckit-tasks:如何拆出可执行任务speckit-implement:如何按任务真正落地代码
如果你也经常用 AI 写项目代码,但遇到过“写得很快、改得很累”的情况,Spec Kit 这种流程化方式还是很值得试一下的。