核心问题:告别“感觉式编程” (Vibe-coding)
随着AI编码代理日益强大,一种普遍的模式是:你描述目标,AI返回代码块,但这些代码“看起来对”,却常常无法正常工作。 这种“感觉式编程”方法,对于快速原型制作尚可,但在构建严肃的、任务关键型应用程序时则不够可靠。 问题不在于AI的编码能力,而在于我们的方法——我们像对待搜索引擎一样对待AI,而实际上应将它们视为需要明确、无歧义指令的“字面化结对程序员”。
解决方案:规范驱动开发 (Spec-driven Development)
规范驱动开发的核心理念是,将规范 (Spec) 从静态文档转变为与项目共同进化的、可执行的、动态的工件。 规范成为共享的“真理之源” (Source of Truth),指导AI代理生成、测试和验证代码。 这种方法不是先编码后写文档,而是从一份明确的代码行为契约开始,从而减少猜测、意外,并产出更高质量的代码。
核心事实
Spec Kit 是一个新发布的开源工具包,它为规范驱动开发提供了一个结构化的流程。 该工具包可与 GitHub Copilot、Claude Code 和 Gemini CLI 等主流编码代理配合使用。 其核心是通过一系列简单的命令(如 /specify
, /plan
, /tasks
)来引导AI完成工作。
软件工程方法论:Spec Kit 的四阶段流程
Spec Kit 将规范置于工程流程的中心,整个过程分为四个有明确检查点的阶段。关键在于,每个阶段都有特定的任务,只有在当前任务完全通过验证后,才能进入下一阶段。 开发者的角色是引导、验证和修正,而AI则负责大部分的编写工作。
第一阶段:指定 (Specify) - 定义“是什么”与“为什么”
- 提供项目的高层次描述,聚焦于用户旅程、体验和成功标准。
- 回答关键问题:为谁解决什么问题?他们将如何交互?
- 不关心技术栈或应用设计。
- 根据开发者的描述,生成一份详细的、可读的规范文档。
- 将模糊的想法具体化,形成一份动态的、可随项目演进的工件。
第二阶段:规划 (Plan) - 确定“如何做”
- 提供技术方向,包括期望的技术栈、架构模式和具体约束。
- 明确公司的技术标准、合规性要求、性能目标或与遗留系统的集成需求。
- 可以要求AI生成多种方案以进行比较和权衡。
- 生成一份全面的技术计划,确保方案符合所有技术约束。
- 如果能够访问内部文档,AI可以将组织内的架构模式和标准直接整合到计划中。
第三阶段:任务 (Tasks) - 分解工作
- 审查AI生成的任务列表,确保分解的粒度合理。
- 验证每个任务是否都是小型的、可独立实现和测试的单元。
- 将规范和技术计划分解为一系列具体的、可执行的工作项。
- 任务描述清晰,例如将“构建认证系统”分解为“创建一个验证电子邮件格式的用户注册端点”。
第四阶段:实现 (Implement) - 编码与审查
- 审查者与验证者:审查由AI完成的、聚焦于解决特定问题的代码变更,而不是上千行的代码转储。
- 在每个阶段进行反思和优化,识别AI可能遗漏的边缘情况或空白。
- 根据任务列表逐一(或在可能时并行)完成编码工作。
- 由于有明确的规范、计划和任务,AI能够准确地知道要构建什么、如何构建以及具体的工作内容。
为何这种方法有效?
语言模型擅长模式补全,而非读心术。 模糊的提示(如“为我的应用添加照片分享功能”)迫使模型猜测大量未言明的需求,从而导致错误。 规范驱动开发通过提供清晰的意图、技术规划和专注的任务,极大地提升了AI的效能。 此外,它还解决了大型组织中的一个关键问题:将安全策略、合规规则、设计系统约束等要求集中化,并使其可被AI直接使用和执行。
三大理想应用场景
-
绿地项目 (Greenfield)
在启动一个全新项目时,预先投入少量精力创建规范和计划,能确保AI构建出你真正想要的东西,而不是基于通用模式的普通解决方案。
-
现有系统中的功能开发 (N-to-N+1)
这是规范驱动开发最强大的应用场景。 为复杂系统添加新功能时,创建规范能强制我们理清它与现有系统的交互方式,确保新代码与项目原生集成,而非一个“补丁”。
-
遗留系统现代化 (Legacy Modernization)
在重建遗留系统时,其原始意图往往已失传。通过此流程,可以将核心业务逻辑捕获到现代规范中,设计一个全新的架构,然后让AI在不继承技术债务的情况下完成重建工作。
核心观点与未来展望
我们正在从“代码即真理”转向“意图即真理”。 随着AI的发展,规范本身变得可执行,它直接决定了最终构建出的产品。 Spec Kit 是将这一转变付诸实践的实验。 其真正的创新在于流程本身,未来将探索更多与上下文工程的结合,以及提供更好的 VS Code 集成。
快速上手
通过以下命令安装命令行工具并初始化你的项目:
uvx --from git+https://github.com/github/spec-kit.git specify init <PROJECT_NAME>
初始化后,即可在你的AI编码工具中使用 /specify
, /plan
, 和 /tasks
命令来引导开发流程。
专业词汇解析
- 规范驱动开发 (Spec-driven Development)
- 一种软件开发方法,强调在编码前先创建详细、可执行的规范,并以此规范作为整个工程过程的中心驱动力。
- 感觉式编程 (Vibe-coding)
- 指一种依赖直觉和模糊提示与AI进行交互的编码方式,通常产出的代码看似正确但缺乏可靠性。
- 编码代理 (Coding Agents)
- 指如 GitHub Copilot、Claude Code 等能够理解自然语言指令并生成、修改或审查代码的AI工具。
- 真理之源 (Source of Truth)
- 在软件工程中,指一个权威的、所有团队成员和工具都应参考和依赖的信息来源。在此流程中,规范文档即是“真理之源”。