上手 GitHub 官方 Spec Kit:AI 编码别再裸奔,先写 spec 再出码,SDD规约开发

@toc

一、先说痛点:AI 写代码翻车,八成翻在需求传递上

后端同学大概率经历过的场景。

你跟 AI 说:"帮我加个退款接口。"

它唰唰唰生成一整套 controller、service、异常处理,编译能过、测试能过、跑起来也没毛病。上线第二天运营来找你:用户把已经发货的订单也退了。

代码没 bug。坑出在那句 prompt 里压根没提"发货状态"这四个字。

AI 没有失败在写代码上,它失败在猜你心思上。写得越快,方向跑偏得越快,返工的时候你甚至说不清当初想要什么。这在传统软件工程里有名字,叫需求问题;到了 AI 编程时代,它被放大了十倍,因为 AI 会一丝不苟地实现你含糊的意图,包括错误的部分。

GitHub 官方的 Spec Kit 就是冲着这个问题来的。

二、Spec Kit 是什么

先上项目卡片:

项目 信息
仓库 github/spec-kit
出品方 GitHub 官方
协议 MIT
热度 14.8 万+ Star,周增 4000+(2026-11 数据)
最新版本 v1.3.1
定位 规格驱动开发(Spec-Driven Development, SDD)工具包

它的核心理念一句话:先定义"做什么、为什么",再让 AI 决定"怎么做"。

传统开发里 spec 是写完就扔的脚手架。Spec Kit 把它变成一条可执行的产物链:

复制代码
constitution.md → spec.md → plan.md → tasks.md → 代码 → converge 对账

每个阶段产出一个 Markdown 文件,喂给下一阶段的 agent。spec 不再是文档,是事实来源。

它由两部分组成:

  1. specify CLI(Python 写的):负责项目脚手架、集成管理;
  2. 一组斜杠命令 :装进你的 AI 编码工具里,像 /speckit-specify 这样一条条跑。

支持的 agent 相当全:Claude Code、GitHub Copilot、Codex、Gemini CLI、Cursor、Cline、opencode、Qwen Code、Kiro CLI、Zed 等 20+,还有 generic 兜底模式,自己接任何工具都行。

三、十分钟上手:安装与初始化

要求:Python 3.11+、uv、任意一个支持的编码 agent。

bash 复制代码
# 安装 CLI
uv tool install specify-cli

# 初始化项目(以 Claude Code 集成为例)
specify init my-project --integration claude

# 已有项目在当前目录初始化
specify init . --integration claude

# 检查环境
specify check

初始化完成后,项目里多出一个 .specify/ 目录,AI 工具那边多出一组 skill。目录长这样:

text 复制代码
my-project/
├── .specify/
│   ├── memory/
│   │   └── constitution.md    # 项目"宪法"
│   ├── templates/             # spec/plan/tasks 模板
│   └── scripts/               # 辅助脚本(sh/ps/py 三种)
├── .claude/skills/            # 斜杠命令对应的 skill(按集成的工具不同)
└── specs/                     # 每个功能一个目录,产出物都在这

一个小提醒:官方安装时会提示把 .claude/ 之类的 agent 目录加进 .gitignore,有些工具会把本地私密配置写进去,别连着密钥一起提交了。

四、完整工作流:六步走一遍

命令一次敲一条,看完产物再敲下一条,这是官方 README 反复强调的节奏。下面用一个 FastAPI 小服务(订单查询接口)当例子,看看每一步实际产出什么。

4.1 /speckit-constitution:先立宪法

text 复制代码
/speckit-constitution
项目原则:1) 所有接口必须有参数校验和明确错误码;2) 数据层用 SQLite WAL;
3) 每个功能先写测试;4) 代码里不允许出现真实生产数据。

agent 会把这几条写进 .specify/memory/constitution.md,以后每一步都会回读它。这一步全项目只做一次,相当于给 AI 划红线:之后不管哪个 agent 干活,都不能违背这些原则。

为什么这步值钱:多 agent 并行的人都有体会,同一个规范口头说三遍,三个 agent 能给你三种理解。落到文件里,就是一份人人遵守的硬约束。

4.2 /speckit-specify:只谈业务,不谈技术

