GitHub Spec Kit:先写活的规格,再让 Agent 写代码

Vibe coding 的常见失败不是模型不够强,而是一句话需求被 Agent 自由发挥。GitHub 开源的 Spec Kit 把开发收成「规格驱动」:先定项目宪法、写清做什么、澄清歧义、再选技术与拆任务,最后才实现。官方仓库 github/spec-kit 为 MIT 许可,可接入 Copilot、Claude Code、Cursor、Codex、Gemini CLI 等大量编码 Agent。它提高的是约束与可审查性,不是一键出完美产品。

有一条传播很广的判断:GitHub 用 Spec Kit「杀死了 vibe coding」。

更准确的说法是——它没有禁止你用自然语言写软件,而是把「先聊天再碰运气」改成「先留下一份 Agent 必须遵守的规格」。模型还是那个模型,变的是输入结构。

仓库:https://github.com/github/spec-kit
文档入口:https://github.github.com/spec-kit/quickstart.html

官方定位是 Spec-Driven Development(规格驱动开发)工具包:规格不只是给人看的文档,而是后续计划、任务和实现要对照的活产物。MIT 许可。Star / Fork 数字在持续涨(传播帖里写过 9.5 万星;仓库页面之后更高),热度本身说明「Agent 老跑偏」是普遍痛点,不说明装上就能代替工程判断。

问题不在模型,在「一句想法」

常见流程是:

「帮我做个待办 App。」

Agent 自己补全用户是谁、要不要登录、数据存在哪、测什么、什么叫做完。补全的过程不可见,半路改需求就整段重写,上下文一长就开始忘约束。

Spec Kit 把顺序拧过来:

先冻结「做什么、为什么、质量底线」,再允许选栈和写代码。

这和传统 PRD 的差别在于:规格被切成 Agent 斜杠命令能读写的仓库内文件(constitution、spec、plan、tasks),每一步有输入、有产出、有门禁。

命令在干什么

初始化后,多数 Agent 里用 /speckit.*(部分 CLI 用 $speckit-*)。官方完整路径比传播帖更长:

短路径(小功能)
specify → plan → tasks → implement → converge

完整路径(更认真的功能)
constitution → specify → clarify → plan → checklist → tasks → analyze → implement → converge

对应含义:

命令

作用

/speckit.constitution

项目宪法:质量、测试、架构原则。后面每步都对照它

/speckit.specify

用自然语言写做什么、为什么,先不锁死技术栈

/speckit.clarify

Agent 先问清楚含糊点,而不是猜

/speckit.plan

这时才选技术、写实现方案与设计产物

/speckit.checklist

给规格做完整性检查,像「需求的单元测试」

/speckit.tasks

按依赖拆成可执行任务

/speckit.analyze

规格 / 计划 / 任务之间的一致性与覆盖

/speckit.implement

按任务实现

/speckit.converge

对照规格看还差什么,补回任务列表

传播帖里的 /speckit.clarity 官方名称是 clarify。相差一个词,用错命令会找不到技能。

核心交付从「一堆生成代码」变成:一套能被下一跳 Agent 读到的规格与计划,代码只是最后一跳。

为什么这比纯对话稳

  1. 职责分离
    产品意图在 specify,技术决策在 plan,避免「一句话里既改需求又换框架」。
  2. 可审查
    constitution 和 spec 是文件,人可以改,也可以在 implement 前否决。官方 workflow 甚至在 specify、plan 后设 approve/reject 门。
  3. 可重复
    换一个 Agent(Copilot、Claude Code、Cursor、Codex、Gemini CLI 等,文档称可接几十种),读的是同一套仓库产物,而不是某次聊天的记忆。
  4. 约束幻觉的位置
    模型仍会编,但编造被挤到「澄清与计划」阶段,比直接在业务代码里编更好拦。

它解决的是编排,不是智能本身。规格写错,实现会很忠实地错下去。

怎么开始(概念层面)

文档推荐用 uv 安装 CLI,再在项目里 specify init,并指定一种 integration(例如 Copilot)。需要 Python 3.11+ 和 Git。

之后不要一上来 /speckit.implement。最小有纪律的循环是:

  1. 写几条真会执行的 constitution(测试、安全、目录约定),不要写成壁纸口号。
  2. specify 只讲用户可感知行为。
  3. 自己读一遍 spec,再 clarify。
  4. plan 时才扔栈(语言、数据库、部署)。
  5. tasks 细到「一次 Agent 会话能做完」。
  6. implement 后用 converge 对账,而不是口头说「应该齐了」。

小脚本、一次性探索,不必走满九步。规格流程有成本:多几轮模型调用、多一批 markdown。收益出现在功能会活过两周、会换人或换 Agent 的时候。

「GitHub 宣布 vibe coding 已死」过满了

Vibe coding 不会消失:探索 API、画原型、扔草稿,一句话仍然最快。
Spec Kit 适合的是:已经知道要交付什么、不能接受每次重开聊天就漂移的工作。

它也不是自治公司操作系统。没有自动找客户、没有自动收款。它只把「软件怎么被说明、怎么被拆、怎么被实现」收进仓库。

若规格很空、constitution 从不过问,Agent 照样会在 implement 阶段即兴发挥——只是即兴发生在更晚、文档更多的仓库里。

小结

Spec Kit 的判断是:长程 Agent 任务里,最贵的不是 token,是方向错误的 token。
先留下 constitution 和 spec,再 plan、tasks、implement,让模型和人对着同一份「活规格」干活。

仓库:https://github.com/github/spec-kit

下次想打「帮我做个 App」之前,可以先问自己:有没有一份足够清楚、Agent 读完不会靠猜的说明。有,再用实现命令;没有,多半不是缺一个更强的模型,而是缺这一步。

No comments yet