1. 五种AI编程范式的整体拆解与选型逻辑
1.1 为什么现在需要给AI编程分范式
过去两年,我身边不少开发者对AI编程的认知还停留在“让模型补全一段函数”这个层面。但真正在项目里用起来就会发现,同样是让AI写代码,有人十分钟搞定一个模块,有人折腾一下午还在改bug。差距不在模型本身,而在于你用什么方式跟它协作。
我把目前主流且经过实战验证的AI编程方式归纳为五种范式:Vibe、Plan、Glue、Spec、Smell。这五个词不是厂商发明的营销概念,而是从大量实际项目里总结出来的协作模式。每一种对应不同的任务复杂度、不同的风险等级、不同的交付要求。
先给一个直观的对照表,让你快速判断自己当前的任务该用哪种:
| 范式 | 核心特征 | 适用场景 | 风险等级 | 人工介入程度 |
|---|---|---|---|---|
| Vibe | 自然语言即兴驱动 | 原型验证、脚本工具、一次性任务 | 中高 | 低 |
| Plan | 先规划再执行 | 多模块功能、有依赖关系的任务 | 中 | 中 |
| Glue | 连接现有系统与AI能力 | 集成第三方服务、API编排 | 中低 | 中高 |
| Spec | 规格先行、契约驱动 | 核心业务逻辑、团队协作项目 | 低 | 高 |
| Smell | 用AI识别代码异味 | 代码审查、重构、技术债清理 | 低 | 高 |
这张表建议你截图存下来。每次拿到一个新任务,先花十秒钟判断它落在哪个格子里,再决定用哪种范式。这个习惯能帮你省掉大量返工时间。
1.2 五种范式的核心差异与选择依据
Vibe范式的本质是“对话即开发”。你不需要写任何正式的需求文档,直接用自然语言描述你想要什么,AI生成代码,你看一眼觉得差不多就运行。这种方式最大的优势是速度极快,适合探索性任务。但它的致命伤在于:你很难复现同一个结果,而且代码质量完全取决于你描述得够不够细。
Plan范式在Vibe的基础上加了一层“计划”环节。你不是直接让AI写代码,而是先让它输出一个实现计划——分几步、每步做什么、依赖什么。你确认或调整计划之后,再让它按步骤执行。这多出来的一步,能帮你提前发现逻辑漏洞,也方便你在中途插入自己的判断。
Glue范式关注的是“连接”。现代项目很少从零造轮子,更多是把现有服务、库、API粘合在一起。Glue范式的核心思路是:让AI帮你写适配层、编排逻辑、错误处理,而不是让它实现底层算法。你需要对系统边界有清晰认知,知道哪些部分该让AI写,哪些部分必须自己控制。
Spec范式是五种里最“重”的。它要求你先写出明确的规格说明——输入输出、边界条件、异常处理、性能要求——然后让AI严格按照规格生成代码。这种方式前期投入大,但后期维护成本低,特别适合团队协作和长期项目。我个人的经验是:如果一个功能预计存活超过三个月,或者需要多人维护,就值得用Spec。
Smell范式比较特殊,它不是用来“写”代码的,而是用来“读”代码的。你把现有代码丢给AI,让它识别坏味道——重复逻辑、过长函数、深层嵌套、命名混乱——然后给出重构建议。这个范式在接手遗留项目或者做代码审查时特别有用。
1.3 选型决策树:三秒钟判断该用哪种
面对一个具体任务,你可以按下面的顺序快速判断:
- 这个任务是一次性的吗?如果是,直接用Vibe,别想太多。
- 这个任务涉及多个模块或有依赖关系吗?如果是,上Plan。
- 这个任务主要是集成现有服务吗?如果是,用Glue。
- 这个功能需要长期维护或多人协作吗?如果是,必须用Spec。
- 你是在读代码而不是写代码吗?如果是,用Smell。
实际项目中,这五种范式经常混合使用。比如一个完整的功能开发,可能先用Plan做整体规划,中间某个模块用Spec写核心逻辑,集成部分用Glue,最后用Smell做一轮代码审查。关键是你得知道当前处于哪个阶段,该切换哪种模式。
注意:不要试图用一种范式解决所有问题。我见过有人用Vibe的方式去写支付核心逻辑,结果上线后对账对不上,排查了整整两天。范式选错,代价可能远超你的想象。
2. Vibe与Plan范式的实操细节与避坑指南
2.1 Vibe范式:即兴驱动的正确打开方式
Vibe范式用起来最简单,但要用好并不容易。很多人觉得“不就是跟AI聊天吗”,结果生成出来的代码跑不起来,就开始怀疑模型能力。问题往往出在描述方式上。
我总结了一个Vibe范式的四步操作法:
第一步:给上下文,不给指令。不要一上来就说“帮我写一个登录功能”。先告诉AI你的技术栈、项目结构、已有依赖。比如:“这是一个基于某Web框架的项目,已经集成了某ORM库,用户表有id、username、password_hash三个字段。现在需要加一个登录接口。”上下文越具体,生成结果越靠谱。
第二步:描述行为,不描述实现。说“用户输入用户名和密码,验证通过后返回token”,而不是“用bcrypt比较密码,然后jwt.sign生成token”。让AI自己选择实现方式,你只在它选错的时候纠正。
第三步:小步验证,不要一次生成太多。一次只让AI写一个函数或一个路由,生成后立刻运行测试。如果一次让它写五个文件,出了问题你都不知道该从哪查起。
第四步:不满意就重来,不要硬改。如果AI生成的代码结构不对,与其在它基础上修修补补,不如重新描述一遍需求。Vibe范式的优势就是快,重新生成比修改更快。
实操心得:我在Vibe范式下有一个习惯——每次生成代码后,先看它引入了哪些新依赖。有时候AI会自作主张引入一个很重的库来实现一个很简单功能,这时候直接让它用标准库重写。
2.2 Plan范式:先谋后动的工程化实践
Plan范式适合那些“一想就头疼”的任务。比如你要给一个现有系统加一套权限管理,涉及数据库改动、中间件、路由守卫、前端菜单控制。这种任务如果直接让AI写,它很可能给你一个能跑但结构混乱的实现。
Plan范式的核心操作是:让AI先输出实现计划,你审核后再执行。
具体怎么做?你可以这样跟AI说:“我要给某系统加一套基于角色的权限管理。请你先不要写代码,而是输出一个实现计划,包括:需要改哪些文件、每个文件的改动内容概述、改动之间的依赖顺序、可能的风险点。”
AI输出的计划通常包括五到八个步骤。你拿到计划后做三件事:
- 检查依赖顺序:数据库改动必须在代码改动之前,否则代码引用了不存在的字段。
- 识别风险点:AI可能会忽略某些边界情况,比如“如果用户没有角色怎么办”。
- 补充遗漏:根据你对项目的了解,补充AI不知道的约束条件。
确认计划后,你再让AI按步骤执行。每执行完一步,你验证一步。这样即使中间出了问题,你也能快速定位是哪个环节的偏差。
2.3 Vibe与Plan的混合使用策略
实际工作中,我经常把Vibe和Plan混着用。一个典型的流程是这样的:
先用Vibe快速生成一个原型,验证技术可行性。比如“用某图表库画一个实时更新的折线图”,AI生成代码,你跑一下看看效果。如果可行,再切换到Plan模式,让AI输出一个生产级的实现计划——包括数据源接入、错误处理、性能优化、组件封装。
这个“先Vibe验证,再Plan落地”的策略,能帮你在早期快速试错,在后期保证质量。我试过在一个数据看板项目里用这个流程,前期用Vibe试了三种图表方案,选定后用Plan重新实现,整体效率比直接上Plan高了将近一倍。
注意:Vibe阶段生成的代码不要直接搬到生产环境。哪怕它跑起来没问题,也可能缺少错误处理、日志、边界检查。Vibe的产出是“验证想法”,不是“交付产品”。
3. Glue与Spec范式的核心要点与落地方法
3.1 Glue范式:做系统之间的翻译官
Glue范式的核心场景是集成。你有一个现有的系统A,需要跟外部服务B对接,中间需要写一层适配代码。这层代码不涉及复杂算法,但涉及大量的数据格式转换、错误码映射、重试逻辑、超时处理。
用Glue范式时,最关键的一步是明确边界。你需要清楚地告诉AI:哪些是外部服务的职责,哪些是你的系统需要处理的。比如:“外部服务返回的日期格式是时间戳,我们的系统用ISO字符串。外部服务在限流时返回429状态码,我们需要转换成自定义的错误类型并加入重试队列。”
我通常会把Glue任务拆成三个部分让AI分别处理:
- 请求构造:把内部数据结构转换成外部服务要求的格式。
- 响应解析:把外部服务的返回结果转换成内部数据结构。
- 异常映射:把外部服务的错误码转换成内部错误类型。
每个部分单独生成、单独测试。这样做的好处是,当外部服务升级导致接口变化时,你只需要改对应的那一层,不会牵一发而动全身。
3.2 Spec范式:用规格锁住不确定性
Spec范式是我在核心业务模块中最常用的方式。它的逻辑很简单:先把规格写清楚,再让AI按规格实现。
规格应该包含哪些内容?我通常写这五项:
- 函数签名:输入参数的类型、名称、约束条件。
- 返回值:正常返回什么、异常返回什么。
- 边界条件:空值、极值、超长输入、并发调用。
- 异常处理:每种异常在什么情况下抛出、调用方该如何处理。
- 性能要求:时间复杂度、内存占用、是否需要缓存。
举个例子,假设你要写一个“计算订单折扣”的函数。Vibe范式下你可能直接说“帮我写一个计算折扣的函数”,AI会给你一个能跑的版本。但Spec范式下,你会先写清楚:输入是订单金额和用户等级,输出是折扣后金额;金额为负时抛出异常;用户等级未知时按默认折扣处理;折扣计算需要支持并发调用且结果一致。
写规格的过程本身就是一次深度思考。很多时候,我在写规格的时候就会发现需求里的模糊地带——比如“用户等级未知时怎么办”这个问题,如果不写规格,可能到测试阶段才暴露出来。
3.3 Spec范式在团队协作中的价值
Spec范式最大的价值不在代码生成,而在沟通。当团队里多个人协作时,规格文档就是契约。前端知道后端返回什么格式,测试知道边界条件是什么,运维知道异常情况怎么处理。
我经历过一个项目,三个人同时开发一个模块的不同部分。因为提前用Spec范式把接口规格定清楚了,联调的时候几乎没有出现“你传的参数跟我预期的不一样”这类问题。反观另一个项目,大家各自用Vibe方式写代码,联调花了两天在统一数据格式上。
实操心得:Spec写完后,让AI根据规格生成测试用例。这些测试用例既能验证AI生成的代码,也能作为后续回归测试的基础。我通常会让AI生成“正常路径、边界路径、异常路径”三组测试,覆盖率达到八成以上再开始写实现。
4. Smell范式与常见问题排查实录
4.1 Smell范式:让AI帮你闻代码里的坏味道
Smell范式是我在代码审查阶段最依赖的方式。具体操作很简单:把一段代码贴给AI,问它“这段代码有哪些坏味道”。AI通常会指出以下几类问题:
- 重复代码:相同或相似的逻辑出现在多个地方。
- 过长函数:一个函数做了太多事情,难以测试和维护。
- 深层嵌套:if里面套if,再套for,可读性极差。
- 命名混乱:变量名看不出用途,函数名看不出行为。
- 魔法数字:代码里直接写死的数字,没有解释来源。
但Smell范式有一个坑:AI可能会过度指出问题。它会把一些其实合理的写法也标成“坏味道”。所以你需要自己判断哪些值得改、哪些可以忽略。我的原则是:只改那些真正影响可维护性的问题。比如一个只调用一次的小函数,就算有点长,只要逻辑清晰,我通常不改。
4.2 五种范式混用时的常见冲突与解决
实际项目里,五种范式经常需要混用,但混用不当会出问题。我遇到过几种典型冲突:
冲突一:Vibe生成的代码直接进入Spec流程。Vibe代码通常缺少错误处理和边界检查,如果直接拿去做Spec的基础,后面要补的东西太多。解决办法是:Vibe只用来验证想法,验证通过后重新用Spec方式实现。
冲突二:Plan的计划太粗,执行时频繁偏离。如果Plan阶段只写了“第一步:改数据库,第二步:写接口”,执行时AI会自己填充大量细节,导致结果不可控。解决办法是:Plan的每一步都要具体到文件和函数级别。
冲突三:Glue层和Spec层职责不清。有时候集成代码里混入了业务逻辑,导致两边都难维护。解决办法是:Glue层只做数据转换和错误映射,任何业务判断都放到Spec层。
4.3 常见问题速查表
| 问题现象 | 可能原因 | 排查思路 | 解决方案 |
|---|---|---|---|
| AI生成的代码跑不起来 | 上下文不足或依赖缺失 | 检查是否告知了技术栈和已有依赖 | 补充上下文后重新生成 |
| 生成结果每次都不一样 | Vibe范式固有特性 | 确认是否用了Vibe方式 | 切换到Spec或Plan范式 |
| 集成代码频繁出错 | 边界条件未定义 | 检查外部服务的异常返回 | 用Glue范式重写适配层 |
| 代码审查意见太多 | Smell范式过度报告 | 区分“必须改”和“可以改” | 只处理影响可维护性的问题 |
| 多人协作接口对不上 | 缺少规格约束 | 检查是否有Spec文档 | 补写规格并让AI生成测试 |
4.4 我踩过的三个坑
第一个坑:用Vibe方式写数据库迁移脚本。当时觉得迁移脚本很简单,直接让AI生成。结果AI生成的脚本没有考虑回滚,上线后发现字段类型不对,想回滚都回不去。后来我定了一个规矩:任何涉及数据库结构变更的操作,必须用Spec范式,必须包含回滚方案。
第二个坑:Plan阶段忽略了环境差异。开发环境用某数据库,生产环境用另一个。Plan阶段没考虑这个差异,生成的代码在生产环境跑不起来。后来我在Plan阶段会专门加一步“环境兼容性检查”。
第三个坑:Smell范式改出了新bug。让AI重构一段代码,它把“看起来重复”的逻辑合并了,但实际上那两处逻辑的边界条件不同。重构后测试没覆盖到,上线后才发现问题。从那以后,Smell范式的任何重构建议,我都要求AI同时生成对应的测试用例。
提示:五种范式没有优劣之分,只有适不适合。关键是根据任务的风险等级和生命周期来选择。高风险、长周期的任务用Spec,低风险、一次性的任务用Vibe,集成任务用Glue,规划任务用Plan,审查任务用Smell。
5. 从实战出发的范式组合策略
5.1 一个完整功能的五范式流水线
假设你要开发一个“用户反馈提交与处理”功能。这个功能涉及前端表单、后端接口、数据库存储、通知服务集成。我用五范式流水线的方式走一遍:
第一步:Vibe验证。快速生成一个最简单的表单和接口,验证技术路线可行。比如“用某前端框架写一个包含文本输入和提交按钮的组件,提交到一个本地接口”。跑通即可,不考虑代码质量。
第二步:Plan规划。让AI输出完整的实现计划:数据库表结构、接口定义、前端组件拆分、通知服务集成点、错误处理策略。审核计划,补充遗漏。
第三步:Spec定义核心逻辑。反馈内容的校验规则、敏感词过滤、提交频率限制——这些核心逻辑用Spec方式写清楚规格,再让AI实现。
第四步:Glue集成通知服务。把反馈提交事件发送到通知服务,处理通知服务的各种返回状态。这部分用Glue范式,只做数据转换和错误映射。
第五步:Smell审查。整个功能完成后,把代码贴给AI做一轮坏味道检查,重点看重复逻辑和边界处理。
这个流水线走下来,一个中等复杂度的功能大概需要两到三小时。比全程Vibe慢一些,但代码质量完全不是一个级别。
5.2 不同规模项目的范式选择建议
个人脚本和小工具:Vibe为主,偶尔用Smell检查一下。不需要Plan和Spec,因为生命周期短,维护成本低。
中小型项目:Plan加Glue为主。先规划再执行,集成部分用Glue。核心模块可以上Spec,非核心模块用Vibe。
大型长期项目:Spec为主,Plan做整体规划,Glue做集成,Smell做定期审查。Vibe只在早期技术验证时使用。
遗留系统改造:Smell先行,识别问题区域。然后Plan制定改造计划,Spec定义新模块规格,Glue处理新旧系统对接。
5.3 范式切换的时机判断
什么时候该从一种范式切换到另一种?我的判断标准是:
- 当你发现AI生成的代码需要反复修改才能用,说明Vibe不够了,该上Plan或Spec。
- 当你发现集成代码里混入了业务逻辑,说明Glue和Spec的边界模糊了,该重新划分。
- 当你发现代码审查意见集中在同一类问题上,说明Smell范式该介入了。
- 当你发现多人协作时接口频繁对不上,说明Spec缺失,该补规格了。
这些信号出现的时候,不要犹豫,立刻切换范式。硬撑着用一种范式解决所有问题,最后付出的代价一定比切换更大。
5.4 工具链与环境的配合要点
五种范式对工具链的要求不同。Vibe范式对工具要求最低,任何支持对话的AI编程助手都能用。Plan范式需要AI能输出结构化的计划文本,大部分工具都支持。Spec范式需要你能方便地管理规格文档,建议用Markdown文件跟代码放在同一个仓库里。Glue范式需要AI能理解外部服务的接口文档,把文档贴给它就行。Smell范式需要AI能读取较大范围的代码,注意工具的上下文窗口限制。
我个人的工具配置是:一个支持长上下文的AI编程助手用于Smell和Spec,一个轻量的对话工具用于Vibe,一个支持多文件编辑的环境用于Plan和Glue。这套配置覆盖了五种范式的全部需求。
注意:不要迷信工具。五种范式的核心是协作方式,不是工具本身。用记事本加一个基础AI助手,照样能走完Spec流程。工具只是让流程更顺畅,不能替代你的判断。
5.5 关于范式演进的一点个人观察
从我开始系统使用这五种范式到现在,最大的体会是:AI编程的上限不取决于模型能力,而取决于你组织需求的能力。Vibe范式下,你组织需求的方式是对话;Spec范式下,你组织需求的方式是规格文档。方式不同,但本质一样——把你脑子里的东西清晰地表达出来。
我见过很多开发者抱怨AI生成的代码质量差,但仔细看他们的对话记录,需求描述本身就很模糊。比如“帮我写一个好用的搜索功能”——什么叫“好用”?搜多快算快?支持模糊匹配吗?结果排序规则是什么?这些不写清楚,再强的模型也写不出你想要的代码。
五种范式的价值,就是给你五个不同精度的“表达框架”。Vibe是草图,Plan是施工图,Spec是工程规范,Glue是接口协议,Smell是质检标准。你根据任务需要选择合适的精度,而不是永远只用一种。
后续如果我再遇到新的AI编程协作模式,会继续补充进来。目前这五种,覆盖了我日常工作中九成以上的场景。剩下那一成,要么是任务太特殊,要么是我还没找到合适的表达方式。