AI代码的“屎山危机”才刚刚开始

背景:AI写代码的“虚假繁荣”

过去几年,AI编程助手如GPT、Claude等在单次代码生成任务中表现出色,一度让人误以为它们已经可以胜任实际开发。然而,这种“虚假繁荣”只存在于静态、一次性的评测环境中。在现实世界中,软件开发是一个持续迭代、需求不断变更的过程,而AI代码生成器在这一动态环境中却频频“翻车”。

最新研究指出,AI生成的代码在多次迭代后迅速退化,甚至比人类维护了十年的“屎山”还难以维护。为揭露这一问题,研究团队专门构建了「SlopCodeBench」评测基准,模拟真实开发中的持续改需求、继承旧代码等复杂场景,结果显示目前所有主流AI编程Agent在长期开发任务中都难以交出合格答卷。


SlopCodeBench评测:AI编程的“地狱高考”

SlopCodeBench的设计完全贴近真实开发中的“痛苦模式”:

  • 每个项目从简单功能开始,逐步引入新的需求和边界条件。
  • 不提供内部接口定义,仅给出外部行为目标。
  • 不暴露测试用例,AI需像人类一样自行考虑边界条件。
  • 每轮必须基于上一轮的代码进行修改,不能重写。

评测涵盖了20个常见开发场景,每个场景包含多达93个检查点,模拟了从初始开发到需求变更、功能扩展的全过程。研究者测试了包括Claude Opus 4.6、GPT 5.4、GLM 4.7等11个主流模型,结果令人震惊:

  • 没有任何一个AI Agent能完成全部检查点。
  • 即便是表现最好的Claude Opus 4.6,严格通过率也只有17.2%。
  • 更多模型的表现远低于预期,显示出在持续开发中的巨大短板。

代码质量退化:从“整洁”到“屎山”

研究中特别指出,AI生成代码的质量随着迭代次数增加迅速恶化。以电路模拟器(circuit_eval)为例:

  • 第1轮:main()函数84行,圈复杂度29,还算合理。
  • 第8轮后:main()膨胀到1099行,圈复杂度高达285。
  • 同样的参数解析逻辑在9个命令分支中被复制粘贴,完全失去模块化。

这种退化主要体现在两个维度:

代码复杂度飙升

  • AI倾向于不断往已有函数中添加新逻辑,而不是拆分函数或重构结构。
  • 圈复杂度(衡量函数逻辑分支数量)快速上升,导致代码难以理解和修改。

冗余代码泛滥

  • 使用137条规则扫描后发现,AI生成的代码中冗余比例极高。
  • 例如,参数解析逻辑在不同地方重复编写,明明可以用循环或函数复用的逻辑,却写成了大量重复的if-else语句。

“反屎山提示词”无效?AI根本不听劝

很多人会想:是不是我的提示词写得不够好?我能不能让AI在写代码时注意架构、避免重复?

研究者也做了这样的尝试,加入了「反slop提示」,比如:

  • 明确要求AI不要写重复代码。
  • 要求它合理拆分函数。
  • 避免冗余逻辑和过度工程化。

但结果令人失望:

  • 初始代码质量略有改善,冗余度降低33%~34%。
  • 然而,随着迭代次数增加,代码质量依旧迅速下滑。
  • 退化曲线几乎与未加提示的一致,只是起点低一些。
  • 正确率没有显著提升(统计检验显示p > 0.05)。

更讽刺的是:“反slop提示”反而让成本上升了。

  • GPT 5.4在使用该提示后,完成项目花费从304美元涨到450美元。
  • 但通过率却从37.2%下降到27.1%。

问题的根本在于:AI虽然会花更多token思考架构,但缺乏长期维护意识,最终仍回归“能跑就行”的短期行为。


真正的症结:AI缺乏“设计纪律”

人类程序员写代码时,通常会考虑未来的可维护性,比如:

  • 代码结构是否清晰。
  • 函数是否职责单一。
  • 是否容易扩展和修改。

但AI没有这种意识。它在每个迭代中都追求“当前任务最快完成”,根本不考虑代码的长期健康。这就导致:

  • 每轮单独看代码都没大问题。
  • 合并多轮修改后,整体结构混乱不堪。
  • 修改需求越多,代码越像一个随时会爆炸的“火药桶”。

这并不是技术能力的问题,而是“思维模式”的根本差异。AI写的是“一次性代码”,而人类写的是“可持续开发的代码”。


研究启示与应对建议

不要怕AI抢你饭碗

至少在目前阶段,能控制架构、理解长期需求、做好代码维护的程序员,比任何AI都更有价值。

用AI生成代码,要有节制

  • 不要让AI直接修改已有复杂逻辑。
  • 最好用它生成方案设计或实现建议,由人类主导架构设计。
  • 每次AI生成的代码都应经过Code Review,不能盲目合并。

不要迷信“提示词魔法”

  • 当前的LLM根本缺乏设计纪律。
  • 写提示词让AI写出“可维护代码”效果有限,最终还是要靠人来兜底。

未来方向:AI必须学会“为未来写代码”

当前所有评测都在奖励“单次通过”的代码生成能力,却忽略了软件工程的核心价值:可维护性。研究指出,AI要真正参与工业级开发,必须具备长期视角,像人类一样在设计时考虑未来的扩展和重构。

毕竟,写一段能跑的代码容易,写一段能活五年的代码才是真正的技术。