Vibe Coding:当编程失去意义
如果你是程序员,却还没听说过 vibe coding,那你可能已经慢了半拍。
这个词是在两个月前由 Andrej Karpathy 在一条带有自嘲意味的推文中首次提出的,如今它已悄然成为一种默认语汇。没人能准确描述它的定义,但只要你体验过用 AI 辅助来写代码,或多或少都明白它指的是什么。一些人对此不以为然,一些人将它视作未来,还有更多人被迫适应,犹如无声地卷入一场技术范式的风波。
Vibe coding 实际上是一种模糊的写码方式。用 Karpathy 大神自己的话说:“AI 提出的建议我都会接纳,不再逐一比对。报错信息我会直接复制粘贴,通常就能解决问题。代码已经超出了我本人的理解能力。有时它修不好 bug,我就绕过它,或者反复尝试随机修改,直到问题消失。”某种意义上它像是神迹,让你产生初次施法般的错觉;但另一面,它不断推翻旧有结构,又在重构中原地打转,让你始终处在修 bug 的状态,并开始对 bug 抱持一种自我催眠的态度。你面对海量工具手足无措,意识到可能下个月又有新的“最佳实践”冒出来,于是任何形成肌肉记忆的努力都显得徒劳。或许所谓的“最佳实践”,其实只是更快地引入更难察觉的问题而已。
Vibe coding 不是关于代码质量的提升,也不是效率的线性增长,它更像是一种混乱秩序下的生存方式,一种顺从混沌的工作节奏。你开始依赖 AI,不再是工具意义上的,而是一种语境意义上的寄生关系。你编写的程序仿佛成了语言模型与现实世界之间的一种噪声接口。
从技术层面看,你可能以为问题出在上下文窗口还不够大、长期记忆机制尚未成熟,或其他未来一年内可望解决的限制。但 vibe coding 撼动的,其实是你作为程序员的身份认同与主体性:
起初你以为只是为了效率做出小妥协,结果却深陷一个个建在流沙上的迷宫中精疲力竭,最后你已经不记得效率本来的模样。你开始怀疑,过去用以评价开发者好坏的维度是否仍然适用,而新的判断标准却尚未诞生。
某种程度上,今天的 vibe coding 很像几年前的 AI 绘图:第一眼看起来很完美,放大细节却全是错误,甚至常常出现六根手指的手。但绘画的容错率高得多——毕竟印象派都能存在——而编程本该是非黑即白,对吧?
然而并不。正是在这点上,现实开始发生扭曲。你发现 vibe coding 的“正确性”就像薛定谔的猫一样无法明确观察。你可能天天抱怨大模型的注意力窗口太小,但真正更小的其实是你自己的注意力。海量生成代码让人头晕目眩,你逐渐放弃了控制欲。你试图用像 .cursorrules 这样的规范来约束 AI,但这更像是给野马戴上虚构的缰绳。你既不确定规则是否完备,也无法确认它是否会被遵守。你以为那是法律,其实只是模糊的格言。你不再关心代码是否正确,反正随时都在改。
你甚至开始怀疑那些你曾坚信不疑的“工程美德”:可维护性、清晰性、稳定性是否还有意义。反正模型会把所有东西重写一遍。Dario Amodei 说,未来 3 至 6 个月,90% 的代码将由 AI 完成;12 个月内,几乎所有代码都将如此。
是的,在那个未来,六指之手层出不穷,然后又消失。没有人记得 bug 的根源,也没有人在乎它们是否真的被解决了。
某种意义上,这正是这个时代的底色。当国际新闻和街头八卦开始难以分辨,当“追求小众”成了大众行为,当你丧失否认的勇气,当你意识到“追求真实”的人其实只是想逃避认知失调……你自以为创造的一切,也难逃这种命运。于是你妥协,接受了效率的暂时性,认清了唯一不变的是永远在变。你不再执着于确定性,而是试图与不确定性共处。
我曾在“前 AI 时代”写过一段话:
“蜷缩在气泡中的个体可以幻想岁月静好,但这往往预示着悲剧的开始。他所见的是一个高维历史剧烈动荡在低维投影下的轮廓图,是一个媒体更容易转述的粗糙叙述,是折射层层的幻象。而真实——如果这个词还有意义——则掉落在那幽深的维度缝隙中,在那里,一幅扭曲、异质、斑驳的景象会令无意瞥见的人心惊胆战。”
那时我以为世界开始崩塌。后来我懂了,崩塌的不是世界,是我对它的想象。Vibe 不是现实的衍射,而是现实本身:你曾以为世界是张幕布,直到发现那些裂痕才是它的本体,真正的生活就在这些裂缝之间不断滋生。
现在你明白了:你不再执念于终极方案,也不再苛求逻辑的完美闭环。你学会了和 bug 共处,与混乱共生,像水一样流过错综复杂的系统接口。
It’s not just vibe coding, it’s vibe living.