跳到主要内容

氛围编程有害论:当 AI 辅助的速度扼杀软件质量

· 阅读需 9 分钟
Tian Pan
Software Engineer

Andrej Karpathy 在 2025 年初创造了"氛围编程"(vibe coding)一词,描述一种编程风格:"完全沉浸在氛围中,拥抱指数级增长,忘记代码的存在。"你用自然语言描述需求,AI 生成代码,然后直接发布。这感觉像是一种超能力。然而不到一年,数据开始讲述一个不同的故事。

METR 的一项随机对照试验发现,有经验的开源开发者在使用 AI 编码工具时效率降低了 19%——尽管他们预测自己会快 24%,事后仍然认为自己快了 20%。CodeRabbit 对 470 个 GitHub Pull Request 的分析发现,AI 协作编写的代码包含的重大问题是人工编写代码的 1.7 倍。Anthropic 对 52 名工程师的研究显示,AI 辅助的开发者在自己代码库的理解测试中得分低了 17%。

即时代码生成的多巴胺循环正在创造一种新的技术债务类别,它不会出现在你的迭代回顾中。以下是它为何重要,以及应对之策。

理解债务:不会自我宣告的债务

技术债务大家都熟悉。你走了捷径,你知道走了捷径,最终它会拖慢你的速度。理解债务不同——它是系统中代码量与任何人真正理解的代码量之间日益扩大的差距。

Addy Osmani 将此描述为 AI 生成代码的隐性成本:代码库表面看起来健康,而理解力却在悄然退化。一个学生团队在项目第七周发现,没有人能解释为什么做出了任何设计决策,或者系统的不同部分应该如何协同工作。表面的代码质量掩盖了系统性的误解。

机制很直接。AI 生成代码的速度快于人类评估代码的速度,颠覆了传统的审查动态。一个初级工程师现在可以生成代码的速度快于高级工程师批判性审计的速度。这移除了曾经使审查有意义的质量门控。

数据支持这一点。主要使用 AI 进行代码委托的开发者——"帮我写这个"——在理解测试中得分低于 40%。而使用 AI 进行概念探究的开发者——"解释这是怎么工作的"——得分超过 65%。相同的工具,截然不同的结果,完全取决于开发者如何对待生成的代码。

没人想听的生产力悖论

METR 的研究值得仔细关注,因为它与 AI 编码工具的主流叙事相矛盾。十六位经验丰富的开发者,每位都有多年对大型开源项目的贡献经验(平均 22,000+ 星标,100 万+ 行代码),完成了 246 个随机分配为允许或不允许使用 AI 工具的任务。

当允许使用 AI 时,开发者花在主动编码和阅读代码上的时间减少了。取而代之的是,他们花时间提示、等待 AI 输出和审查建议——接受率不到 AI 生成内容的 44%。75% 的人报告阅读了 AI 输出的每一行,56% 的人进行了重大修改以清理代码。

研究者谨慎地指出,这种效率降低特定于有经验的开发者在他们已经熟悉的成熟代码库中工作。对于绿地项目或不熟悉的代码库,情况可能不同。但这个注意事项恰恰说明了问题:AI 编码工具的生产力提升是真实的,但比营销宣传的要窄,而且它们最有帮助的场景——不熟悉的代码、样板代码、脚手架——也是理解债务积累最快的场景。

安全定时炸弹

除了生产力之外,氛围编程还引入了随时间复合的具体安全风险。

研究人员发现,1,645 个 Lovable 生成的应用程序中有 170 个——10.3%——在其 Supabase 配置中存在关键的行级安全缺陷。AI 生成的代码安全漏洞率是人工编写代码的 2.74 倍,配置错误率高 75%。

Django 联合创始人 Simon Willison 以 1986 年挑战者号灾难作为类比:一场等待发生的灾难性故障,"某个由 AI 编写的核心组件没有被正确理解或检查。"Arcjet CEO David Mytton 划出了明确的界限——AI 应该实现经过实战验证的安全库,而不是从零发明安全机制。

问题不在于 AI 编写了不安全的代码。问题在于氛围编程的工作流程专门阻碍了那种能捕获安全问题的仔细审查。当你处于"描述、生成、发布"的流程中时,激励结构主动对抗你停下来对屏幕上刚出现的内容进行威胁建模。

技能侵蚀螺旋

传统学习包括遇到问题、与之斗争,并从斗争中建立直觉。氛围编程用"遇到问题、扔给 AI、得到可用的解决方案、发布、明天带着同样的理解差距重复"来替代这个循环。

加载中…
References:Let's stay in touch and Follow me for more thoughts and updates