Vibe Coding(直觉编程/氛围编程),简单来说,就是开发者不再一行行敲代码,而是通过自然语言与 AI 持续对话,顺着直觉把程序“聊”出来。
这段时间,我正好在处理一些繁杂的 Python 后端逻辑,并重构了几个 Vue 前端组件,期间大量尝试了这种开发模式。
经过初期的兴奋和随之而来的踩坑,我的总体体会是:Vibe Coding 并非无所不能的银弹,它本质上是一次工程管理方式的转移。
并非所有场景都适合让 AI 接管。下面是我总结的几点观察与个人最佳实践。

一、 代码的层次:AI 的边界在哪里?
在使用 AI 写代码之前,最大的忌讳就是把整个项目像一团乱麻一样丢给它。根据“业务定制化程度”和“AI 生成可靠性”,我们应该将项目代码清晰地解构为三个层次。
1. 基础设施与工程化代码(底层) 这是项目的地基,通常属于非功能性需求,有着高度程式化的行业标准。
- 例子: 前端的 Vite 工程配置、Axios 请求拦截器;后端的 Python 运行环境 Dockerfile、SQLAlchemy 数据库连接池初始化,以及 CI/CD 流水线脚本。
- 策略:完全释放,一键生成。 这类代码在开源世界有海量标准答案,AI 极少犯错。你可以用几句简单的指令,让 AI 直接把地基打好。
2. 标准业务模块与通用组件(中层) 这是日常开发中“重复造轮子”的重灾区。逻辑虽然庞大,但模式相对固定。
- 例子: 基于 JWT 的登录鉴权模块、RBAC 权限系统;前端带有分页与导出功能的 DataGrid 表格、标准的 CRUD 表单模板。
- 策略:微调与组装。 让 AI 生成基础版本,然后通过对话补充业务字段和调整 UI。通常 3 到 4 个回合的对话就能得到满意的结果。
3. 核心领域逻辑(顶层) 这是系统的灵魂,包含了项目中独一无二的业务规则。
- 例子: 金融系统中复杂的资金对账与清算算法、涉及多级部门的审批流状态机、动态表单的复杂联动校验。
- 策略:严密监控,人工主导。 绝不能用一句话让 AI 直接写核心逻辑。必须由人类先划定严密的逻辑边界,将大问题拆解为极小的函数,再让 AI 填空。
二、 思考与执行的分离:双模型协作
在实际落地中,我发现单一模型往往难以兼顾所有环节。比如 Claude Code 的工程落建能力极强,但在面对模糊的内部需求或缺乏开源语料的非通用领域时,部分第三方模型(比如Minmax、GLM等)在长上下文的逻辑推理上依然存在瓶颈。
一种比较好的实践是分离“思考”与“执行”:
遇到复杂任务,先使用 Gemini 这类具备强大长文本与逻辑分析能力的模型进行需求澄清。把模糊的想法转化为清晰的结构,理清技术实现路径,最终输出一份确定的“技术设计产物”(Spec)。 拿到这份详尽的“施工图纸”后,再交给工程能力强的模型去完成具体的代码编写。
三、 流程的尺度:什么时候需要写文档?
文档(Spec)的轻重,取决于任务的颗粒度和生命周期。
- 轻量级介入: 对于日常修复 Bug、调整 Vue 组件参数,直接用短对话进行 Vibe Coding 即可。强行写详尽的说明书反而丧失了敏捷性。
- 重度介入: 如果面对的是一个全新的重构,或是一次伤筋动骨的大版本迭代,前期的 Spec 绝对不能省。没有清晰的架构规划,AI 最终只会产出一堆看似能跑、实则无法拼接的碎片代码。
四、 防御性协作:应对 AI 的“失控”
AI 会遗忘上下文,会产生幻觉,甚至会煞有介事地虚构不存在的 API。在长周期的开发中,我们需要建立一套“防御机制”:
- 善用回顾(Insight): 在多轮对话后,定期让 AI 总结当前的上下文、已完成的工作和接下来的技术原则,防止它偏离主线。
- 打破信息隔离(MCP): 很多幻觉来源于 AI 知识库的滞后。配置好联网搜索等 MCP(模型上下文协议)工具,让 AI 实时获取最新的官方文档,这是减少幻觉最有效的物理手段。
- 果断回滚(Rewind): 如果 AI 开始瞎编逻辑,千万不要试图通过无休止的对话去“纠正”它。错误的上下文只会越积越多。果断回滚到出错前的干净状态。
- 守住底线(人工介入): 如果 AI 在同一段报错上连续踩坑两三次,立刻停止对话,人工介入审查源码。试图通过写更多的 Prompt 让 AI 自己领悟,消耗的时间往往比自己手写还要长。
五、 工具的祛魅
现在社区里经常把各种自定义的技能插件(Skill)吹得天花乱坠。但现实是,每个人的技术栈和项目结构都有其独特性,生搬硬套别人的“最佳实践”往往会水土不服。
不要过度追求复杂的自动化工具链。大道至简,找到符合自己节奏的提示词(Prompt)习惯,熟练运用官方提供的通用基础能力,比折腾一堆炫酷的插件重要得多。
结语
Vibe Coding 确实正在重塑开发体验,极大降低了编写“胶水代码”的体力消耗。但也正因如此,它将软件开发的重心从“如何写代码”转移到了“如何提出正确的问题”。