text 复制代码
/speckit-specify
做一个订单查询功能:按订单号查详情,支持分页查列表;
已取消订单(30 天前)不出现在列表里,但单查还能查到,并标记"已过期"。

产出 specs/001-order-query/spec.md,里面是结构化的用户故事、编号的功能需求(FR-1、FR-2......)和边界情况清单。注意这个阶段不要写技术栈,一旦过早进入"怎么实现",伪约束会污染规格。

spec 里最有价值的部分往往是边界情况。拿我这个例子说,agent 会主动列出:订单号不存在返回什么?分页翻到没有数据的页返回什么?"30 天前"按创建时间算还是取消时间算?

4.3 /speckit-clarify:逼 AI 把模糊处问出来(可选但强烈推荐)

text 复制代码
/speckit-clarify

这一步 agent 会反问你,一次最多五个问题,把 spec 里模糊的点问成明确结论,答案写回 spec。退款限不限发货状态、任务 ID 删了能不能复用,这些"没人想拍板的决策"全在这一步摊牌。

写代码前把话说死,比写完代码再吵便宜得多。

4.4 /speckit-plan:这时才谈技术

text 复制代码
/speckit-plan
用 FastAPI + SQLite(WAL),单文件部署,接口返回统一结构 {code, msg, data}。

产出 plan.md,外加数据模型(data-model.md)、接口契约(contracts/)、技术调研记录。技术决策在这一步写实,且会回头对照宪法做合规检查。

4.5 /speckit-tasks:拆成带依赖的任务清单

产出 tasks.md:任务按用户故事分组、按依赖排序、每个任务带独立验收标准。测试任务会排在对应实现任务前面。

对做过多 agent 并行开发的人来说,这份文件就是最规范的"拆任务产物",可以直接按任务分派给不同 agent。

4.6 /speckit-implement:照单干活

agent 按任务顺序实现,每完成一个勾一个。真跑过的公开实测(一个命令行 todo 应用)里,implement 产出 109 行代码 + 14 个测试,全绿。

4.7 /speckit-converge:拿代码对账,这是全场最有价值的一步

上面的 todo 实测里有个细节值得单独说:implement 结束,14 个测试全过,看起来完美。结果一跑 converge:

  • 它拿代码逐条对照 spec.md / plan.md / tasks.md;
  • 抓出一个测试完全没覆盖的坑:spec 要求"存档文件损坏时给出清晰错误提示且不能被覆盖",实际代码遇到损坏文件直接抛 Python 异常崩掉;
  • 把差距追加 成新任务(append-only,不改已有代码),再跑一轮 implement,直到报告 Converged。

人 review 代码,看的是代码本身;converge 对的是需求原文。两条视线交叉,漏网的才少。另一个带真实业务规则的预约系统实测里,converge 和 analyze 抓到的都是"测试没问到的缺口",恰好是平时最容易带病上线的那类问题。

全部走完后,一个功能的产物长这样:

text 复制代码
specs/001-order-query/
├── spec.md          # 需求:用户故事 + FR + 边界情况
├── plan.md          # 技术方案
├── data-model.md    # 数据模型
├── contracts/       # 接口契约
├── quickstart.md    # 本地跑通指引
└── tasks.md         # 任务清单(含 converge 追加的任务)

五、我的判断:价值在两个环节,不在模板

用下来我的结论是,Spec Kit 的卖点容易被理解偏。它不是"又一套文档模板",模板谁都能抄,抄完该漏还是漏。真正值钱的是:

  1. clarify 的追问机制:它逼着你在写代码之前,把那些"所有人都以为别人会考虑"的决策摆上台面。有价值的不是第一版 spec,是它被追问之后留下来的那一版。
  2. converge 的收敛循环:传统"AI 写完我人肉 review"缺的那半环。append-only 的设计也很克制,发现问题只追加任务不动代码,避免了"AI 为了过检查偷偷改代码"的新坑。

同时也要泼盆冷水:spec 错了,代码会忠实地错下去。converge 只能告诉你"代码完美符合这份 spec",不能告诉你 spec 本身对不对。这件事,永远得人来。

六、对照我自己的工作流:哪些作业值得抄

我自己日常是重度多 agent 用户,习惯的打法是先搭框架,再把活拆成文件丢给多个 agent 并行跑。拿 Spec Kit 的六步一对照,结论有点扎心:

