Vibe Coding 这个词最早由 OpenAI 联合创始人 Andrej Karpathy 在 2025 年初提出。他在一次演讲中描述了自己编程方式的变化——他发现自己在越来越"沉浸"地和 AI 对话,而不是在"写"代码。他把这种体验称为 Vibe Coding。
他描述的是这样一种编程方式:
你不再"写"代码,而是通过对话自然地描述你想要什么。你让 AI 来写代码,你来读代码、理解它、决定它是否正确、然后告诉 AI 怎么改。
这个定义里有三个关键点。理解这三个关键点,你就理解了 Vibe Coding 与"用 AI 写代码"的本质区别。
Vibe Coding 的第一特征是"对话"。你不是在 IDE 中逐行敲代码,你甚至不直接操作代码编辑器——你像和人聊天一样,把需求以自然语言的形式说给 AI 听。
这种对话式的编程方式带来了几个深远的变化:
从精确到模糊。 传统的"写代码"是精确到每个标点符号的表达——你少写了一个分号,程序就编译不过;变量名拼写错了,运行时就报错。代码的世界里,机器不容忍任何模糊。但对话式编程允许模糊——你说"加一个搜索功能",AI 会帮你处理那些你没有明说但属于"常识"的部分:搜索框放在哪?搜索逻辑是前端过滤还是后端查询?搜索结果是实时显示还是点击后跳转?AI 会根据它的训练数据和你的上下文,做出合理的默认选择。
从线性到网状。 写代码时,你通常一次只修改一个文件、一个函数。你的注意力集中在一小段代码上。但在对话中,你可以同时讨论 UI、逻辑、数据存储——你的思维是网状的,多个维度的信息同时存在。AI 可以同时处理这些维度的输出。
从孤岛到协作。 写代码是一个人在脑海中构建一座复杂的城堡——每个函数、每个模块之间的关系,只有你自己清楚。而在对话式编程中,AI 是你的"结对编程伙伴"。它理解你的思路,你不需要把所有的细节都在大脑中构建完整再落笔——你和 AI 一起,一边讨论一边构建。
这种对话不是单向的命令("给我做一个登录页面")——而是你来我往的迭代。你把需求说完,AI 给出结果。你看结果,觉得"这里不对"或"那里再加一个功能",接着往下说。每一轮都在逼近你真正想要的东西。
Vibe Coding 很少一次就生成一个完美的产品。它是迭代的——每一轮对话都在让你的成果更接近你的目标。
这个迭代不是因为你"不够准",而是因为创造软件本身就是一个迭代的过程。即使你是一个非常精确的开发者,你第一次写出的代码也需要调试和修改才能达到可用的状态。写代码的过程,本质上是"构思→实现→验证→修正"的无限循环。
Vibe Coding 把这个过程的形态改变了——从"写代码→运行→看报错→改代码"变成了"描述→生成→查看→不满意→重新描述"。
两种方式都在迭代,但有一个根本的区别:认知负担的转移。
在传统编程中,每一轮迭代你都需要付出"实现"的成本——你要找到报错的位置,理解报错的原因,查找解决方案,修改代码,重新运行。在这个"实现"过程中,你的大脑在同时做两件事:判断"目标是什么"和解决"怎么修改代码"。前者是创造性的思考,后者是技术性的劳动。
在 Vibe Coding 中,"怎么修改代码"这部分交给了 AI。你只需要判断"改得对不对"。认知负担从"做"转移到了"判断"——这是一个数量级的差异。
举个例子:你想把一个网页的主色调从蓝色改成暖橙色,同时调整所有按钮的圆角。
同一个修改,在传统方式中你需要花费 5~10 分钟的操作时间+注意力切换成本,在 Vibe Coding 中只需要 30 秒的描述+10 秒的审查。这个效率差,在一天的开发中会累积成数倍的整体产出差距。
Vibe Coding 背后的核心信念是:你不需要学会编程语言,但你需要知道自己想做什么。
这是一个人机协作的新分工。理解这个分工,就能理解 Vibe Coding 的本质:
| 你(人类)提供 | AI 提供 |
|---|---|
| 对需求的理解 | 把意图翻译成代码的能力 |
| 对用户体验的判断 | 语法和框架的正确性 |
| 对产品方向的把握 | 标准实现模式的自动完成 |
| 审美和直觉 | 代码规范和最佳实践 |
| 决策和取舍 | 多个方案的建议和实现 |
这种分工释放的是什么?是"写代码的能力"吗?不是——写代码的能力从来不是稀缺的,每个开发者都在写代码。Vibe Coding 释放的是思考和判断的精力。
在传统开发中,一个很大的隐性成本是"上下文切换"——你正在思考某个功能的交互逻辑,然后你切换到编辑器里写代码,写完之后再切回设计文档。每一次切换都在消耗你的注意力。Vibe Coding 让你可以一直保持在"思考"的状态——你告诉 AI 你的想法,它帮你实现,你审查结果,然后继续思考下一步。
所以 Vibe Coding 不是把"写代码"这件事变简单了——它把你从"怎么写"中解放出来,让你集中精力思考"写什么"。这是生产力释放的核心来源。
Vibe Coding 不是"用 AI 写代码"的同义词。你可以用 AI 写代码而不用 Vibe Coding——比如你把需求写成详细的 PRD 发给 AI,让它一次生成所有代码,然后你一次性审查。这更像"外包开发"而不是 Vibe Coding。
Vibe Coding 的区别在于:你是实时参与决策的。 你不是把需求扔给 AI 然后等结果——你是一步一步地和 AI 一起构建,每一步都在审视、判断、调整方向。你不是在"使用"AI,你是在和 AI 协作。
这个区别可以用做饭来类比:
在实际工作中,这两种模式都有各自的适用场景。当你需求非常明确、输出格式固定时,外包模式可能更高效——比如"用 Python 写一个 CSV 转 JSON 的脚本"。当需求在探索中、需要不断优化时,Vibe Coding 的协作模式更有优势。
但本书讨论的是 Vibe Coding——这种新的协作式构建软件的方式。所以后面的章节,我们都会围绕这个核心定义展开。
假设你想做一个"每日金句"的网页——每天显示一句名言,外加一个作者信息。这是 Vibe Coding 的典型场景:
第 1 轮对话:
你:"帮我用 HTML + CSS + JS 做一个每日金句网页,一个卡片居中显示,卡片里有一句名言和作者。每次刷新页面随机显示一条新的。"
AI 生成了一个 HTML 文件,包含 5 条金句的硬编码数据和基本的卡片样式。你预览后觉得满意。
第 2 轮对话:
你:"做得不错。但是我不想硬编码金句,改成从 GitHub Gist 读取 JSON 数据,方便以后添加新金句。样式上,背景用渐变色,卡片加一个柔和的阴影。"
AI 修改了代码,加入了 fetch 逻辑和渐变背景。你审查后发现读取逻辑正确,但是渐变色不对——"颜色太暗了,改成浅蓝到浅粉的渐变"。
第 3 轮对话:
你修改了颜色描述,AI 更新了 CSS。这次颜色对了。你又说:"再加一个淡入动画,每次刷新时卡片从下方滑入。还有,字体使用系统默认的衬线字体。"
AI 完成了修改。你测试后觉得完美了——效果符合预期。
回顾整个过程:
这就是 Vibe Coding 的体验——你不是在"写"程序,你是在通过对话"构建"程序。
找一个你最近想做的小工具或网页功能(不要太大,能用 2~3 轮对话完成就行)。用 Vibe Coding 的方式完成它,同时有意识地观察:
1. 你和 AI 的对话是几轮完成的?
2. 在哪些环节你做了关键的决策?
3. 你花了多少时间在"判断"上,多少时间在"实现"上?
4. 如果用传统方式做同样的事,你觉得需要多久?
做完后,问 AI:
"用你自己的话,用三句话向我解释——什么是 Vibe Coding?为什么它和'用 ChatGPT 写代码'不一样?请用最简洁的语言回答。"