写完上一篇 Transformer 内部结构 顺手聊聊另一个跟 LLM 强相关、但完全不一样的话题 —— Vibe Coding。
这个词在 2025 年 2 月之前几乎不存在,半年时间席卷了整个程序员圈,知乎、X、HN、Reddit 全都在吵。所以它到底是什么?
一句话定义
不写代码,只对 AI 说想要什么,看效果不对再说一句,直到能跑为止。
听起来像玩笑话,但这是 Andrej Karpathy 提出来的。这位老兄是谁不用多说 —— 前 OpenAI 创始团队、前 Tesla AI 总监、Stanford CS231n 视觉课的讲师,一手把 nanoGPT 和「神经网络从零实现系列」做成 YouTube 顶流。
2025 年 2 月,他在 X 上发了条推文,大意是:
我最近搞了个新的"编程"方式,我管它叫 vibe coding。
我完全顺着感觉来,完全沉浸在 vibes 里,完全忘记代码是存在的。我看一眼,我说一句,我跑一下,我复制粘贴一下 —— 大部分时候这玩意儿真能跑。
原文几个核心动作:"see things, say things, run things, copy-paste things"。注意,这里几乎没有"读代码 / 写代码 / 调试代码"这些动词了。
它跟"用 Copilot 写代码"有什么不一样?
很多人第一反应:"这不就是用 Copilot / Cursor 嘛,有啥新鲜?"
不一样。区别在心智状态:
| 维度 | 传统 AI 辅助编程 | Vibe Coding |
|---|---|---|
| 心态 | "AI 是我的副驾驶,我开车" | "AI 是开车的,我说去哪" |
| 看代码 | 我写一行 / AI 补一行,我审一下 | 经常一整个文件没读过,不挂就行 |
| Debug | 看堆栈 → 改代码 | 截图错误 → 丢给 AI → 让它再来一遍 |
| 报错处理 | 找原因 | "这报错了你修一下" |
| 产出心态 | 我在写程序 | 我在指挥程序被写出来 |
Karpathy 在那条推文里举的例子是,他让 AI 改一段 CSS 样式 —— 报错了,他直接把错误粘回去说"修一下",然后又能跑了,他根本没看 AI 改了什么。
这就是 vibe 的精髓:对代码失去关心,只关心结果。
为什么 2025 年才火?
这个工作方式不是新概念,GitHub Copilot 2021 年就出了,但当时这种玩法不可能 —— 因为模型不够聪明。Vibe Coding 是过去两年三件事一起到位的产物:
模型能力跨越临界点
- GPT-4 / Claude 3.5+ / DeepSeek V3 等模型在长上下文、代码生成、错误修复上的能力已经能完成 80% 的中等复杂度任务
- 一段几千行的项目,丢给它能理解,能改,能不挂
Agent 类编程工具产品化
- Cursor / Claude Code / Windsurf / GitHub Copilot Workspace 等产品可以直接读写整个 codebase、自己跑命令、自己看输出
- 不再是"AI 给你建议,你复制粘贴",而是"AI 自己改文件,你看 diff 决定要不要"
试错成本无限趋近 0
- 报错了让它重写一遍,1 分钟的事
- 思路错了让它换一种,2 分钟的事
- 这种"快速迭代 vibes"的反馈循环,人脑写代码根本卷不过
它在解决什么问题?
不是替代专业开发,而是让原来不会编程的人开始能造东西。
举几个真实场景:
- 设计师做交互原型:以前要找开发,现在 vibe 一下,几个小时能跑起来
- 产品经理验证想法:写个 MVP 不用排进开发周期,自己出
- 运营 / 数据分析:Excel 公式做不来的事,直接让 AI 写 Python 脚本跑
- 学生 / 业余爱好者:做个小游戏 / 个人网站,不用先学三个月 React
- 开发自己:写自己用的小工具(脚本、爬虫、效率插件),不要求工业级质量,vibe 就够了
我自己这个博客其实就是 vibe coding 出来的。Nuxt 4 我之前没认真用过、shiki 双主题之前也没碰过、PM2 cluster 模式调优更是 vibe + 实测。如果按"先把每行代码看懂再写"的节奏,这博客可能还停在「Hello Nuxt」页面。
但是,争议很大
Vibe Coding 出圈的同时,反对声音也炸开了。理性的批评主要三条:
1. 代码质量参差不齐
AI 生成的代码:
- 经常看起来对、跑起来对、但生产用了挂(并发、边界条件、内存泄漏)
- 同一个 bug 修一次复现一次(因为根本没修对)
- 代码风格混乱(每个文件都像不同人写的,没有架构感)
- 过度工程化:让它写个简单 CRUD,它给你来个 Repository + Service + DTO 三层
我自己踩过的:
javascript-obfuscator在 Rollup 下 PARSE_ERROR 这个坑,AI 第一次给的方案错三个不同方向,最后是我读了 Rollup 源码才搞清楚。某些冷门技术栈或边界场景,vibe 是顶不住的。
2. 安全漏洞 + "信心通胀"
CSO Online、Snyk 等做过几份调研,结论惊人一致:
- AI 生成的代码有 ~40% 包含至少一种安全漏洞(SQL 注入、XSS、敏感信息泄漏等)
- 用 AI 的开发者比不用的更自信代码是安全的 —— 但其实更不安全
- 个人项目无所谓,生产环境上线如果不审,迟早出事
3. "新一代程序员可能再也学不会底层"
这是最有争议的论点。比尔盖茨说过类似的话,Karpathy 自己后来也补了一条:
适合写自用、能扔的、玩具级的代码。不适合长期维护的、多人协作的、生产环境的代码。
担忧来自:如果学编程的第一天就习惯 vibe coding,会不会永远建立不起对底层的直觉?指针、并发、网络协议、操作系统调度... 这些不靠"看 AI 写"就能掌握的东西,会不会成为新一代开发者的盲点?
目前这是开放问题,没人有答案。
我自己的几条心得
写了三个月 Cursor + Claude 之后,总结几条对自己有用的边界:
1. 80/20 用 vibe,20/80 用脑子。
新功能、新文件、初版实现 → vibe 起飞,效率 5 倍。 核心算法、安全相关、性能瓶颈、生产事故 → 必须自己读懂每一行,AI 只做辅助。
2. 用 vibe 的时候依然要 review diff。
不看代码 ≠ 不看 diff。diff 是 AI 在向你交作业,你不看就等于直接合并垃圾。养成习惯:
- 每次 AI 写完先看 diff,有疑问就问"为什么这里这么写"
- 不理解的地方,让它解释,不接受"work 就行"
3. 为可逆性优化,不为完美优化。
vibe coding 的核心假设是试错很便宜。所以:
- 每次小步提交 git,炸了能 revert
- 多用沙盒:Cursor 的 best-of-n /
git worktree/ 临时分支 - 测试覆盖率不一定高,但关键路径必须有(让 AI 写测试用例反而比让它写业务代码靠谱)
4. 不懂的东西先看官方文档,再 vibe。
新框架 / 新库,先花 30 分钟读官方 quickstart,然后才让 AI 帮你写。否则你连 AI 写得对不对都判断不了。
一句话总结
Vibe Coding 是 AI 编程进入"够用 + 易用"阶段后的副产品。它不会替代严肃工程,但确实把"造软件"这件事的入门门槛拉低了 80%。
对于业余开发者、原型验证、个人小工具,这是降维打击的生产力。
对于生产代码、安全敏感场景、多人协作,这只是个起点,后面的工程化打磨、性能调优、可读性维护、长期演进,仍然需要会写代码的人来兜底。
工具可以是 vibe 的,但你的工程素养不能 vibe。
下次见。
-EOF-