重塑 AI 编程范式!爆火开源项目 spec kit (GitHub万赞)一篇文章帮你搞懂

vibe coding 一大问题就是,绝大多数人,代码写着写着就会出现问题。

举个例子,你现在突然想到了一个非常不错的 idea。

然后立马打开编辑器,让 AI 凭感觉编程(Vibe Coding),项目刚刚开始的时候进展还挺顺利的,但是做着做着你就会发现开始陷入需求不明确、代码结构混乱、反复修改的泥潭。

所以这种即兴、缺乏规划的开发模式,无论是对于人类还是 AI 来说,都是不可靠的。

因此我们就会有一种更严谨、更具工程思维的方法,规范驱动开发。

1、规范驱动开发核心方法论

1.1 核心理念

规范驱动开发 (Spec-Driven Development, SDD) :先定义「做什么 」,再考虑「怎么做

为什么需要规范驱动开发

假如说你现在想要盖一栋房子,那么你不会直接就喊施工队过来施工,而是会让建筑师先画出详细的蓝图,这张蓝图就是规范(Specification,简称 Spec)【gzh:和平本记】

规范驱动开发的几个关键好处:

1)明确目标:有了规范文档,项目就拥有了清晰无歧义的目标

2)单一事实来源:这份规范成为了你(产品经理/架构师)和 AI(开发者) 之间的合约。所有人都围绕同一个目标工作,避免了沟通偏差和需求误解

3)减少返工:在编码前充分思考,识别出潜在问题和边缘案例,大大减少后期修改代码的成本

4)提高协作效率:AI 代理可以清晰地理解任务,甚至可以并行的执行多个任务,极大的提升了开发效率

2、Spec Kit 入门

Spec Kit 是 GitHub 上的一个开源项目,它是一个为规范驱动开发量身打造的命令行工具包。他通过一系列结构化的命令,引导你和 AI 完成一系列开发流程。

项目地址:

github.com/github/spec...

2.1 初始化

1)通过一行命令初始化你的项目

csharp 复制代码
uvx --from git+https://github.com/github/spec-kit.git specify init

2)选择一个 AI 助手

上面的初始化命令执行完之后会让你选择一个 AI 助手。我这里选择 Claude Code

选择一个脚本类型

因为我是 Mac 电脑,macOS 默认是用 /bin/bashzsh做 shell 的,这些都是 POSIX‐兼容的。所以我选择第一个。

3)初始化完成之后会得到一系列目录文件

  • scripts/:包含一系列自动化 Shell 脚本,用于创建分支、复制模板等,这是工具自动化能力的核心。
  • templates/:存放各类文档模板,用于保证 AI 生成内容的结构一致性。
  • memory/:存放项目的宪法(constitution.md),定义了项目不可违背的核心原则。

2.2 实际案例演示

假如我们现在需要开发一个,个人待办事项(To-Do List)的网页应用【gzh:和平本记】

1、头脑风暴

因为我们现在只有一个想法,并不知道这个产品的形态是什么样的。所以现在我们可以去找 ChatGPT 聊天,把我们关于产品的想法全部都倾倒给他。

让 ChatGPT 帮我们把零散的想法整理成一份清晰、初步的需求列表。这份需求列表就是我们下一步要输入给 Spec Kit 的原材料。

提示词:

markdown 复制代码
你好,我需要你帮我规划一个简单的个人待办事项(To-Do List)网页应用。我只是在进行头脑风暴,所以想法可能有点乱,请你帮我整理成一个结构清晰的初步需求列表。

我的想法如下:

1.  **核心功能**:我希望能添加新的待办事项,比如输入"学习 Spec Kit"然后就能加进去。
2.  **查看任务**:我需要能看到所有我添加的任务列表。
3.  **标记完成**:每个任务旁边应该有个复选框或者按钮,我点击了就能把它标记成"已完成"。已完成的任务应该看起来不一样,比如有删除线。
4.  **删除任务**:我可能添加了错误的任务,或者任务完成了就不想再看到了,所以我需要一个删除按钮。
5.  **界面风格**:我希望界面非常简洁、干净,有点像 Notion 那种现代风格。
6.  **数据存储**:刚开始,我不需要复杂的数据库。数据能保存在浏览器里就行,这样我刷新页面后任务还在。
7.  **技术方面**:嗯... 我对技术不太懂,但听起来用 React 或者类似的东西可能会不错?你觉得呢?

