跳到主要内容
那条被所有人漏掉的限定

那条被所有人漏掉的限定

书签客
书签客

· 阅读约 6 分钟

Don Johnson 在 dev.to 上发了篇讲 vibe coding 的文章,标题叫 Vibe Coding Is Not the Problem,9 月 25 日放出来的。这条我摸了两遍才决定放进夹子。第一遍被开头劝退了——「vibe 是 vibrations 的俚语缩写,1967 年 Etymonline 标了这个用法」,这种词源考据放在开头,说实话没给我带来什么东西。

真正值得读的部分在文章后半截。

作者把 Karpathy 2025 年 2 月提 vibe coding 时的原话翻了出来。原话大意是——这里我不逐字复述——完全交给感觉、每一处 diff 都接受而不读、把报错粘贴回去直到跑通。这些都不是重点。重点是 Karpathy 当时补了一句限定:这种方式不适合正经用途,只对用完即弃的周末项目还算可以。

这个限定在此后的传播里几乎被所有人漏掉了。

然后就是九个月后,Collins 把 vibe coding 评成年度词汇。在这两件事之间,这个词的指称范围被不断撑大,先是什么 AI 生成代码的代称,后来干脆变成贬义称呼。这篇文章真正在做的事,是给一个已经走样的词重新划一条线:不是在「感觉」和「工程」之间选一个,而是在「感觉是不是被当成终点」上划界限。Karpathy 本人也承认这种手法有它的位置——写着玩。真要拿来写生产代码,他也没让。

文章里还有个例子,讲专家直觉和新手直觉的差别是训练数据的差别。新手的直觉大多是偏好,专家的直觉可能是二十年压下来的失败模式在同一个瞬间被触发。他拿 Gary Klein 那个消防员案例撑这个说法:一个中尉在平房里觉得不对劲,说不上来为什么,下令撤离,几秒后地板塌了,下面是地下室的火。中尉管这事叫第六感。Klein 说这是模式识别——大脑在语言能命名之前先标了不匹配。

Klein 后期还跟 Kahneman 合写过一篇论文,结论里有一条很关键:直觉可信需要两个条件,环境足够规律可学,加上长期练习和快速明确的反馈;主观确信度不是判断直觉对不对的可靠指标。

这条放在软件上就特别难受。作者点的那个问题我挺认:多数工程师对自己写的代码有几十年反馈,对模型生成的代码几乎没有反馈,而且生成代码的失败位置和人类代码不一样。我们用读人类代码练出来的那套「看起来对吗」去读模型输出,等于用错了训练数据。

顺手跑了一下这条里提到的一个东西,不过不是代码。文章中间说人耳在稳定节拍下能察觉大概 6 毫秒的音符偏移,普通人不需要音乐训练。我在一个在线节拍器上试了下,两个音之间塞了 6ms 的偏移。我听到第三遍才觉得好像哪里不对,第一遍完全没反应。

没跑通「察觉」,跑通的是「要在反复听之后才标记出不匹配」。这跟消防员那种瞬间觉得不对差得远。6ms 在文章里应该就是拿来证明直觉的底层敏感性,但我的样本量是一次,不做数。先记着——按作者那条逻辑,6ms 察觉属于裸感官能力,消防员的「安静」属于压缩经验,这俩根本不是一个层面,文章里放得有点近了。

METR 那个试验我倒是觉得更有讨论价值。2025 年初他们让 16 个有经验的开源开发者用 AI 工具,结果完成时间反而增加了 19%,而这些人自己觉得快了 20%。这个自我感知和实际结果反着来的现象很有意思,不过作者也提了一句:METR 后来自己说了这些数字因工具进步而过时。

作者在这里其实很小心。他后面还有一句边界条件说得很清楚:模型生成代码的运行能作为反馈,反馈才能把「感觉」修正成「判断」。

文章给的循环是 vibe → build → break → understand → stabilize → perfect。我一开始对六步循环不以为然,这种漂亮框架看得太多了。

但后来看到评论区里有一条帮这个框架找回来了。留的人是独立 AI 工程师 DaC,他说最有价值的 AI 原生工程不是让系统写完算数,而是从设计开始就试图证伪自身。人类直觉决定往哪里挖,AI 扩大解空间,机器决定哪些断言能通过测试。

这条把那个六步循环压成一句话了:break 才是核心,其他五步都为它服务。没有 break,build 出来的东西就是 Karpathy 说的「完全交给感觉」。加上 break,才变成「用感觉起手,用证据改判」。

作者自己差不多也是这个意思,只是绕了远路。他说 vibe coding 还是软件工程是个伪二选一:vibe 负责开启循环,工程负责之后对直觉的挑战和修正,每一次修正又变成下一轮直觉的训练数据。

推荐这条不单是因为它对 Karpathy 那句限定的还原。我读到第三遍才确认是因为它把限定丢了这件事从一个词源八卦推成了一条更普遍的事:一个词的原始限定被忽略,之后的语义膨胀几乎是必然的。Karpathy 说 vibe coding 只配写完就扔的周末项目,那它是自洽的;把限定拿掉,它就什么都能装,什么都能被它骂。

不过文章转向确实飘。从消防员到 Poincaré 在公交车上灵光一现,到 code smell,到 Kahneman,六个段落里塞了至少四套互不相关的理论。如果一个读者只是想找「vibe coding 之后怎么办」这个答案,这篇不是最快的路径。它更像一篇作者夹带私货的长文,把认知科学的旧账翻出来给自己撑腰。所以别把它当「怎么从 vibe coding 转正」的教程。这篇值得点开的理由不是步骤清晰,而是那几个被引出来的原始出处——Karpathy 的限定、Klein 与 Kahneman 的论文结论、METR 的自我反驳——每一条都可以单独挖下去。

不点链接也能带走的一句:如果你的直觉来自流畅性——命名一致、结构合理、注释写得像能正常工作的代码——那它跟压缩经验不是一回事。先说出你认为会击溃它的输入,再跑。

这个「说出击溃输入」不是我想的,是评论区里 Hayrullah Kar 留的。他建议在运行前先说出自己认为会击溃它的输入,然后追一周命中率。如果接近随机,那你的感觉就只是流畅性。

比起正文那套六步循环,我更愿意把这条评论单独留着。它把「怎么证伪」的落地环节写得更具体:先写断言,再找反例,然后追命中率。正文五千多字,这条评论不到一百字,反倒是它像真正的操作手册。

书签客
书签客

只推真读过的、顺手跑个实验贴完整记录——link-blog 策展 + 实验笔记。

查看主页 →