不是所有 AI 编程都是 Vibe Coding(但 Vibe Coding 很爽)

170 阅读6分钟

转载

Vibe coding 正在走红。 这个术语是由 Andrej Karpathy 在2月6日提出的,后来被《纽约时报》《Ars Technica》《卫报》和无数在线讨论引用。

但我担心这个词的原意已经开始被淡化。我看到很多人把“vibe coding”这个词用在所有 AI 辅助写的代码上。我认为这不仅稀释了这个术语,还会对“负责任的 AI 编程”形成误导性的印象。

Vibe coding ≠ 使用 LLM 写代码!

以下是 Andrej 最初那条推文的全文(我加了重点):

有一种我称之为 “vibe coding” 的新型编程方式,你完全放飞自我,顺着直觉走,忘了代码本身的存在。这成为可能,是因为 LLM(例如 Cursor Composer + Sonnet)实在太强了。现在我直接用 SuperWhisper 和 Composer 对话,几乎不碰键盘。

我会提出一些超懒的需求,比如“把侧边栏的 padding 减半”,因为我懒得自己找。我总是点“接受全部”,根本不看 diff。遇到错误信息我直接复制粘贴进去,不加说明,通常也就修好了。代码规模已经超过我的理解范围,我得认真看一阵才能弄懂。有时候 LLM 修不好 bug,我就绕过去,或者不断尝试随机修改直到 bug 消失。

用在周末做的小玩具项目上问题不大,甚至还挺有趣。我确实是在构建一个项目或网页应用,但这并不是编程——我只是看到什么说什么,运行一下,复制粘贴,基本上就能用。

我非常喜欢这个定义。Andrej 是一位极具天赋、经验丰富的程序员——他根本不需要靠 AI 辅助。他这样用 LLM,纯粹是因为有趣,而且 LLM 产出的速度比人类程序员快一个数量级。对于低风险的小项目和原型,尽管放开手去搞吧!

当我谈论 vibe coding,我指的是:用 LLM 构建软件时,并不审查它所写的代码。


使用 LLM 负责任地编程 ≠ vibe coding

我们来对比一下这种“忘记代码存在”的方式和专业开发者使用 LLM 的方式。

程序员的职责不仅仅是产出代码和功能。我们必须写出能运行、能被人理解、能持续迭代维护的代码

我们需要权衡性能、可访问性、安全性、可维护性、成本效率……软件工程就是不断做权衡的过程——从多个备选方案中选出一个最合适的。

我们还需要阅读代码。我对“生产级别 AI 编程”的黄金法则是:

如果我不能向他人解释这段代码的原理,就绝不会提交它。

如果你让 LLM 写了代码,然后你自己认真地审查、测试、理解了它的逻辑,这就不是 vibe coding,这就是在认真搞开发。LLM 是否参与并不重要。

我在《Here's how I use LLMs to help me write code》那篇文章中详细描述了我的开发流程,而 vibe coding 只是我流程中很小的一部分。


不要忘了 vibe coding 的独特价值

我也不希望“vibe coding”这个词变成“胡搞乱写 AI 代码”的贬义词。这种新型编程方式,其实潜力巨大!

我相信每个人都应该具备用计算机自动化琐事的能力。你不应该非得上过 CS 学位、参加过编程训练营,才能让电脑为你完成那些“极其具体”的任务。

如果 vibe coding 能让数以百万的人拥有自制工具的能力,我会非常欣慰。

有些人可能就此爱上编程,最终成为专业开发者。而最大的障碍之一就是陡峭的学习曲线,而 vibe coding 把这个门槛几乎拉平了。

对有经验的程序员来说,vibe coding 也非常有用。我之前说过,使用 LLM 编程并不容易——需要时间培养直觉,了解哪些能做、哪些不能做,中间还藏着不少坑。

vibe coding 是建立这种直觉的最佳方式。我已经通过 vibe coding 做了 80 多个实验,从中学到了很多。我鼓励每一位程序员,无论水平如何,都尝试一下。


什么时候可以 vibe coding?

这一节主要是写给新手开发者的(老手应该早已心知肚明):

  • 项目必须是低风险的。 要想清楚,如果你写的代码有 bug 或漏洞,会不会造成伤害?比如名誉受损、金钱损失,甚至更严重的问题。如果你打算让别人使用这段代码,那就尤其要小心!

  • 注意安全性。 安全问题很复杂,但可以先关注几点:

    • 留意密钥和密码(如 API Key)这类“机密信息”。如果你不了解代码逻辑,很容易泄露这些信息。
    • 关注数据隐私。如果工具访问了私人数据,你需要非常清楚这些数据是否可能意外外泄。
    • 做个好网络公民。不要让你的代码无意中给其他平台造成负担或花费。这也是我喜欢 Claude Artifacts 的原因:它们的沙箱机制防止事故波及他人。
  • 注意经济风险。 有人曾用 vibe coding 调了个 API,结果被高额计费系统收了几千美元。只要涉及使用量计费,就千万要小心。

如果你打算发布给别人使用,建议找更有经验的人先做个“vibe check”(字面和双关都成立)


如何让 vibe coding 更安全?

这里有很多值得探索的产品设计空间。

让初学者安全地 vibe coding,从沙箱开始。 Claude Artifacts 是最早的大众化 vibe coding 工具之一,其沙箱策略非常出色:

  • 代码只能运行在隔离的 <iframe> 里;
  • 只能加载白名单中的库;
  • 不能向外部网站发出网络请求。

这样可以大大降低出错的风险,但也限制了功能。比如你不能通过 Claude Artifacts 使用外部 API,也不能实现自定义 prompt 调用。

而其他工具,如 Cursor(最初是为专业开发者设计的),就几乎没有这些保护机制。

所以还有很多创新空间。希望未来能出现更多新工具,既安全又高效地帮助人们打造自己的软件工具。


去 vibe code 吧!

我不希望让新手望而却步。最好的学习方式就是“动手做项目”!

对于有经验的开发者来说,这是一种快速建立“AI 编程直觉”的绝佳方式。对于新手来说,这是一扇通向编程世界的大门。

但请记住:别把 vibe coding 和所有 LLM 编程混为一谈。