重塑 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 ,以便将其扩展成一份完整的规格文档。

相关推荐
该用户已不存在23 分钟前
免费的 Vibe Coding 助手?你想要的Gemini CLI 都有
人工智能·后端·ai编程
一只柠檬新2 小时前
当AI开始读源码,调Bug这件事彻底变了
android·人工智能·ai编程
用户4099322502124 小时前
Vue 3中watch侦听器的正确使用姿势你掌握了吗?深度监听、与watchEffect的差异及常见报错解析
前端·ai编程·trae
yaocheng的ai分身5 小时前
【转载】我如何用Superpowers MCP强制Claude Code在编码前进行规划
ai编程·claude
重铸码农荣光6 小时前
从逐行编码到「氛围编程」:Trae 带你进入 AI 编程新纪元
ai编程·trae·vibecoding
Juchecar6 小时前
利用AI辅助"代码考古“操作指引
人工智能·ai编程
Juchecar7 小时前
AI时代,如何在人机协作中保持代码的清晰性与一致性
人工智能·ai编程
玲小珑8 小时前
LangChain.js 完全开发手册(十八)AI 应用安全与伦理实践
前端·langchain·ai编程
飞哥数智坊8 小时前
11月12日,TRAE SOLO 正式版发布
人工智能·ai编程·solo
前端双越老师9 小时前
等 AI 编程普及后,我该何去何从?
人工智能·ai编程