Featured image of post 告别“氛围编程”:用 Spec-Kit 实践规格驱动开发

告别“氛围编程”:用 Spec-Kit 实践规格驱动开发

还在靠‘vibe coding’(氛围编程)写代码?GitHub 开源的 Spec-Kit 正在用规格驱动开发(SDD)终结这种模糊开发模式。本文教你如何结合 Spec-Kit 与 Claude Code,通过 spec.md 和架构约束,让 AI 生成结构清晰、可维护、符合规范的高质量代码。

告别“氛围编程”:用 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 的“任务契约”,确保生成的代码既满足功能,又符合工程标准。


安装与国内访问准备

项目地址https://github.com/github/spec-kit

1. 安装 Spec-Kit

推荐使用 uvx(来自 uv)运行,避免环境污染:

1
2
3
4
5
6
7
8
# 安装 uv
pip install uv

# 通过 uv 安装 spec-kit
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git

# 更新 spec-kit
uv tool install specify-cli --force --from git+https://github.com/github/spec-kit.git

2. 配置 Claude Code(国内用户)

由于 Anthropic 服务在国内不可直连,需通过 API 中转,具体配置方式可以参考我另外一篇文章 《Claude Code 使用指南》

配置完成后,Spec-Kit 即可调用 Claude Code 生成代码。


核心机制:规格与约束如何引导 AI

Spec-Kit 通过以下流程将 vibe 转化为可靠实现:

  1. 定义规格/speckit.spec
    用自然语言描述功能行为,如:“用户可通过 todo add "Buy milk" 添加任务”。

  2. 设定约束/speckit.constitution
    明确技术边界,如:“必须使用 argparse”“数据存为 JSON”“需包含类型提示”。

  3. 自动派生实现specify implement
    Claude Code 在约束范围内,从规格中派生出代码、测试与文档。

整个过程避免了人工转译的损耗,也杜绝了 AI 的“过度创意”。


实战:告别 vibe,构建可靠 To-Do CLI

目标

创建 todo 命令行工具,支持 addlistdone,数据存于 ~/.tasks.json

步骤 1:初始化项目

1
2
uvx --from git+https://github.com/github/spec-kit.git specify init todo-cli --ai claude
cd todo-cli

spec_kit_01.png

由于我是在 git bash 中使用,所以我选择的是 sh 的方式,如果你是在 CMD 命令行中,则选择 ps

spec_kit_02.png

确认后,则会自动创建项目,同时初始化了一些配置

spec_kit_03.png

步骤 2:确立项目原则 (/speckit.constitution)

进入项目目录后,启动 Claude Code (claude 命令)。现在,可以使用 Spec-Kit 提供的斜杠命令了。

首先,为项目设定约束,即指导 AI 开发的最高原则。

在 Claude Code 提示符中输入:

1
/speckit.constitution 为一个健壮、用户友好的命令行工具创建原则。重点关注清晰的命令结构、有用的错误消息和最少的依赖关系。

spec_kit_15.png

执行后 AI 会根据你的要求,在 .specify/memory/constitution.md 文件中生成一份详细的开发准则。

spec_kit_16.png

步骤 3:创建项目规格 (/speckit.specify)

接下来,用自然语言描述你想要构建的应用。这里就是我们输入“Vibe”的地方,但 Spec-Kit 会帮我们将其结构化。

1
/speckit.specify 构建一个命令行待办事项应用。它应该支持添加新任务、列出所有任务、将任务标记为完成以及删除任务。

spec_kit_17.png

Claude Code 会接收这个需求,并生成一份详尽的、结构化的规格文档(spec.md),包含用户故事、功能需求、命令接口(如 todo add “task”)等。

spec_kit_18.png

步骤 4:制定技术实现计划 (/speckit.plan)

有了清晰的“做什么”,现在我们来定义“怎么做”。

1
/speckit.plan 该应用将是一个使用 Python `argparse` 库进行命令行参数解析的脚本。任务将存储在用户主目录下的一个简单 JSON 文件中。

spec_kit_19.png

Claude Code 会基于这份技术选型,生成详细的技术文档(plan.md),包括文件结构、数据格式、函数定义等。

spec_kit_20.png

步骤 5:分解任务 (/speckit.tasks)

我们将技术计划分解为一个个具体的、可执行的任务。

1
/speckit.tasks

spec_kit_21.png

AI 会自动分析计划文档,并生成一份任务清单(tasks.md),其中可能包含“设置 argparse 以处理 add, list, done, delete 命令”、“实现读写 JSON 文件的函数”、“为每个命令编写核心逻辑”等任务。

步骤 6:执行实现 (/speckit.implement)

接下来,将见证 Claude Code 在终端里自动创建 Python 文件、编写 argparse 的设置代码、实现文件读写逻辑,并最终完成一个功能齐全的命令行工具。整个过程完全自动化,并严格遵循之前的规格和计划。

1
/speckit.implement

spec_kit_23.png

直接测试应该也没问题了

Licensed under CC BY-NC-SA 4.0
本博客所有内容无特殊标注均为大卷学长原创内容,复制请保留原文出处。
Built with Hugo
Theme Stack designed by Jimmy