请帮我把这些想法组织成一个包含"核心功能"、"用户界面"、"技术考量"等部分的初步产品需求文档。文档要简洁明了,方便我后续交给一个 AI 开发代理。

结果:

ChatGPT 会给你输出一份文档,把这份文档保存下来。

2、运行 /specify 命令,生成工程规范

这一步我们把刚刚从 ChatGPT 那里获取的需求文档,喂给 Spec Kit。Spec Kit 内置的 AI 代理(我们之前选择的 Claude)会接手这份文档,并将其扩展成一份极其详细和专业的产品规范 (spec.md)。

具体操作:

在你的 AI 代理的命令行界面中,输入 /specify 命令,然后粘贴我们上一步从 ChatGPT 获得的全部需求文档内容。

这时候 AI 会开始分析你的需求,并运行 create-new-feature.sh 脚本。

最终产出:

1)如果你需求文档有写的模糊的地方,AI 会让你澄清,当所有问题都澄清后,AI 会告诉你规范创建成功。

2)项目的 specs 文件夹下面,已经生成了一份非常详细的 spec.md 文件。

3)你的 Git 仓库也自动创建并切换到了一个新分支。

注意:

1️⃣ 这个项目暂时不支持中文。如果生成中文内容会出现乱码。所以我们喂的需求文档要把它换成英文。

2️⃣ 如果生成的文档内容中包含 emoji** 表情,也会乱码,可以关注官方后续的 bug 修复

3、运行 /plan 命令,进行技术规划

当规范确定后,就进入了技术规划阶段。

在这个阶段,我们的目标是将「做什么 」(产品规范)转化为「怎么做 」(技术实现方案)。我们将使用 Spec Kit 的第二个核心命令 /plan

具体操作:

1)准备技术栈信息

向 AI 提供明确的技术栈选择,告诉它我们想用什么工具来构建这个应用。【gzh:和平本记】

我们将使用的技术栈列表:

  • 语言: TypeScript
  • 框架: Next.js 14 (使用 App Router)
  • UI 组件库: shadcn/ui
  • 样式 : Tailwind CSS (shadcn/ui 自带)
  • 数据存储: 浏览器 Local Storage** (用于 MVP 阶段)
  • 测试: Jest + React Testing Library

2)执行 /plan 命令

在你的 AI 代理的命令行界面中,输入 /plan 命令,然后,将我们上面准备好的技术栈信息粘贴在命令后面。

这时候 AI 代理会开始它的技术规划工作,AI 会告诉你它正在运行 setup-plan.sh 脚本。

首先读取我们之前生成的 spec.md 文件,以充分理解项目需求。

然后,它会结合你提供的技术栈信息,开始进行详细的设计。

在这个阶段,AI 通常不会再向你提问,因为它所需的所有信息(产品需求 + 技术选型)都已经完备了。

3)最终产出

当命令执行完成之后,你会看到新分支文件夹下面多出几个新文件:

plan.md: 这是最重要的产出。这份文件会详细描述,如何组织文件和文件夹(项目架构),会把 UI 拆分成哪些 React 组件(组件分解),描述数据如何在组件之间传递,以及如何与 Local Storage 交互(数据流)。

data-model.md: 这份文件会更具体地定义数据结构和数据库模式。

research.md: AI 会生成一份研究文档,记录它在技术选型或实现细节上的一些考量。

4、运行 /tasks 命令,生成可执行任务列表

具体操作:

在你的 AI 代理的命令行界面中,你只需要输入:

bash 复制代码
 /tasks

不需要提供任何额外的参数或文本,因为 AI 知道它需要去读取当前特性分支下的 spec.mdplan.md 等所有相关文档。

当你输入 /tasks 之后,AI 会开始执行check-task-prerequisites.sh 脚本,以确保所有需要的文件都已就位。

接着,AI 会系统性地阅读 plan.md, data-model.md, spec.md 等所有上下文文件。

然后,它会开始进行任务生成,将大的实现步骤(比如构建 UI 组件)分解成非常具体的小任务,比如创建 Button.tsx文件、创建 Input.tsx 文件、创建 TodoItem.tsx 组件等。

最终产出:

当命令执行完成后,AI 会给出一个总结,告诉你总共生成了多少个任务,分布在几个阶段中,以及有多少个任务可以并行执行。

然后我们回到 vscode** 就可以看到 task.md 这个文件

解释一下这个文件:

1)所有的任务都被分成了逻辑清晰的阶段

2)每个任务都有一个唯一的 ID,如 T001, T002