环节 Spec Kit 我的流程
项目规范 constitution.md 书面版 全在脑子里和记忆文件里
需求 spec.md + clarify 追问 口头描述,经常一句"做个 XX"
拆任务 tasks.md 带依赖 + 验收标准 拆文件靠经验,验收标准含糊
验收 converge 代码对账 agent 交付什么我看什么
并行 任务天然可分派 我的核心优势,这块我不换

也就是说,我只手搓了它的中间一段:specify 和 tasks 干了,constitution 没有书面版,converge 压根不存在。并行跑得越快,收尾那个没验收标准的口子漏得越多。

所以我打算分两步抄作业,不照搬全套:

  1. 先给项目补一份自己的 constitution:脱敏规则、分支规范、测试要求,几条就够;
  2. 拆任务前,把口头描述换成带验收标准的 spec 段落,重点给并行的任务块补上"什么算完成"。

七、什么时候别用它

一个跑过完整流程的实测作者的结论我非常认同:用消除歧义所需的最小严格度。每个功能产出十来个文档文件,仪式感是有成本的。我的划分:

场景 建议
探索性脚本、一次性数据处理 别用,直接让 AI 写
一小时内能修完的小改动 别用,口头说清楚就行
多 agent 并行的功能块、要上线的业务逻辑 值得用,重点用 specify + tasks + converge 三步
从 0 到 1 的新项目 全流程走一遍,宪法一次管到底

八、命令速查表

命令 作用 必须吗
/speckit-constitution 立项目原则,全项目一次 是(一次)
/speckit-specify 需求 → spec.md,只谈 what/why 是
/speckit-clarify 反问澄清模糊点,写回 spec 强烈推荐
/speckit-plan 技术方案 → plan.md + 契约 是
/speckit-tasks 拆任务,带依赖和验收 是
/speckit-analyze 只读检查 spec/plan/tasks 一致性 可选(质量门)
/speckit-implement 按任务实现 是
/speckit-converge 代码对账 spec,追加差距任务 是(循环到 Converged)

九、常见问题

Q:必须用 GitHub Copilot 吗? 不用。它对 agent 是中立的,Claude Code、Codex、Cursor、opencode 等 20+ 都行

Q:和传统 PRD 什么关系? PRD 是写给人看的参考,SDD 的 spec 是给 agent 执行的事实来源,带编号、带验收标准、可 diff 可追溯。

Q:spec 要不要一直维护? 要。代码改了 spec 不改,converge 会一直报差距。把它当测试用例看待:改需求先改 spec。

十、写在结尾

它至少说明一件事:大家用 AI 写代码的痛点,已经从"写不出来"转移到了"写出来的不是我想要的"。

Spec Kit 干的活,说到底是把那句老话往前挪了一步:**garbage in, garbage out。含糊的需求进,忠实的垃圾代码出。**它管不了你要什么,但能管住 AI 交付的东西和你说的一致。

参考链接:


觉得有用的话点个赞 + 收藏,评论区聊聊你的 AI 编码工作流。

相关推荐
Lucas_coding14 分钟前
【Agent】Agent 知识地图:核心概念、工程方法与产品生态
人工智能
方方洛14 分钟前
ray教程-28-附录G-CICD与Slurm与云上调度
人工智能·分布式·机器学习
疯华整猫29 分钟前
混淆起初根本不是为了防破解:我用 Trae 把 Android 混淆这二十来年重跑了一遍
android·人工智能·计算机视觉
Kari1132 分钟前
企业大模型RAG知识库从0到1搭建指南:腾讯云ADP+JOTO实战
人工智能·云计算·腾讯云
深蓝AI32 分钟前
GPT-6.1 Terra 在 Bedrock 全面可用:便宜一半快三倍,日常任务选型要重算
人工智能·程序员
用户29914221968039 分钟前
AI 日报(2026年11月9日)
人工智能
用户29914221968040 分钟前
GitHub 热榜项目:日榜(2026-11-09)
人工智能·开源·github
卷无止境1 小时前
百万 token 时代的真相:主流大模型上下文窗口与最大输出的横向对比分析
人工智能·python
测试界的小码农1 小时前
【 AI Agent 软件测试实战(05):任务规划与状态管理,让 Agent 学会拆解复杂测试任务】
人工智能·测试工具