Skip to content

什么是 Vibe Coding

Vibe Coding 这个词是 Andrej Karpathy 在 2025 年初造的。他说的是这样一种状态:你把意图告诉 AI,AI 给你生成代码,你不一定完全读懂,但你能判断它跑不跑、对不对,然后继续往下描述下一个需求。

这不是"代码生成工具"的委婉说法,也不是"低代码平台"的换皮版本。它更接近一种新的工作节奏——你的主要输入是自然语言描述,AI 的主要输出是可运行的代码,而你的角色是判断者和引导者,不是每一行的实现者。

Karpathy 原话是这样说的:"There's a new kind of coding I call 'vibe coding', where you fully give in to the vibes, embrace exponentials, and forget that the code even exists."

当然,"forget that the code even exists"这句话是夸张说法,实际工作中你不可能真的不管代码。但他点出了一件真实的事:在这种工作方式里,代码不再是你的主要输出,你对结果的判断才是

它和"用 AI 辅助写代码"有什么区别

你可能已经用过 GitHub Copilot、ChatGPT 或 Cursor 来帮你补代码。那种用法通常是:你知道自己要写什么函数,让 AI 帮你补全实现细节,或者帮你查语法。控制权始终在你这边,AI 是个执行工具。

Vibe Coding 的节奏不一样。你描述的是目标,不是实现路径。"帮我做一个支持拖拽排序的任务列表"——你不决定用哪个库、怎么组织组件、数据怎么存。AI 给你一个完整方案,你运行它,看效果,然后继续描述下一个需求或者调整方向。

两种工作方式的对比:

AI 辅助写代码Vibe Coding
你的输入函数签名、TODO 注释、具体问题目标描述、行为期望
AI 的角色填充实现细节设计并实现完整方案
你的角色主导实现路径判断结果是否符合预期
适合的任务规模局部修改、小函数完整功能、新项目
对代码的理解要求较高(你需要能读懂每行)较低(能判断行为对不对就行)

这意味着你会经常在没有完全理解代码细节的情况下做决策。这对很多有经验的开发者来说反而有点不适应,因为过去的习惯是"不理解就不继续"。

它适合什么场景

Vibe Coding 在以下情况下效果比较好:

  • 你有一个具体目标,但不熟悉某个技术栈(比如你是后端,但要做一个前端原型)
  • 你想快速验证一个想法,不想在基础架构上花时间
  • 任务边界清晰,可以一块一块描述
  • 你能判断结果对不对,哪怕不知道实现细节
  • 项目早期,架构还没定型,改来改去成本低

效果比较差的场景:

  • 任务本身你还没想清楚,边描述边发现目标在变
  • 项目已经有大量历史代码,AI 对上下文的理解开始出错
  • 你对结果的正确性没有判断能力,完全依赖 AI 自检
  • 涉及复杂的安全、并发或数据一致性要求,需要对实现细节负责

第二类场景不是说不能用 AI,而是 Vibe Coding 那种"持续描述、持续接收输出"的节奏会失控。你需要先把问题想清楚,再进入这个工作流。

一个实际的判断方法:如果你能在 5 分钟内写清楚"这个功能成功的样子是什么",Vibe Coding 就可以开始。写不清楚,先把问题拆清楚。

技术背景影响大吗

有基础比没有基础上手更快,但不是必须的。

有前端/后端/全栈基础的开发者,Vibe Coding 能帮你绕过不熟悉的技术栈,同时保留你对架构和质量的判断能力。你不需要学每个框架的细节,但你知道"这个接口设计合不合理""这个错误处理少了什么"。

完全没有编程经验的人也能做出能跑的东西,但通常卡在"能跑"和"真正可用"之间的差距上。AI 不会主动告诉你它生成的权限检查是不是够的、这个 SQL 在大数据量下会不会慢。

所以真正的门槛不是"会不会写代码",而是"能不能判断代码的结果"。

最容易踩的坑

代码跑起来了,就觉得任务完成了。

"能跑"和"正确"之间有很大的距离,尤其是涉及边界条件、并发、权限或数据一致性的时候。AI 给的代码在 happy path 上通常没问题,但它不会主动说"这个实现在高并发下会出问题"。

你的判断能力是整个工作流里最不能外包出去的部分。

让 AI 一次生成太多。

如果你把一个复杂功能一口气描述清楚,AI 会生成一大块代码。这块代码的问题不是质量差,而是你不知道从哪里开始验证、出了问题怎么定位。更有效的做法是把功能切小,每次只描述一步,跑通了再描述下一步。

出了问题就读代码,而不是先描述现象。

Vibe Coding 里,当 AI 生成的代码出问题时,最快的修复路径通常不是自己去读代码找 bug,而是把错误信息和复现步骤直接给 AI,让它自己定位和修复。自己读代码是个备选方案,不是第一反应。

忽略 diff,直接接受所有修改。

AI 有时候会做超出预期的修改,或者在修复一个问题时引入另一个问题。每次修改后花 30 秒扫一眼 diff,确认改动范围在预期内,这个习惯会帮你省掉很多麻烦。

它对开发者意味着什么

不是"替代程序员"的问题。它改变的是个人开发者的能力上限。

过去,一个人在一个周末能做的事有明确的上限——你的时间、你知道的技术栈、你能手写的代码量。现在这个上限变了。一个后端工程师可以在不懂 React 的情况下做出一个前端原型;一个有产品想法但不会写代码的人可以跑出一个能演示的版本。

这里面有个前提:你得会用这套工具,也得知道它的边界。盲目相信 AI 输出的人会产出一堆能跑但不可维护的代码,而能判断 AI 输出质量的人会快得多、出错少得多。

工程判断能力反而变得更值钱,而不是更不值钱——只是它现在需要和新的工作节奏结合起来。


下一页是第一个 Vibe Coding 项目,用一个具体的 Todo App 跑通从描述到运行的完整流程。

面向开发者系统学习 AI 应用开发、RAG、Agent 与 Vibe Coding。