Vibe 是一个很诱人的词汇,它既代表了高效,又代表了轻松。 你不需要努力,你不需要学习,你可以弯道超车,直接把老派的“程序员”们远远甩在脑后。
那么事实真的是这样吗? 在某一些部分上,是的。 但在另一些部分上,不是的。
只需要几句话就让 AI 做出完美的“中型以上”的项目,完全不需要人的监管。 也许 AI 某一天会达到那种高度,但不是今天,也大概率不是明天。 但我们活在今天,所以如果真的想在今天做出些什么东西,你需要知道什么时候能够 Vibe,什么时候不能 Vibe。
AI 的发展一直在违背人们的猜想。 它并没有迅速地取代程序员,而是首先对棋手、画家、作家的领域发起了进攻。 所以我的立场一直是,它不一定能在我的有生之年取代程序员,起码我不会以此为基础规划我的未来。
哪怕它突然来了,我也不觉得我需要为这个未来做一些特定的准备。 当你能用一个能完全取代程序员的 AI 时,你只需要对它说你想要什么,它就能给你。 这么简单的事情,你还要做什么准备呢? 当然,我不认为如此强大的 AI 会轻易地下放给普通群众使用,毕竟今天的我们连 Claude Mythos 都没办法碰。
跑题了,现在回到 Vibe 的话题。
我在工作和个人项目中都大量使用 AI 代理。 甚至已经很少打开我的 Neovim 了。 那些花费了我无数时间的配置,以及通过大量训练而得到的快捷键肌肉记忆,也很少能派上用场了。
在工作中,我几乎不会 Vibe Coding,而是交互式地与代理互动,控制着 AI 代理(通常是 Claude Code)写代码。 它的代码会给我意想不到的启发,我偶尔也会纠正它的错误。 在我看来,这是一种进步,我能够写出,不,应该是“产出”更好的代码了。 我工作的效率和质量都变高了,但并没有突破某种极限,主要的阻碍是我,人类还是太慢了。
但我依然不会追求效率而舍弃控制。 因为我害怕。 我害怕 AI 的不确定性会给项目带来重大的故障而导致崩溃。 虽然我的项目有良好的测试代码,但这是一个非常重要的系统,一旦崩溃将带来巨大的损失。 我想睡个好觉,我想无忧无虑地摸鱼,所以我得部署能让我有信心的代码到生产环境。
在个人项目中,就能够放开手脚了。 我 Vibe 了多个项目。 效果出奇地好,哪怕在稍微大一点的项目中,它也表现得不错。 但“不错”真的够吗?
在做一些只有数百行的小型工具时,Vibe 是完全合理的。 甚至可以说,你去看具体实现是在浪费时间。
那么数千行以上的中大型项目呢? 一些在小型项目中不起眼的、Vibe Coding 特有的问题将会被放大。
在编程领域,“没有银弹”是一句广为人知的真理,我想没有多少人会质疑它。 无论是语言、框架、代码设计,甚至是细微到 if 语句的写法,总是有争议的。 这就是 Vibe 最大的问题。
AI 无法写出完美的代码。 因为根本就不存在完美的代码。
随着项目越来越大,越来越复杂,AI 一次能掌握的信息比例将越来越小。 你无法像开发小项目时那样,要求它每次都读取整个项目。 AI 依然很优秀,但局部最优解不一定是全局最优解,所以问题发生了。
设计决策层面上的问题将会以惊人的效率无限放大。 明明改一下结构就能轻易修复的问题,AI 可能会不断地打补丁以达成目标。 这样的做法往往会引发其他问题,哪怕现在能通过测试也会阻碍将来的开发。
直至最后,代码的复杂程度连 AI 自身都无法完全掌握时,你将毫无办法。 AI 的效率太高了,高到能在完全崩溃前完美运作。
当然人类也无法写出完美的代码。 我们经常会为过去的自己所做出的愚蠢决定而烦恼。 但你的经验、你的嗅觉,正好是能够补全 AI 弱点的东西。 你可以让项目结构维持健康,当然你会犯错,但放心,AI 会拯救你。
AI 代理赋予我们最大的能力之一就是重构。 开发进行到一半时发现设计层面的错误,修复将会需要庞大的工作量。 这样的工作量时常让我们不得不妥协,比如目录结构当初没规划好,namespace 划分错了,但一旦挪动就要改一大片 import,往往只能让代码继续待在错的位置。 现在你只需要一句话,AI 代理就会不厌其烦地重构。
所以,人类与 AI 的结合,半 Vibe 才是目前最正确的做法。 你得规划,评估项目的哪部分可以 Vibe,哪部分不能 Vibe。 代码的某些部分,你可以不看函数的实现细节,但你需要知道公有函数的签名。 代码的某些部分,你可以不看具体实现的代码,但你需要知道类设计合不合理。
你得判断什么地方需要你的判断。 否则你只是在玩 AI,是在抽奖,是在赌 AI 能够搞定一切。
如果你想有信心,在 AI 无法全自动替你解决问题时也不出事。 如果你想有信心,在开发了几个月后依然能够正常推进项目。 那你别无选择。
选择性的 Vibe Coding 才是今天的答案。
当然,在我观察到 Vibe Coding 确实能驾驭大型项目时,我会毫不犹豫地改变自己的立场。 毕竟识时务者为俊杰。
原文: <sijiaoh.com/zh/posts/vi…>