Vibe Coding:当人类成为AI代码的氛围组件

正如两年前大模型爆火时人们所预料的一样,在今天,AI已经深入到代码编写的方方面面。当AI生成的代码排山倒海般地袭来,程序员在当下要如何证明自己的价值?或者,至少让自己不被海量的代码所淹没?

1 Vibe Coding

最近,"vibe coding"的概念火了起来。

"vibe coding" 来自Andrej Karpathy(OPENAI创始人之一)的一则推文,在中文里大致可以被译作"氛围编程",这个概念描述了一种新的编程方式,也就是编程者并不关心代码本身,而是只是沉浸在编程的"氛围"里。尽管这不是一种精确的定义,但相信所有熟悉AI辅助编程体验的人,都多少知道这个概念大概的含义。

vibe coding 来源

而这种方式之所以能够实现,是因为当前的嵌入大语言模型的IDE,例如 Cursor,已经强大到让人几乎不用动手写代码

"vibe coding"创造了一种模糊的实践。用Andrej Karpathy自己的话说:"我总是提出一些非常随意而模糊的需求,要求AI来实现,然后总是在不查看任何差异(diffs)的情况下点 "接受全部修改",最后测试运行。如果代码报错了,就把错误信息复制粘贴给 AI,AI在阅读了错误信息之后基本都能修好。"

2 不完美的魔杖

还记得在UC Berkeley 的CS61B课程中,Josh Hug(我最喜欢的老师之一!)在结课时说过,CS(计算机科学)的最大魅力,也是和其他所有学科不同的一点是:CS就像魔法一样,是一种完全关于想象力的学科。只有先想象到,才能通过代码来实现。

魔法世界
《葬送的芙莉莲》,强烈推荐!

今天嵌入大语言模型的IDE,似乎正在让这种说法成为现实。它不仅让霍格沃茨的大门向所有人开放,还亲自把魔杖递到了我们的手上——只要轻轻一挥,就能轻松实现Lumos或是Expelliarmus这样神奇的魔法。

对于绝大多数人,特别是刚刚接触编程的人来说,这无疑是一件令人兴奋的事情。它让我们终于不需要再关注那些晦涩的语法和复杂的依赖,想象力和创意成为了这个时代里唯一有价值的东西。

可是,这个魔杖并不完美。一旦魔法出现复杂的问题,它很容易陷入不断重构又原地打转的怪圈之中,它好像在解决问题,可却总是在创造出更多新的问题。更令人难以接受的是,面对出现的bug,它甚至会像奇异博士的斗篷一样,对使用它的人摆出一副振振有词的姿态,gaslighting它的使用者。

此时,我们好像是被打回原形的麻瓜,面对着复杂到难以理解的代码,最好的解决方式不是去试图理解代码,而是换一个魔杖,寄希望于这把新的魔杖(ChatGPT、DeepSeek、Gemini…)有着更强的能力来解决当前的问题。

3 浮沙上的迷宫

幸运的是,魔杖的制造商们正在进行着军备竞赛,每隔几天就有新的魔杖被研发出来,这些新的魔杖不仅法力更强,而且还比旧魔杖更便宜,人人都能用上。

正如Dario Amodei的预测:"人工智能很快就能在短短三到六个月内编写 90% 的软件代码,在 12 个月内,几乎所有的编码任务都可能由 AI 处理,人类开发人员需要做的只是为这些模型提供设计输入与参数。"

不幸的是,面对着层出不穷的魔杖,我们会渐渐发现,在今天通过训练养成的任何肌肉记忆都是一种浪费,因为我们花费一万小时练习得到的成果很可能就在下一批魔杖的射程之内。

而这样的结果就是,我们一开始以为自己只是在为了效率做妥协,但却慢慢发现自己陷入在一重又一重建在浮沙之上的迷宫里。面对AI不费吹灰之力生成的海量代码的冲刷,我们很快就会感到头晕目眩,精疲力尽,放弃了审查和控制的执念,不再care其中的代码是否正确——反正随时在修改。最后的最后,我们甚至已经忘了效率是什么。

我们也许会试图借助类似于"cursor rules"这样的规范来指导AI,但这就像是野马配头上的一根想象中的缰绳。我们既不确定这些规则是否完备,也无从知道他们是否会被真的遵守。我们以为这些原则相当于法律,其实他们只是《论语》或是《三字经》,社会的运转既依赖于它们的尊崇神圣,也依赖于它们的晦涩模糊。

从这个角度上来说,今天的"vibe coding"有点像一两年前的AI绘画:第一眼很对,放大后细节都是错的,到处是六根手指的手。问题在于,绘画远比编程更宽容——毕竟真的存在"印象派"这种绘画风格。

可即使如此,如果我们的工作只剩下在图中寻找和修改六根手指的手,那是不是把正常的手指数定义为六根手指,反而更加方便?在这样的世界中,AI究竟是我们手中的魔杖,还是奴役我们的魔王?到了这一步,我们是不是已经沦为AI代码的氛围组件了呢?

4 尾声

一开始,我以为世界是一张完美的幕布;然后我在幕布上发现了一两条恼人的裂痕;接着我发现裂痕越来越多,无处不在;直到最后,我意识到,不断蔓延和生长的裂痕,才是我真正生活的地方。

那时我以为世界刚刚开始崩塌。后来我理解了,崩塌的不是世界,而是我自己的天真想象。

"vibe"不是真实的某种投射,而是它的实质。

It is not just vibe coding.
It is vibe living.
But is this the future we want?