George Hotz 这次说得很重。

5 月 24 日,他在博客《The Eternal Sloptember》里批评 AI agent 被大规模引入软件开发。他的核心判断是:agent 并没有真正学会编程,而是在更熟练地生成“像程序”的东西。

这句话危险的地方,不在于它反 AI。

Hotz 过去 6 个月并不是站在门外看热闹。他自己用 agent 参与过 tinygrad 的部分代码开发,也用它辅助做 USB-PCIe 芯片逆向。他承认 AI 在搜索、快速原型、不要求长期维护的任务里有用。

但他不接受一个跳跃:能写代码片段,不等于能当软件工程师。

我更在意的也是这个跳跃。软件工程的难点,常常不在“把代码写出来”,而在验证、收尾、维护和负责。AI agent 把前半段做得更快,却可能把后半段变得更难。

Hotz 真正反对的,是“像对了”的代码

Hotz 描述的体验很具体:agent 很快给出大量进展,文件改了,函数补了,测试也可能过一部分。然后问题出现了。

边界条件没想清楚。修一个 bug 又带出新 bug。开发者开始改 prompt、换模型、重跑任务,等一个刚好能过的结果。

这和传统代码补全不是一回事。

GitHub Copilot 这类工具更像副驾驶,主要帮人补句子、补函数。到 Devin、Claude Code、Cursor 里更主动的 agent 叙事,目标已经变成跨文件修改、调试、测试和交付。争议也从“能不能补全”变成“能不能承担工程闭环”。

可以把差异压成一张表:

场景AI agent 目前更像什么Hotz 担心什么团队该怎么用
搜索资料、定位线索更快的搜索器混入错误依据让人复核来源和结论
快速原型草稿机原型被误当交付物明确标注不可直接上线
跨文件改动高产改码工具缺陷藏得更深提高 review 门槛,而不是降低
长期维护还不稳定的代理无法解释设计取舍关键路径必须有人负责

这里的重点不是“AI 没用”。

它有用,但用途要放对位置。搜索、试错、搭骨架,AI 能省时间。架构判断、边界设计、回归验证、长期维护,它还不能替团队签字。

软件工程师最实际的动作,是把 agent 输出当成陌生人提交的 PR。能跑不够,能解释才算数。尤其是权限、支付、数据迁移、并发、底层驱动这些位置,不能因为代码是 AI 写的就少看一眼。

高手和大组织,承受 AI 低质输出的能力不同

Hotz 对个人和组织做了区分,这点很关键。

高水平个人或小团队,反馈快,代码上下文在脑子里。agent 写错了,人能马上停下来,删掉,重写,或者换一种方式问。工具在他们手里更像放大器。

大组织的情况复杂得多。

需求被拆细,评审链条变长,很多管理指标还停留在提交量、需求吞吐、测试通过率和 demo 进度上。agent 一旦把代码产量拉高,组织最先看到的是“更多产出”。真正的成本,可能躲到返工、重构、线上问题和新人接手时才出现。

这不是说大公司一定会被 AI 伤到。没有足够证据,不能下这种结论。

但现实约束摆在这里:组织越大,越容易把局部效率误读成整体效率。尤其当底部表现者用 agent 生成更多代码时,review 压力会转移给少数能判断质量的人。

技术管理者需要做的不是急着禁用,也不是急着全员推广。更稳的做法是先改评估口径:

管理动作不建议只看更该增加的观察项
采购 Copilot、Cursor、Claude Code 或内部 agent授权人数、生成代码量review 时间、返工比例、缺陷回归
推动团队使用 agentdemo 数量、需求关闭数关键模块事故、测试可信度
评估个人效率commit 数、PR 数代码可读性、交接成本、问题定位速度
扩大到核心系统短期吞吐维护 3 到 6 个月后的质量变化

如果团队还没有能力做好 code review,就不适合先把代码生成速度拉满。

如果已经采购了工具,也不必立刻回退。更现实的动作是分层使用:非核心脚本、内部工具、原型验证可以放开;核心业务、底层系统、迁移脚本和安全相关模块要保守。把 AI 输出纳入更严格的 PR 模板,而不是让它绕过人的判断。

Hotz 提到过“听说 Apple 正推动工程师使用 AI”。这类说法目前只能按传闻处理,不能写成确认政策。更可观察的变量是:大型软件系统在引入更多 AI 辅助开发后,缺陷修复速度是提高,还是边角问题变多。

这比听一家公司怎么表态更重要。

旧的质量信号正在失效

Hotz 更深一层的怀疑,指向 LLM 路线本身。

过去看代码,很多信号有参考价值。命名顺、结构清楚、注释像样、测试能跑,通常说明写代码的人理解了问题。现在这些信号没那么可靠了。

因为 LLM 很擅长生成“像工程产物”的文本。

它能模仿代码风格,能补齐常见模式,也能给出看似合理的解释。但 Hotz 认为,这不等于模型真的完成了人类开发者会做的建模过程:理解系统状态、约束、因果关系和长期后果。

这也是他提到 world models 的原因。真正可靠的编程 agent,不能只靠统计模仿语言分布。它需要更扎实地理解程序运行的世界,知道一个改动会怎样影响状态、接口、硬件、依赖和未来维护。

这个判断和 Yann LeCun、Gary Marcus 等人对纯 LLM 路线的怀疑有相近之处:语言能力很强,不自动等于世界理解足够强。

当然,反过来也要说清楚。现在的 agent 并不是一无是处。很多工程师已经能用它加速搜索、写样板代码、生成测试草稿、搭原型。问题只在于,组织不能把这些能力直接外推成“它能负责软件工程”。

接下来最该观察的不是模型发布会上说自己会写多少代码,而是几个更硬的指标:

  • AI 生成代码进入主干后,返工比例有没有升高;
  • review 时间是减少了,还是被隐性转嫁给资深工程师;
  • 线上事故和回归缺陷有没有集中出现在 AI 参与较多的模块;
  • 新成员接手 AI 生成代码时,理解速度是变快还是变慢。

这些指标不性感,但更接近工程真相。

回到 Hotz 的文章,它最有价值的地方,不是给 AI 编程判死刑,而是提醒团队别被“像对了”迷惑。

代码能生成,只是开始。谁能判断它对不对,谁能在半年后维护它,才是软件工程真正的门槛。