← 最新论文
🤖 AI

AI-Generated Code Is Not Reproducible (Yet): An Empirical Study of Dependency Gaps in LLM-Based Coding Agents

该论文通过实证研究发现,当前主流大模型编程代理生成的代码在纯净环境中仅约 68.3% 可直接运行,且存在声明依赖与真实运行时依赖之间平均 13.5 倍的巨大差距,表明 AI 生成代码的可复现性仍面临严峻挑战。

原作者: Bhanu Prakash Vangala, Ali Adibifar, Ashish Gehani, Tanu Malik

发布于 2026-03-25
📖 1 分钟阅读☕ 轻松阅读

原作者: Bhanu Prakash Vangala, Ali Adibifar, Ashish Gehani, Tanu Malik

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

这篇论文就像是一份**"AI 代码体检报告”,它揭示了一个令人惊讶的真相:虽然现在的 AI 写代码看起来非常厉害,能生成完整的软件项目,但这些代码往往“跑不起来”**,或者需要人类开发者花大量时间去修修补补。

为了让你更容易理解,我们可以把这篇论文的研究过程想象成一次**“盲盒烹饪挑战”**。

1. 核心比喻:AI 是“只会写菜谱的厨师”

想象一下,你请了一位超级 AI 厨师(比如 Claude、Gemini 或 Codex),让他做一道复杂的菜(比如“意大利面”)。

  • AI 的做法:它非常自信地给你一张菜谱(代码文件)和一份食材清单(依赖包列表,比如 requirements.txt)。清单上写着:“你需要番茄酱和意大利面”。
  • 你的任务:你拿着这张清单,去厨房(干净的环境)里,只买清单上写的东西,然后试着做这道菜。
  • 现实情况:当你开始做的时候,发现:
    • 没有盐,菜没法吃(缺少依赖包)。
    • 菜谱里写的步骤是“把锅放在火上”,但没写“先开火”,结果锅是冷的(代码逻辑错误)。
    • 你以为只需要番茄酱,结果发现番茄酱里其实混合了 20 种其他调料,但你清单上没写(隐藏依赖)。

这篇论文就是去统计:在 300 次这样的“盲盒烹饪”中,有多少次你能直接照着清单把菜做出来,而不需要额外去问 AI 或者自己瞎猜?

2. 研究发现了什么?(三个关键发现)

发现一:只有约 2/3 的“菜”能直接吃

在 300 个由 AI 生成的项目中,只有 68.3% 的项目能直接运行成功。

  • 这意味着:每 10 个 AI 生成的项目,就有 3 个是“半成品”或“废品”。开发者必须停下来,花大约 15 分钟 去修 bug、找漏掉的包。这就像你买了个组装家具,结果发现少了一颗螺丝,还得自己去找。

发现二:不同“菜系”难度不同

AI 在不同编程语言上的表现天差地别,就像不同菜系的复杂程度不同:

  • Python(像家常菜):成功率最高(89.2%)。因为 Python 的依赖管理比较简单,就像做炒蛋,清单写清楚就行。
  • JavaScript(像西餐):成功率中等(61.9%)。
  • Java(像复杂的满汉全席):成功率最低(44.0%)。Java 的依赖关系像俄罗斯套娃,一个包里面藏着几十个包,AI 经常搞不清楚,导致清单漏写了一大堆。

发现三:清单上的“食材”和实际用的“食材”差距巨大

这是最惊人的发现。

  • AI 的清单:通常只写 3 个包(比如“我要做数据分析,需要 A、B、C")。
  • 实际运行:当你真正运行代码时,系统会自动下载 37 个 包!
  • 比喻:这就好比你点了一份“汉堡套餐”,结果端上来的是汉堡、薯条、可乐、冰淇淋、沙拉、汤、面包、叉子、盘子、餐巾纸……整整一桌。AI 只告诉了你“汉堡”和“可乐”,却忘了告诉你为了吃汉堡,你其实还需要那一整套复杂的“后台支持系统”。
  • 论文发现,实际需要的包数量是 AI 声称数量的 13.5 倍!这就是所谓的“依赖爆炸”。

3. 为什么 AI 会犯这些错?

论文指出,AI 犯错的类型主要有两种:

  1. 漏写食材(依赖缺失):只占 10.5%。AI 忘了写某个必须的包。
  2. 菜谱写错了(代码逻辑错误):占了 52.6%!这才是大头。
    • 比如:AI 把文件路径写错了,或者把“异步操作”写乱了,或者把几个文件压缩成了一个。
    • 比喻:AI 不仅忘了写“盐”,它还把“先放盐再放油”写成了“先放油再放盐,然后倒进冰箱”。这种错误比漏写食材更致命,因为即使你补全了所有食材,菜还是做不出来。

4. 不同 AI 厨师的“隐藏特长”

论文还发现,不同的 AI 模型并不是在所有领域都一样强,它们有“偏科”:

  • Gemini:是Python 大神(100% 成功),但在 Java 上几乎“翻车”(只有 28% 成功)。它可能是在很多 Python 数据科学笔记上训练出来的。
  • Claude:是Java 专家(80% 成功),在 Python 和 JavaScript 上表现也不错,比较均衡。
  • Codex:在 Python 上很强,但在 Java 上表现最差(24%)。

启示:如果你要用 AI 写 Java 代码,选 Claude 可能更靠谱;如果是写 Python 数据分析,Gemini 可能是首选。不能盲目认为所有 AI 都一样。

5. 这对我们意味着什么?

  • 对开发者:不要完全信任 AI 生成的代码。把它当作一个“草稿”,你还需要花时间去检查、调试和补全依赖。AI 目前更像是一个**“超级自动补全工具”,而不是一个“独立开发伙伴”**。
  • 对科学界:如果科学家直接用 AI 生成实验代码,而代码跑不起来,那么整个研究结果就不可复现了。这会加剧科学界的“可复现性危机”。
  • 对未来的希望:未来的 AI 需要学会“自我测试”。在把代码交给你之前,它应该自己在干净的电脑里跑一遍,发现缺了什么包、哪里写错了,自己先修好,再给你一份完美的“成品”。

总结

这篇论文告诉我们:AI 生成的代码目前还“不可靠”。

虽然它们能写出看起来很像样的代码,但往往缺少了让代码真正跑起来的“隐形胶水”(完整的依赖和正确的逻辑)。目前,AI 生成的代码就像是一个只有骨架没有血肉的机器人,虽然形状像人,但还动不起来。 我们需要人类开发者花时间去“注入灵魂”(调试和补全),才能让它们真正工作。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →