告别“氛围编程”:用 Spec-Kit 实践规格驱动开发
如果你最近逛技术社区,大概率见过 “vibe coding”(氛围编程)这个词,它调侃的是一种高度依赖直觉、临时沟通和“感觉对了就行”的开发方式:需求靠 Slack 消息传递,设计靠白板涂鸦,代码靠“我觉得应该这样写”。
在 AI 编程助手普及的今天,vibe coding 的风险被进一步放大:当你对 Claude Code 说“帮我写个待办应用”,它确实会写,但可能用上你不允许的框架、忽略持久化、没有测试,甚至风格混乱。AI 忠实地执行了你的模糊指令,却产出了一堆技术债。
如何让 AI 成为可靠协作者,而非“自由发挥的实习生”?答案是:用 Spec-Kit 为 Claude Code 提供结构化输入与明确边界。
Spec-Kit 是 GitHub Next 团队开源的一套命令行工具包,它推动一种名为 规格驱动开发(Specification-Driven Development, SDD) 的新范式——用清晰的规格取代模糊的 vibe,用可验证的约束取代随意的发挥。本文将带你从零上手,掌握这一 Claude Code 的高阶用法。
从 Vibe Coding 到 Spec-Driven Development
维度 | Vibe Coding(氛围编程) | Spec-Driven Development(规格驱动开发) |
---|---|---|
需求表达 | 口头、零散、易变 | 结构化 spec.md ,唯一事实源 |
技术边界 | 无明确约束,依赖个人经验 | 显式 constitution.md ,定义架构约束 |
AI 输出 | 不可预测,风格/技术栈随意 | 在约束内派生,符合团队规范 |
可维护性 | 低,文档滞后或缺失 | 高,文档与代码协同演进 |
Spec-Kit 的核心,就是通过两个文件终结 vibe coding:
spec.md
:回答 “做什么?” —— 用户能执行哪些操作?系统应如何响应?constitution.md
:回答 “不能怎么做?” —— 禁止哪些依赖?必须遵循什么规范?
这两个文件共同构成 Claude Code 的“任务契约”,确保生成的代码既满足功能,又符合工程标准。
安装与国内访问准备
1. 安装 Spec-Kit
推荐使用 uvx
(来自 uv)运行,避免环境污染:
|
|
2. 配置 Claude Code(国内用户)
由于 Anthropic 服务在国内不可直连,需通过 API 中转,具体配置方式可以参考我另外一篇文章 《Claude Code 使用指南》
配置完成后,Spec-Kit 即可调用 Claude Code 生成代码。
核心机制:规格与约束如何引导 AI
Spec-Kit 通过以下流程将 vibe 转化为可靠实现:
-
定义规格(
/speckit.spec
)
用自然语言描述功能行为,如:“用户可通过todo add "Buy milk"
添加任务”。 -
设定约束(
/speckit.constitution
)
明确技术边界,如:“必须使用argparse
”“数据存为 JSON”“需包含类型提示”。 -
自动派生实现(
specify implement
)
Claude Code 在约束范围内,从规格中派生出代码、测试与文档。
整个过程避免了人工转译的损耗,也杜绝了 AI 的“过度创意”。
实战:告别 vibe,构建可靠 To-Do CLI
目标
创建 todo
命令行工具,支持 add
、list
、done
,数据存于 ~/.tasks.json
。
步骤 1:初始化项目
|
|
由于我是在 git bash
中使用,所以我选择的是 sh
的方式,如果你是在 CMD
命令行中,则选择 ps
确认后,则会自动创建项目,同时初始化了一些配置
步骤 2:确立项目原则 (/speckit.constitution)
进入项目目录后,启动 Claude Code (claude 命令)。现在,可以使用 Spec-Kit 提供的斜杠命令了。
首先,为项目设定约束,即指导 AI 开发的最高原则。
在 Claude Code 提示符中输入:
|
|
执行后 AI 会根据你的要求,在 .specify/memory/constitution.md 文件中生成一份详细的开发准则。
步骤 3:创建项目规格 (/speckit.specify)
接下来,用自然语言描述你想要构建的应用。这里就是我们输入“Vibe”的地方,但 Spec-Kit 会帮我们将其结构化。
|
|
Claude Code 会接收这个需求,并生成一份详尽的、结构化的规格文档(spec.md),包含用户故事、功能需求、命令接口(如 todo add “task”)等。
步骤 4:制定技术实现计划 (/speckit.plan)
有了清晰的“做什么”,现在我们来定义“怎么做”。
|
|
Claude Code 会基于这份技术选型,生成详细的技术文档(plan.md),包括文件结构、数据格式、函数定义等。
步骤 5:分解任务 (/speckit.tasks)
我们将技术计划分解为一个个具体的、可执行的任务。
|
|
AI 会自动分析计划文档,并生成一份任务清单(tasks.md),其中可能包含“设置 argparse 以处理 add, list, done, delete 命令”、“实现读写 JSON 文件的函数”、“为每个命令编写核心逻辑”等任务。
步骤 6:执行实现 (/speckit.implement)
接下来,将见证 Claude Code 在终端里自动创建 Python 文件、编写 argparse 的设置代码、实现文件读写逻辑,并最终完成一个功能齐全的命令行工具。整个过程完全自动化,并严格遵循之前的规格和计划。
|
|
直接测试应该也没问题了