返回首页

什么是 Vibe Coding:Karpathy 这条推文,把"写代码"重新定义了

2025 年 2 月,Andrej Karpathy 在 X 上发了条推文,说他写代码已经变成"看一眼、说一句、跑一下、复制粘贴一下"。这个被称作 vibe coding 的工作方式,有人说是编程的未来,有人说是工程的灾难。它到底是什么?谁在用?有没有坑?

1 约 5 分钟 · 4099 字 AI

写完上一篇 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 是过去两年三件事一起到位的产物:

  1. 模型能力跨越临界点

    • GPT-4 / Claude 3.5+ / DeepSeek V3 等模型在长上下文、代码生成、错误修复上的能力已经能完成 80% 的中等复杂度任务
    • 一段几千行的项目,丢给它能理解,能改,能不挂
  2. Agent 类编程工具产品化

    • Cursor / Claude Code / Windsurf / GitHub Copilot Workspace 等产品可以直接读写整个 codebase、自己跑命令、自己看输出
    • 不再是"AI 给你建议,你复制粘贴",而是"AI 自己改文件,你看 diff 决定要不要"
  3. 试错成本无限趋近 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-