3)每一个任务都有非常具体的操作指令。例如:

sql 复制代码
T001 [P] Create Next.js 14 project with TypeScript and Tailwind CSS

4)并行标记

那些带有 [P] 标记的任务代表是相互独立的,可以并行执行

5)依赖关系

告诉你哪些阶段必须在前一个阶段完成后才能开始。

到这里 Spec Kit 的核心三步曲已经走完了,你现在拥有了一份机器可读、人也可读的、极其详尽的施工手册(tasks.md)。

5、实施与编码(最终执行)

现在我们可以让 AI 进行真正的编码工作了。

你可以复制 tasks.md 中的一个任务描述(例如 T001 [P] Create Next.js 14 project with TypeScript and Tailwind CSS),然后直接作为指令发给 AI 代理,它就会开始执行。

对于那些被标记为 [P] 的任务,你可以同时打开多个 AI 代理会话(或者使用 Claude Code 的子代理功能),把不同的并行任务分配给它们。

6、总结

通过上面这5步,我们完成了从一个模糊的想法,到一个结构化的需求,再到一个详细的技术计划,最后到一个可执行的任务列表,并最终产出代码的全过程。【gzh:和平本记】

3、FAQ

1、Spec Kit 可以为某个特定功能生成规范文档吗?

GitHub Spec Kit 的工具包可以为一个全新的、完整的项目制定开发规范,也可以用它来为现有项目中某个特定的新功能(例如,用户认证功能)制定开发规范

2、既然 Spec Kit 有 /specify /plan 命令,为什么还需要先用 ChatGPT 进行「规划」?这两者之间到底是什么关系?

我们可以把整个开发过程分成两个大的阶段:

1、人类主导的战略规划与创意构思

这是最开始、最模糊、最纯粹的头脑风暴阶段。在这个阶段你可能只有一个模糊的想法(比如我想要一个 CMS 系统),你需要把它变成一个相对清晰、有逻辑的产品概念。

这个阶段最适合由人类来主导,而 ChatGPT 这样的通用大语言模型,是这个阶段最好的对话伙伴和思维整理工具。

因为 ChatGPT 非常灵活,你可以用非常口语化甚至杂乱的语言和他对话,它能帮你把零散的想法整理成结构化的文本。

2、工具驱动的工程化实现

当你有了一个清晰的产品概念之后,接下来就是把它变成真正的软件。这个过程需要严谨的工程步骤:定义详细规范、设计技术架构、分解任务、编写代码。

这个阶段最适合由像 Spec Kit 这样的专业工具来主导。Spec Kit 本身并不是一个创意工具,它是一个工程框架。它的作用是接收一个已经相对明确的需求,然后以一个高度结构化、自动化的方式将其实现。

因为 Spec Kit 的 /specify, /plan, /tasks 命令被设计用来执行特定的工程任务(扩展规范、生成计划、分解任务),输出是可预测的、标准化的工程文档。

总的来说,specify和 plan 这两个命令确实能扩展你的想法,但是他们并不能完成完整的规划工作,所以,我们使用 ChatGPT 来帮助我们规划,ChatGPT 最终会给你提供一份需求文档,一旦你明确需求,就可以把它交给 spec kit ,以便将其扩展成一份完整的规格文档。

相关推荐
瑶琴AI前端2 小时前
【零成本高效编程】VS Code必装的5款免费AI插件,开发效率飙升!
前端·ai编程·visual studio code
蚝油菜花2 小时前
万字深度解析Claude Code的Hook系统:让AI编程更智能、更可控|下篇—实战篇
人工智能·ai编程·claude
yaocheng的ai分身16 小时前
【转载】Vibe Check:GPT-5 Codex 可以连续编程35分钟——如果你好好请求的话
ai编程
拳打南山敬老院1 天前
漫谈 MCP 构建之Resources篇
前端·后端·ai编程
玲小珑1 天前
LangChain.js 完全开发手册(九)LangGraph 状态图与工作流编排
前端·langchain·ai编程
yaocheng的ai分身2 天前
Agentic Engineering 实战
ai编程
RainbowSea2 天前
12. LangChain4j + 向量数据库操作详细说明
java·langchain·ai编程
RainbowSea2 天前
11. LangChain4j + Tools(Function Calling)的使用详细说明
java·langchain·ai编程
飞哥数智坊2 天前
GPT-5-Codex 发布,Codex 正在取代 Claude
人工智能·ai编程