简介:模型“能写”不等于“写得对”。本文系统对比依赖直觉的Vibe Coding与规范驱动的Spec Coding两种AI编程范式,从约束强度、正确性、可维护性、协作效率与成本结构等维度拆解差异,并延伸分析Spec知识库与RAG知识库这对“认知基础设施”的互补关系,最后给出典型场景选型建议与迁移注意事项,帮助开发者与架构师在速度与确定性之间做出理性权衡。
在AI Coding快速普及的背景下,工程团队普遍遇到一个核心矛盾:模型的生成能力已经足够强,但生成结果的工程可用性并不随之线性提升。尤其在两类场景中,这一矛盾最为突出:
这两类场景的共性是:正确性、可维护性和一致性远比“能生成”重要。要突破这一瓶颈,关键在于让AI不仅“会写”,更要“懂上下文”——即深刻理解特定项目的技术契约、业务语义与工程惯例。
围绕“如何让AI获得上下文”,开发者群体逐渐分化出两种工作范式,也就是本文的对比对象:
同时,Spec Coding的落地又依赖两类互补的知识体系——Spec知识库与RAG知识库。本文会先对比两种编程范式,再深入这层“认知基础设施”级对比,最终给出选型与落地建议。
Vibe Coding的开发流程可以概括为“描述—生成—观察—修正”的循环:开发者用自然语言表达意图,模型生成代码,开发者运行观察效果,再通过对话不断修正。它有三个典型特征:
这决定了它的天然优势——启动快、门槛低、适合探索;也埋下了天然风险——约束缺失带来的正确性与一致性问题。
Spec Coding的前提是先有Spec(Specification,规范):对软件系统行为、接口、数据格式或业务规则的精确、无歧义、可验证的描述。在AI Coding中,Spec常被称为AI的“宪法”——它明确告诉AI“代码必须满足哪些条件才算正确”,而不是依赖模型自行猜测、模仿或凭“感觉”生成。
Spec的核心价值体现在两个层面:
注意关键词是“可验证”。这是Spec与一般性文档的根本区别:规范不仅要人能读懂,最好能被机器校验,从而形成“生成前约束、生成后校验”的闭环。
Spec Coding能否规模化落地,取决于项目是否沉淀了高质量、结构化的知识体系,即AI Coding的“认知基础设施”。它包含两个互补维度:
一句话概括二者分工:Spec提供强约束的“硬规则”,RAG提供灵活丰富的“软上下文”。二者共同构成AI的上下文感知能力,使其不仅理解“要做什么”,更能精准把握“怎么做才对”。
在展开差异之前,先明确两者的共同点,避免把对比简化为“新旧之争”:
也就是说,两者的差异不在“用不用AI”,而在“如何为AI供给上下文、施加约束”。
Vibe Coding的上下文由三部分构成:当前对话历史、开发者片段式描述、模型自身的通用先验。约束是软性的——开发者通过措辞引导模型,但没有任何机制保证模型遵循。
Spec Coding的上下文核心是结构化规范:接口契约、编码规则、业务规则、数据格式约定。约束是硬性的——规范可被显式注入提示词,更重要的是可被程序化校验,违反规范的生成结果会被直接拒绝或打回重生成。
这是两者所有下游差异的总根源:约束方式不同,决定了正确性、一致性、协作模式与成本结构的全面分化。
Vibe模式下,正确性完全后置:生成之后靠运行、测试和人工评审把关,模型猜测错误(幻觉接口、编造参数、错误依赖版本)的成本全部由下游承担。一致性则更难保证:同一个人在不同会话中生成的代码风格可能不同,不同人之间的差异更大。
Spec模式下,正确性部分前移:规范在生成之前就定义了“正确”的边界,模型不需要猜接口签名、错误码规则、命名约定,因为这些都在Spec中。一致性显著提升:只要规范一致,不同人、不同会话的生成结果会向规范收敛。
需要强调:Spec并不能消灭所有错误,它消灭的是“因缺少明确约束而产生的错误”。逻辑本身的正确性仍需测试保障。
两种范式的效率曲线形状完全不同:
这本质上是“一次性成本”与“持续性成本”的结构差异。判断哪种更划算,取决于项目生命周期:生命周期越长的项目,前期投入越值得摊薄。
Vibe Coding的生成结果强绑定个人直觉,可复现性差,知识沉淀在个人脑中而非项目资产中。当人员变动或团队扩张时,“当时为什么这么写”往往无从追溯。
Spec Coding把共识显式化为规范文档:规范即团队契约,新人通过读规范理解项目惯例,AI通过注入规范生成一致代码。协作模式从“人对人的口头对齐”升级为“人对规范的共同维护”,这正是企业级多团队协作最需要的能力。
幻觉的主要来源是模型对未知信息的“脑补”。Vibe模式下,项目特有信息大量缺位,幻觉高发于接口签名、内部工具函数、依赖版本、业务规则细节。Spec模式下,这些高价值信息被显式供给,幻觉空间被结构性压缩。同时,可校验的规范提供了幻觉的自动检测手段:生成的代码不符合契约,立刻可被识别,而不是等到运行时才暴露。
Vibe Coding几乎零门槛,个人即可开始。Spec Coding则要求团队具备三项额外能力:
这些能力本身就是一种工程投资。团队如果暂时不具备,直接转向Spec Coding可能得到“形式化但低质量”的规范,效果适得其反。
Vibe Coding的边界:不适合核心业务逻辑、多人协作的主线代码、安全与合规敏感场景,以及需要长期维护的系统。它适合边界明确的探索性工作。
Spec Coding的边界:一次性脚本、极早期方向未定的探索、没有稳定业务规则的陌生领域中,Spec的前期投入无法收回。此外,规范本身质量低劣时,Spec Coding会系统性地放大错误约束——过期或错误的规范比没有规范更危险。
表1 Vibe Coding vs Spec Coding
| 对比维度 | Vibe Coding | Spec Coding |
|---|---|---|
| 上下文来源 | 对话历史、意图描述、模型先验 | 结构化规范与项目级契约 |
| 约束性质 | 软引导,无强制保障 | 硬约束,可程序化校验 |
| 正确性保障 | 后置验证(运行、测试、评审) | 事前约束 + 事后校验双重把关 |
| 一致性 | 弱,结果随人随会话漂移 | 强,结果向规范收敛 |
| 前期成本 | 极低 | 高(规范撰写与工具链建设) |
| 长期成本 | 随规模上升 | 边际递减 |
| 幻觉风险 | 高(项目信息缺位) | 低(关键信息显式供给) |
| 团队协作 | 口头对齐,难复制 | 规范即契约,易对齐 |
| 典型场景 | 原型、Demo、个人工具 | 企业级系统、高频迭代、强业务耦合 |
| 主要风险 | 返工与维护成本失控 | 规范质量低劣、投入难收回 |
表2 Spec知识库 vs RAG知识库
| 对比维度 | Spec知识库 | RAG知识库 |
|---|---|---|
| 知识形态 | 结构化契约与规则 | 非结构化/半结构化文档 |
| 约束性质 | 硬规则,必须满足 | 软上下文,供参考 |
| 可验证性 | 多数规则可机器校验 | 不可直接校验,依赖模型消化 |
| 更新方式 | 版本化、评审式演进 | 索引刷新、增量检索 |
| 一致性 | 强,同一规范唯一口径 | 依赖检索质量,存在噪声 |
| 典型内容 | 接口契约、编码规范、错误码、业务规则 | 历史方案、最佳实践、外部文档 |
| 角色定位 | 定底线:“必须怎么做” | 拓视野:“可以怎么做” |
两张表合起来看:范式层的选择(Vibe vs Spec)决定约束策略,知识层的选择(Spec vs RAG)决定上下文供给方式,两层共同决定AI Coding的最终工程质量。
实际工程中,Spec知识库与RAG知识库不是二选一,而是分工协作。可以用一段示意性伪代码描述理想的协同流程:
# 伪代码:Spec + RAG 双知识库协同的生成流程spec_ctx = spec_kb.load(contracts=["API-ORDER-V2", "ERR-CODE-STD"])rag_ctx = rag_kb.retrieve(query=task_description, top_k=5)prompt = task_description + spec_ctx + rag_ctxcandidate = llm.generate(prompt)report = spec_kb.validate(candidate) # 硬规则校验while report.has_violations:candidate = llm.regenerate(prompt, feedback=report.violations)report = spec_kb.validate(candidate)return candidate
这个流程体现三个原则:
在基础设施选型上,团队可以评估自建与托管两条路径的权衡:自建检索链路灵活可控,但需要承担索引更新、权限隔离与运维监控的完整成本;借助云服务商提供的通用能力(例如百度智能云上的向量检索、对象存储、知识库管理与监控告警等通用类目)则可以降低运维复杂度,但需评估能力覆盖度与集成改造成本。两条路径没有普适答案,取决于团队的工程资源与数据合规要求。
与其问“选哪种范式”,不如问“当前项目处于什么条件组合下”。可依次回答五个问题:
典型的理性结论是混合策略:在探索性模块用Vibe保持速度,在核心链路用Spec守住确定性,用RAG为两者供给历史与参考上下文。判断的关键不是“哪种更好”,而是“哪段代码承受不起错”。
如果团队决定从Vibe Coding向Spec Coding演进,以下事项需要提前评估:
回到本文的核心对比:Vibe Coding与Spec Coding的分歧,本质上是“速度与确定性”的权衡,而这组权衡的底层变量是上下文的供给方式。
Vibe Coding把约束交给直觉与事后验证,换取启动速度;Spec Coding把约束前置为可验证的契约,支付前期工程投入。两者没有绝对优劣——原型期的Vibe与核心系统的Spec,都是各自条件下的理性选择。
而Spec Coding要真正规模化,离不开认知基础设施的支撑:Spec知识库提供强约束的硬规则,RAG知识库提供灵活的软上下文,二者共同让AI从“会写”进化到“懂上下文”。当前的工程实践中,规范工程化的工具链与方法论仍在快速演进,规范自动提取、校验自动化、双知识库的智能路由是值得持续关注的方向。
对于正在选型的团队,最后一个建议是:不必急于把整个项目押注在单一范式上,先识别出“承受不起错”的那部分代码,为它们建立Spec与RAG双知识库,让确定性在最需要的地方先落地。