Vibe Coding:当编程变成"说出想法,AI 实现"
“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.”
—— Andrej Karpathy,2025 年 2 月
一、什么是 Vibe Coding?
2025 年 2 月,前特斯拉 AI 总监、OpenAI 联合创始人 Andrej Karpathy 在 X(Twitter)上发了一条推文,创造了这个迅速走红的术语——Vibe Coding。
他描述自己的新工作流是这样的:打开 Cursor 或 Windsurf 这类 AI IDE,用语音输入说"把侧边栏的 padding 减半",然后直接接受 AI 生成的代码。如果报错了,就把错误信息直接粘贴给 AI,不加注释,让它自己改。整个过程完全不看代码——用他的原话说:
“I just vibe, accept patches, run it, repeat.”
翻译成中文的大白话就是:把脑子里的想法"氛围感"地传达给 AI,剩下的交给 AI,你只管跑起来看看。
二、Vibe Coding 的本质:编程范式的转移
要理解 Vibe Coding,得先看看编程这条路的演变:
| 时代 | 方式 | 门槛 |
|---|---|---|
| 1950s | 打孔纸带 | 物理层面操作机器 |
| 1960s-70s | 汇编语言 | 需理解 CPU 指令集 |
| 1980s-90s | C/C++ | 需掌握指针和内存管理 |
| 2000s | Java/Python | 关注面向对象和框架 |
| 2010s | 现代框架 + Stack Overflow | 复制粘贴 + 理解 |
| 2025 | Vibe Coding | 描述意图 + AI 生成 |
每一步都在降低编程的门槛,把开发者的心智从"怎么实现"向"实现什么"转移。而 Vibe Coding 是这个链条的最新一环——连复制粘贴 Stack Overflow 都省了,你只需要把你的 vibe 传达出去。
Vibe Coding 不是不写代码,而是不再逐行思考代码。
三、一个典型的 Vibe Coding 流程
假设你想做一个番茄钟网页应用:
传统方式
- 打开终端,
npm create vite@latest初始化项目 - 配置路由、状态管理
- 手写计时器逻辑,处理
setInterval、useEffect - 调 CSS,试 flex 还是 grid
- 反复 Google “React timer component”、“CSS circular progress bar”
- 大概耗时:2 小时
Vibe Coding 方式
- 打开 Cursor,在对话框输入:
“帮我做一个番茄钟网页,25 分钟工作时间 + 5 分钟休息,带圆形进度条和完成音效,使用 React + Tailwind”
- AI 生成 200 行代码
- 预览,觉得颜色不对,又说:
“把配色改成暖色调,背景加个渐变”
- AI 修改,你再预览,满意就提交
- 大概耗时:10 分钟
区别不在于用不用 AI——而在于你是否阅读和理解 AI 生成的每一行代码。 Vibe Coding 的核心态度是:代码只是"手段",体验才是"目的",我不需要知道它内部是怎么转的,我只用看它跑起来对不对。
四、Vibe Coding 值得推崇吗?——一个客观的评价
它确实很爽的地方
-
极致的速度感
以前搭个 Landing Page 要一下午,现在 15 分钟搞定。原型验证、MVP 构建的效率直接乘以 10。 -
降低非工程背景的创作门槛
设计师、产品经理、创业者可以直接用自然语言做出可用的 Demo。编程变成了一种"表达"而非"技艺"。 -
解放心智负担
不需要记住 Tailwind 那 3000 个类名,也不需要去想useMemo和useCallback的区别。把认知资源留给更有价值的事情:产品逻辑、用户体验。 -
"玩"的乐趣回来了
很多开发者开始写一些没用的、有趣的小东西——给女朋友做告白网页、给猫做一个自动喂食器监控——只是因为"现在做一个东西太简单了"。
但问题也很明显
-
调试地狱
当项目超过 500 行,AI 生成的代码开始出现逻辑冲突,而你看不懂其中的因果关系。你在一个黑盒上修 bug,修了一个冒出三个。 -
技术债务无声积累
AI 倾向于给你"能跑就行"的代码。不处理边界情况、没有错误处理、可访问性为 0。当原型变产品时,refactor 的成本可能比从头写还高。 -
学习路径的悖论
如果新人从一开始就 Vibe Coding,他永远不会理解"为什么这个组件会重新渲染"、“为什么 state 更新是异步的”。而当 AI 出错的时候,他没有任何 debug 的 mental model。 -
所有权的模糊
当你没有亲手写下一行代码,这个项目到底还"是你的"吗?当项目复杂到一定程度,你会发现自己对系统的掌控力趋近于零。
Karpathy 自己怎么说?
值得注意的是,Karpathy 这条推文本身带有半开玩笑的性质。他被问到"这种方法适合真正的项目吗"时,给出的回答是:
“For throwaway weekend projects it’s amazing. For production systems, you still want to understand what’s happening.”
说白了:Vibe Coding 是快速原型和 side project 的神器,但不是构建生产级系统的正确方式。 最好的实践可能是——在理解代码和控制代码的前提下,把重复性、低价值的编码工作 vibe 掉。
五、如何正确地"Vibe"?
如果你决定尝试这种工作流,这里有一些建议:
1. 保持"导演思维"
你不是 AI 的打字员。你是导演,AI 是演员。你要清楚地描述场景、情绪、节奏,而不是漫无目的地让它"自由发挥"。
❌ "帮我写个好看的网页"✅ "做一个个人博客主页,极简风格,文章列表 + 标签筛选,移动端优先,配色参考 Linear 官网"
2. “信任但验证”
每接受一次 AI 的 patch,跑一下测试。不要去理解 200 行代码,但至少理解数据流和控制流的大方向。
3. 学会拆分任务
不要一次性给 AI 一个巨大的 prompt 让它生成 1000 行代码。拆成小步骤,每一步验证结果,类似 TDD 的思路:
- 先让它生成页面结构
- 再加交互逻辑
- 再加样式
- 再加动画
4. 把 vibe 出来的项目当成"草稿"
承认 vibe 出来的代码可能就是个垃圾,但垃圾代码也有价值——它能验证想法、给真实开发提供参考、快速确认"这个方向对不对"。
六、写在最后
Vibe Coding 与其说是一种编程技术,不如说是一种时代情绪。
它代表了我们对编程这件事的态度转变:编程不再是苦行僧式的敲键盘过程,而是一种快速将想法转化为现实的创作方式。就像摄影从暗房变成手机拍照,编程也从一种需要深厚技法的手艺,向着更直觉、更民主的方向演进。
但这种演进并不意味着"手艺人"会消失。正相反,当 AI 能写出 80% 的代码时,能分辨哪 20% 需要重写、能设计出让 AI 写出好代码的架构、能在 AI 出错时有能力兜底的高级工程师,反而变得更加珍贵。
所以,尽情去 Vibe 吧——但别忘了,最好的 vibe,是建立在你真正懂代码的基础之上的。
2025 年 8 月





