译者有话说

  • “氛围编程”的本质,就是以 AI 的速度疯狂堆积技术债。
  • AI 编程是把双刃剑:做原型是神器,但用于长期维护的核心项目,就是灾难的开始。
  • 让不懂技术的人用 AI 开发核心产品,就像给孩子一张无限额度的信用卡—— 一时的风光,换来的是日后无尽的债务。
  • 驾驭 AI 的关键,不是放弃思考,而是提升“理论构建”能力。人必须是缰绳的掌控者,而不是被 AI 牵着鼻子走。

“氛围编程”,就是在制造技术债

史蒂夫·克劳斯 (Steve Krouse)

尽管大众对此普遍感到困惑,但 Andrej Karpathy 创造“氛围编程”(Vibe Coding)这个词,本意是指一种 AI 辅助编程方式,在这种模式下,你甚至 “感觉不到代码的存在”

遗留代码/技术债

对于那些没人看得懂的代码,我们早就有一个词来形容:遗留代码/技术债

遗留代码人人喊打,这并非空穴来风。可问题是,代码不就在那儿吗?直接看代码不就能搞懂了吗?

大错特错。没人看得懂的代码,就是实打实的技术债。要吃透一段陌生的代码并完成调试,需要耗费大量时间,更别提在不引入新 bug 的前提下添加新功能了——那更是难上加难。

编程的本质是构建理论,而不是堆砌代码。这个道理我们都懂。所以我们才会吐槽那些试图用代码行数量化程序员产出的业务部门。

当你用“氛围编程”时,你堆积技术债的速度,就和 AI 生成代码的速度一样快。也正因如此,“氛围编程”反而是原型开发和一次性项目的完美选择:毕竟,只有需要长期维护的代码,才会沦为遗留代码!

原型与一次性代码

我自己就曾愉快地用“氛围编程”开发过一些小应用,比如:

我没打算持续迭代这些应用,所以看不懂它们的代码也无所谓。况且,这些应用规模很小,就算哪天真需要回头看代码,欠下的技术债也有限。用这种方式,我开发应用的速度远超传统方法,整个过程简直酣畅淋漓。

“氛围编程”是个程度问题

“氛围编程”是一个程度问题,关键在于你对代码的理解有多深。你理解得越透彻,就越不“凭感觉”。

shapes at 25-07-30 10.32.53.png

同样是提需求,一名工程师要求开发“一个带持久化数据库的 Web 应用”,和一个非技术人员要求“做个 App”(但他分不清 Web 应用和原生应用,也不懂数据持久化),前者“凭感觉”的程度就要低得多。

把信用卡交给孩子

最糟糕的情况,莫过于让一个非程序员用“氛围编程”的方式,去开发一个需要长期维护的大型项目。这无异于把一张信用卡交给一个孩子,却不向他解释什么是“债务”。

可想而知,初期阶段是多么令人狂喜:“天哪,只要在店里刷一下这张小卡片,我想要什么就能拿什么!”

这和当下流行的论调何其相似:“AI 无所不能!人人都是程序员!快看 AI 给我生成的这个应用!”

然而,一个月后,信用卡账单会如期而至:“我真的需要买那些东西吗?现在这个烂摊子该怎么收场?”

“氛围编程”的开发者也会面临同样的窘境:“我的代码崩了!这么多文件和文件夹都是干嘛的?这到底要怎么修?我花 400 美元让 AI 生成代码的钱能退吗?”

如果你根本看不懂代码,唯一的出路就是让 AI 接着帮你修。这无异于“以卡养卡”,用一张新信用卡的额度去偿还另一张的欠款。

2025 年,如何严肃地与 AI 结对编程

如果你打算在 2025 年构建一个需要长期维护的严肃项目,Andrej 的建议是对的:

你得把 AI 当成一个新来的实习生,并用一根极短的绳子拴住他。这个实习生是个奇才,对软件知识了如指掌,堪称一部活的百科全书。但同时,他又过度热情,总是跟你胡说八道,胆子大得没边,对什么是好代码毫无品味可言。所以,你必须强调:放慢速度、保持防御、小心谨慎、甚至要有点偏执。要抓住一切机会在实践中学习,而不是把工作全权委托给它。

—— Andrej Karpathy, twitter

我们如何拥抱 AI 进行构建

在 Val Town,我们已经通过数十种方式将 AI 融入产品。我们的 AI 助手 Townie 就像一个智能体,能主动读写代码、运行程序、查看日志,并不断迭代,直至任务完成。

Townie 是“凭感觉编程”的绝佳工具。我强烈推荐给那些理解其中利弊权衡的朋友。有时,我会用它来快速“氛围编程”;而在处理我非常重视的项目时,我则会勒紧缰绳,让它只进行“手术刀般”的精确修改。这两种模式都既有趣又高效。

AI 编程领域日新月异,未来难以预测。但我坚信,“理论构建” 依然是构建复杂软件的核心。这意味着,我们人类的技术专长依然不可或缺!同时我也乐观地相信,AI 将继续以意想不到的方式,让编程这项工作变得更美好。

但是,如果你身边有非技术背景的朋友,正豪掷千金,用“凭感觉编程”的方式追逐他们那个“价值十亿”的 App 梦,请务必把这篇文章转给他们。“凭感觉编程”无法带他们到达成功的彼岸。他们迟早要学会用自己的肉眼去看懂代码 😱,并且最终会明白一个残酷的现实:与其修补一个没人能懂的遗留系统,不如从零开始,构建一个结构清晰的全新代码库。


本文是我上个月一次演讲的精炼版本,演讲主题为 编程中人脑扮演的角色。感谢我的未婚妻 Emily 数月来倾听我对这些话题的滔滔不绝,并为我拍摄了演讲视频。感谢 Malte 和 Rippling 主办这次演讲。

感谢 Geoffrey Litt, Jimmy Koppel, Max McDonnell, Tom MacWright, Charmaine Lee, Brent Jackson, 和 Dan Shipper 对本文提供的反馈。感谢 Simon Willison 和 Andrej Karpathy 在 AI 的狂热吹捧和悲观论调中,发出了理性的声音。

原文地址:https://blog.val.town/vibe-code