大家都觉得软件开发一定要先画需求文档、再写代码、后面再补测试,流程一路走来像是循规蹈矩的官僚体系。其实,这套流程本身藏着不少坑:需求写得模糊,设计随意改动,代码写完才发现根本不符合预期,返工的成本像滚雪球一样越滚越大。
实际上,最大的问题不是技术本身,而是信息在各个阶段的丢失和误传。Spec‑Kit 通过把“要干嘛”和“怎么干”彻底拆开,让每一步都有明确的产物、明确的检查点,整个过程像是给项目装了一个“防走失的背包”。下面,我把核心思路抽丝剥茧地讲清楚,然后用大白话把它们塞进实际的开发流程里,让普通开发者也能像逗猫一样玩转它。
一、核心本质:先写规范再写代码
大家都觉得代码是项目的核心,规格只是帮忙的附属。实际上,规格才是根本——它决定了最终的功能、性能和用户体验。Spec‑Kit 把规格做成了可执行的文档,所有后续的计划、任务、实现都必须围绕它转。
- 先写 宪法(Constitution),相当于给项目立规矩,明确技术选型、代码风格、安全要求等底线。
- 再写 规格(Spec),只描述「要做什么」和「为什么要这么做」,不掺技术细节。
- 随后进行 澄清(Clarify),把规格里不明确的地方一次性问清。
- 接着出 技术方案(Plan),把技术选型、架构、数据模型、接口契约都写进去。
- 再拆 任务清单(Tasks),把计划细化成可执行的小块,每块标明依赖和测试类型。
- 最后让 AI 实现(Implement),按照任务顺序自动生成代码、测试、文档。
这套链条的关键是:每一步都有明确的输入输出,AI 只负责把已有的、已经达成共识的内容往下搬运,避免了“一句话=直接写代码”的盲目跳跃。
二、为什么传统办法会把人逼疯
大家都觉得需求写得多了,代码就会写得好。实际上,需求往往是口头的、半成品的。缺点主要体现在:
- 需求变更时没有痕迹,谁改了什么、为什么改,往往只能靠记忆。
- 技术选型和实现细节在需求阶段就被提前决定,导致后面大量返工。
- 任务拆分散落在开发者脑子里,缺乏统一的依赖管理,常常出现“我先实现这个,结果后面依赖的模块还没写”。
这些痛点让团队在迭代中不断加班、不断争论,效率直线下降。
三、把 Spec‑Kit 的流程搬进真实项目
下面用一个普通的“照片管理小程序”案例,演示从 0 到实现的每一步怎么走。全程不需要写任何代码,只是和 AI 对话、敲几条指令。
1. 建立宪法
先在项目根目录里跑 /speckit.constitution,把团队的底线写进来:
- 只使用原生 HTML/CSS/JS,最小依赖。 - 所有代码必须覆盖率 80% 以上的单元测试。 - 界面响应时间 < 200ms,图片不上传外部服务器。 - 数据只能保存在本地 SQLite,禁止云端同步。
这些规则会被保存到 .specify/memory/constitution.md,后面的所有生成都会自动检查是否违背。
2. 写规格——只说要干什么
接着用 /speckit.specify 把功能需求说清楚:
用户可以创建相册,按日期自动分组;相册可以在主页面拖拽排序;每个相册内部以瓷砖方式展示照片;相册之间不能出现嵌套。
AI 会把这段话拆成用户故事、功能点、验收标准,生成 specs/001-photo-album/spec.md。
3. 澄清不确定的细节
如果规格里出现了“自动分组”这种模糊描述,/speckit.clarify 会列出待回答的问题:
- 分组的颗粒度是天、月还是年?
- 拖拽时是否需要动画效果?
- 图片元数据保存在什么表?
把答案填回去后,规范文档会自动更新,后续的计划再也不会出现“这部分是谁决定的?”的尴尬。
4. 生成技术方案
把技术选型告诉 AI:/speckit.plan 输入「使用 Vite + 原生 JS,图片元数据存 SQLite,本地文件系统读取」。
AI 随即输出:
- 项目结构图(src、assets、db 等文件夹划分)。
- SQLite 数据表设计(album、photo 两张表)。
- API 合约(增删改查的接口文档)。
- 前端模块划分(AlbumList、PhotoGrid、DragHandler)。
所有内容分别写进 plan.md、data-model.md、contracts/api-spec.json。
5. 拆任务清单
执行 /speckit.tasks,AI 会把每个模块细化成 10 余条任务,例如:
- T01: 初始化项目并安装 Vite(依赖:无) - T02: 创建 SQLite 数据库脚本(依赖:T01) - T03: 实现相册增删接口(依赖:T02) - T04: 编写 AlbumList 组件(依赖:T01) - T05: 为 AlbumList 添加拖拽排序(依赖:T04) - T06: 编写 PhotoGrid 组件并加载图片(依赖:T03) - T07: 为 PhotoGrid 添加响应式布局(依赖:T06) - T08: 编写单元测试覆盖每个增删改查接口(依赖:T03) - T09: 编写 UI 自动化测试覆盖拖拽交互(依赖:T05)
每条任务都标注了依赖和测试类型,后面实现时 AI 能自动按序执行。
6. 实现代码
只需要敲 /speckit.implement,AI 会依次打开终端、跑脚本、生成文件、写测试,完成后在终端给出进度报告。开发者只要审查生成的代码是否符合审美、是否满足安全规则(比如没有意外引入第三方库),就可以直接提交。
四、实战技巧:让 Spec‑Kit 更好用
大家都觉得使用新工具会很复杂,实际上只要把下面几个小技巧养成习惯,痛点会瞬间消失:
- 宪法先行,且写得具体。越明确的约束,AI 越不会“跑题”。比如写明「禁止使用任何 CDN」而不是「尽量少依赖”。
- 一次澄清,全部搞定。在
/speckit.clarify阶段,尽量把所有不确定点一次性列出来,别等到计划阶段才来补。 - 任务粒度控制在 1–2 小时内。太大的任务会让 AI 失去上下文,生成的代码质量下降。
- 每轮实现后跑
/speckit.analyze。它会对比规格、计划、任务,确保没有遗漏或冲突。 - 把生成的文档纳入代码审查。即使 AI 已经写好代码,人工也要检查一次,尤其是安全、性能相关的细节。
五、对普通开发者的意义
真正的价值在于:
- 大幅降低需求误解的概率,团队成员只要看同一套
spec.md就能知道要干什么。 - 把枯燥的重复劳动交给 AI,开发者可以把时间花在“怎么让产品更好用”上。
- 新手上手只需要学会几条指令,就能跟老手一样产出结构化、可追溯的代码。
- 项目的每一次迭代都有完整的变更记录,从
spec到plan再到tasks,全链路可追溯。
换句话说,Spec‑Kit 把“写代码”这件事从“一次性大跃进”变成了“一步一步搭积木”。只要每块积木都稳固,最后的塔自然高大且不容易倒。
如果你已经在用传统的需求‑代码‑测试三段式,建议挑一个小功能、试着走完整套 Spec‑Kit 流程。等到看到返工率下降、沟通成本变低、交付速度提升时,你会明白这套工具不是锦上添花,而是把软件开发的根基重新铺平的一把钥匙。
🚀 让规范驱动开发不再是概念,而是日常工作的一部分,才是真正把 AI 助手变成“左膀右臂”的关键。