书名:Spec-Kit实战:AI编程全流程落地
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
著 黄桂钊 茹炳晟
责任编辑 卜一凡
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
规范驱动开发(SDD)是软件开发领域中应对AI编程代理挑战的方法论。本书聚焦SDD,即如何在AI编程代理普及的背景下构建完整知识体系,帮助提升代码质量、可维护性与团队协作效率。全书构建从理论到实践的完整知识体系:第一部分系统讲解SDD的核心价值、Spec-Kit的核心概念,介绍环境配置与AI编程代理;第二部分通过组件驱动开发、状态管理、构建后端API与前后端联调、安全加固与前后端联调等实战案例,展示如何运用Spec-Kit构建复杂应用系统;第三部分探讨存量系统的改造方案,并对SDD的未来发展趋势进行分析,帮助读者理解从氛围编程到SDD的必然之路。
本书适合各类软件开发人员(包括前端开发工程师、后端开发工程师、全栈开发工程师、软件架构师等)、高校计算机相关专业师生阅读。无论是软件开发领域的新手,还是经验丰富的资深工程师,都能学到实用的开发技巧。
随着人工智能技术的飞速发展,软件开发领域正经历着前所未有的变革。AI编程代理如雨后春笋般涌现,极大地提升了代码生成效率,但也带来了新的挑战。如何在享受AI带来的便捷的同时,提升代码质量、可维护性和团队协作效率?这正是本书要探讨的核心问题。
全书构建了从理论到实践的完整知识体系:第一部分聚焦规范驱动开发(SDD)的理论基础与工具准备,从AI编程的范式转移切入,系统讲解Spec-Kit,并通过介绍环境配置与AI编程代理,助力读者快速掌握SDD的入门技巧;第二部分通过前端与后端实战案例,介绍如何运用Spec-Kit构建复杂应用系统,涵盖组件驱动开发、状态管理、构建后端API与前后端联调、安全加固与前后端联调等实战案例;第三部分探讨存量系统改造,并对SDD的未来发展趋势进行分析,帮助读者理解从氛围编程到SDD的必然之路。
本书具有以下特色:一是理论与实践相结合,既深入讲解SDD的理论基础,又通过丰富的实战案例帮助读者掌握具体操作方法;二是循序渐进,从基础概念到高级应用,逐步引导读者掌握SDD的精髓;三是实用性强,书中介绍的工具、方法和技巧可以直接应用于项目开发;四是具有前瞻性,对SDD的未来发展趋势进行了深入探讨,帮助读者把握行业发展方向。
本书适合各类软件开发人员阅读,包括前端开发工程师、后端开发工程师、全栈开发工程师、软件架构师等,也适合作为高校计算机相关专业的教学参考用书。无论你是软件开发领域的新手,还是经验丰富的资深工程师,都能从本书中学到实用的开发技巧并获得启发。
最后,为了帮助读者更好地学习本书,我们提供了丰富的配套资源,包括书中所有案例的源代码、相关工具安装包等。读者可以通过“资源与支持”页的指引获取这些资源。
本书提供如下资源:
• 本书源代码;
• 相关工具安装包;
• 本书思维导图;
• 异步社区7天VIP会员。
要获得以上资源,您可以扫描下方二维码,根据指引领取。

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。
当您发现错误时,请登录异步社区(https://www.epubit.com),按书名搜索,进入本书页面,单击“发表勘误”,输入勘误信息,单击“提交勘误”按钮即可(见下图)。本书的作者和编辑会对您提交的勘误信息进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

我们的联系邮箱是contact@epubit.com.cn。
如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。
如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们。
如果您所在的学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。
如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接通过邮件发送给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。
“异步社区”是由人民邮电出版社创办的IT专业图书社区,于2015年8月上线运营,致力于优质内容的出版和分享,为读者提供高品质的学习内容,为作译者提供专业的出版服务,实现作者与读者在线交流互动,以及传统出版与数字出版的融合发展。
“异步图书”是异步社区策划出版的精品IT图书的品牌,依托于人民邮电出版社在计算机图书领域四十余年的发展与积淀。异步图书面向各行业的信息技术用户。
在AI编程蓬勃发展的当下,我们享受了它带来的高效便捷,就需要直面随之而来的诸多挑战。本章将深入剖析AI编程的范式转移,从氛围编程的局限与挑战入手,引出规范驱动开发的核心价值,为第二部分的实战筑牢理论根基。
“氛围编程”(Vibe Coding)并非一个正式的工程术语,而是随着AI编程助手(如GitHub Copilot、Cursor、Claude Code、Qwen Code等)的普及,在开发者社区中逐渐形成的一种现象性描述。氛围编程具有以下特征:开发者依赖即时感觉、上下文直觉与AI的快速生成能力,以近乎即兴的方式编写代码,而很少进行事先设计、规范约束或系统性审查。
这种编程模式在社交媒体上被一些开发者称为“与AI一起即兴演奏”——开发者抛出一个粗略想法,AI迅速生成一段可运行的代码,开发者试用、修改、再提示,循环往复直至“看起来能跑通”。它带来了前所未有的快速反馈与创作自由,尤其适合完成个人项目,如进行原型验证,撰写一次性脚本,以及学习新技术。然而,当氛围编程试图跨越个人项目的边界,进入团队协作、需要长期维护代码或实现关键业务系统等场景时,其固有的局限便迅速暴露。
氛围编程高度依赖开发者与AI之间的隐性约定。开发者可能在提示语中隐含了业务规则、边界条件或性能假设,而AI基于概率生成代码,并不会主动追问这些提示词是否合理。这会导致出现如下结果。
• 逻辑漏洞被深埋。AI生成的代码可能只在“Happy Path”上能正常运行,异常处理、并发竞争、数据一致性等边缘逻辑往往缺失。
• 风格与规范混乱。不同的提示词会生成不同风格的代码,这会导致在同一文件中也可能出现多种“笔迹”。
• 缺乏显式设计。没有架构图、没有接口契约,系统的行为完全由各个文件中的代码片段定义,开发者理解系统只能逐行解读所有代码。
这样的代码就像在沙子上建塔——需求变更的“潮水”一来,“塔”随时可能会崩塌。
氛围编程优先考虑“当下能跑”,而将“未来能改”置于次要位置。当开发者为了完成某个项目,选择用氛围编程快速生成数万行代码时,维护者会遭遇以下困境。
• 文档“真空”。当初为什么这么写?这个参数为何必须为负?AI生成这段代码时参考了哪些假设?除了提交历史中的只言片语,找不到任何解释。
• 重构恐惧。调用关系不透明会导致维护者修改一个函数时不知道哪些地方依赖它,更不知道修改后是否破坏了隐含的业务规则。因此,测试覆盖率极低,维护者不敢轻易修改,只能不断堆叠补丁。
• 知识孤岛。如果该项目的开发者请假或离职,那么接手的同事在面对大量没有注释、没有设计文档的AI生成的代码时,往往只能选择重写——而这又会开启新一轮的循环。
例如,某团队使用氛围编程在两周内搭建了一个内部工具,代码量约3000行。三个月后需要修改核心逻辑时,该团队花费了与首次开发相当的时间才完成重构——因为没有任何文档说明当初的设计意图。此时,代码不再是一笔资产,而是一个持续消耗团队精力的“无底洞”。
氛围编程一旦引入团队协作,矛盾便迅速显现,具体如下。
• 接口没有契约。模块之间通过隐式约定通信,A模块期望B模块返回特定结构,而B模块的开发者可能完全不知情。
• 合并时冲突层出不穷。由于缺乏统一的规范约束,不同开发者生成的代码的结构差异巨大,合并时必须人工逐行判断。
• 评审无法聚焦。代码审查演变为“猜作者意图”的游戏,审查者难以区分哪些是业务逻辑所必须的,哪些是冗余的。
这会导致团队陷入持续的“合并地狱”(Merge Hell)——每次合并都需要“手工”缝补,而开发者还会选择通过氛围编程来完成“手工”缝补。至此,团队陷入恶性循环。
氛围编程高度依赖AI的输出。相同的提示词、不同时间、不同模型版本,AI可能生成完全不同的代码。这带来了两个维度的不确定性。
• 构建不可复现。即使提示词完全相同,间隔数周后生成的代码也可能大相径庭。这意味着“规范”本质上没有被版本化,项目中已有的代码无法复现。
• 行为不可预测。当代码由AI即兴创作时,开发者往往只验证了主流程,却无法知晓代码是否存在未被察觉的隐患(如引入不必要的依赖、泄露敏感信息、存在隐藏的安全漏洞等)。
这种结果不确定性在系统中往往是致命的。
小结:氛围编程不是原罪,但需要被驯服。
氛围编程本身没有错。它是技术普及的体现,让更多人拥有了开发软件的能力。它的“快”与“灵活”,在个人项目中依然是宝贵特质。
但将它应用到专业的团队软件开发时,仅凭“感觉”便难以为继。我们需要在保证AI生成效率的同时,为开发过程引入确定性、可复现性与可协作性——这正是规范驱动开发所要回答的问题。
规范驱动开发(Specification-Driven Development,SDD)并非对氛围编程的全盘否定,而是对氛围编程的一次“工程化收编”:将即兴的火花放入规范的轨道,让创造的力量既快又稳地应用于复杂业务场景。
需求模糊,AI直接生成代码,开发者测试并发现问题后反复修改代码,但每次修改时依旧需求模糊,让AI直代生成代码,并且可能引入新问题,这缺乏统一的行为约定。

图1-1 AI辅助开发的循环困境
面对氛围编程带来的“效率幻觉”及其背后的技术债务陷阱,软件开发迫切需要一种新的范式——既能享受AI快速生成代码的红利,又能将开发过程从不可控的即兴表演转变为确定性、可复现、可协作的工程活动。
SDD正是为此而生,即在代码生成之前先定义它应该做什么。
SDD是新一代的软件工程方法论,它将形式化或半形式化的规范作为开发活动的中心。在SDD中,规范不再仅仅是代码前的文档,而是可执行、可验证、可版本化的文档。SDD的流程如图1-2所示,根据需求意图编写规范,经规范审查后驱动AI生成代码,最终通过规范一致性测试验证。规范是保障团队沟通与代码质量的统一语言。

图1-2 SDD的流程
SDD让AI(或开发者)的任务不再是“凭空创造代码”,而是“实现一份已经被清晰定义的规范”。
SDD能够应对氛围编程带来的挑战,得益于三根支柱。每根支柱既是一种工程实践,也直接对应一项核心价值。
支柱一:规范即契约→确定性
在SDD中,规范是对系统行为的显式、无歧义的描述,具体如下。
• 接口定义语言(IDL):如OpenAPI、Protocol Buffers、AsyncAPI。
• 形式化规约:如TLA+、Alloy,适用于金融交易等高可靠性场景。
• 轻量级业务规则:如Gherkin(Cucumber)、Markdown结构化文档。
• 类型系统与约束:如TypeScript类型、数据库模式、JSON Schema。
这四种规范形式涵盖了从严格到轻量的连续谱:形式化规约适用于金融交易等高可靠性场景,而IDL和类型系统与约束则更适合日常的接口与数据契约定义。
无论采用何种形式,规范都必须具备确定性与可验证性——即针对同一份规范,不同开发者或不同AI应能生成行为一致的实现结果。这从根本上消除了氛围编程中“同样需求、不同代码”的结果不确定性(见1.1.4节),使系统行为变得可预测、可复现。
支柱二:规范驱动实现→团队协作
规范的编写先于代码实现,并且规范的变更直接驱动代码的变更。在SDD工作流中有以下规则要遵守:
• 任何功能开发都从新增或修改规范开始;
• 规范通过代码审查后,才进入实现阶段;
• 实现完成后,必须通过规范一致性测试才能合入。
上述内容从根本上杜绝了“先写代码,后补文档”的恶习,也降低了AI生成无关代码或偏离预期意图的风险。接口的契约化使并行开发成为可能,这消除了代码审查演变为“猜作者意图”(见1.1.3节)的可能性。
支柱三:规范即知识库→可维护性
规范不仅是供机器执行的契约,更是供人类阅读的知识沉淀。一份维护良好的规范集合,天然构成了系统的活文档,其优势如下:
• 新成员可以通过阅读规范理解系统的边界与行为;
• 审计人员可以通过规范追溯需求与实现之间的对应关系;
• 运维人员可以根据规范推断系统预期的运行时行为。
规范与代码通过工具链保持同步:规范的变更会触发代码审查,代码的修改也必须通过规范验证——文档,因此永远不会滞后于实现。这增强了项目的可维护性(见1.1.2节)。
也许有人会问:在AI尚未普及的时代,我们同样强调需求与设计先行,那么SDD究竟新在何处?答案是:AI将编码成本几乎降为零,却将意图对齐的成本无限放大。在传统开发中,编写代码是主要瓶颈,因此瀑布模型、敏捷方法等都致力于更高效地生成代码。但在今天,瓶颈已经发生了转移,具体如下。
• 不如何编写代码:AI可以在几秒内生成数百行可运行的代码;
• 不如何快速产出:产出速度已经不再是瓶颈;
• 而在于如何确保产出的东西是正确的:这才是真正的关键所在。
这正是SDD面临的历史性机遇。它促使开发者的核心工作从“与编译器对话”转向“与规范对话”——而规范,正是开发者意图最浓缩、最无歧义的表达形式。
SDD并非银弹,但在以下场景中能够发挥核心价值。
• 中大型团队协作开发:接口规范先行,消除“各自即兴”的问题;
• 长期演进的业务系统:规范作为“防腐层”,抵御技术债务的累积;
• 合规与审计敏感领域:如金融、医疗、自动驾驶,必须证明实现与需求的一致性;
• AI辅助开发的主流化:用规范“驯服”AI,将提示工程升级为规范工程。
在纯探索性编程(如算法研究、数据探索)、一次性脚本或学习编程与新技术的练习阶段,轻量级规范甚至无规范仍然是合理的选择。SDD并不排斥即兴,而是主张在复杂度越过一是阈值时,有意识地将即兴转化为规范。
SDD的三根支柱并非抽象原则,它们分别对应三项核心价值:契约对应确定性,驱动实现对应团队协作,知识库对应可维护性。三者彼此强化,确定性使团队协作成为可能,团队协作使知识库得以持续维护,而知识库又反过来保障了确定性。
SDD并非以牺牲速度为代价换取这些价值;恰恰相反,它让团队在长期演进中保持高速而不失控。这正是SDD在AI时代最核心的工程红利。