LLM 能推理代码运行时行为吗?

来自 arXiv · 期号 2026-09-24

摘要

LLM 写代码越来越强,但能不能真正理解代码跑起来之后的行为? 现有仓库级评测主要测静态理解,执行推理评测又只到函数级别。SWE-Flux 是一个新的仓库级动态执行推理基准,包含 480 个执行相关的问答,覆盖 12 个真实 Python 仓库。答案不是人工写的,也不是 LLM 判的,而是从插桩测试执行中自动提取的。 评测了五个模型,最好的也只拿到 37% 准确率。模型擅长局部行为(不变量、函数内控制流、异常、简单循环),但在数据流、跨函数执行、精确状态推理和测试集聚合上表现很差。 顺便说一句,这套自动提取管线的输入扰动还能生成新的变体——近 90% 的实例都能产出有效变体,而且这些变体对模型来说更难。

深读

导读 LLM 写代码的能力在快速提升,但一个关键问题悬而未决:它们真的能理解代码运行时的动态行为吗?这篇论文提出了 SWE-Flux,一个专门评测 LLM 对仓库级代码执行推理能力的基准,包含 480 个从真实测试执行中自动提取答案的问题。读完你会看到,当前最强模型在这个任务上准确率仅 37%,擅长局部行为但严重缺乏跨函数、跨测试的全局推理能力。 关键信息 - SWE-Flux 包含 480 个执行相关的问答实例,覆盖 12 个真实 Python 仓库。 - 答案不是人工编写或 LLM 判定的,而是从插桩测试执行中自动提取的。 - 评测了五个 LLM,最好成绩仅 37% 准确率。 - 模型在局部行为(不变量、函数内控制流、异常、简单循环)上表现较好,但在数据流、跨函数执行、精确状态推理和测试集聚合上表现很差。 - 自动提取管线通过输入扰动可生成新变体,近 90% 的实例能产出有效变体,且这些变体对模型来说更难。 逐节讲解 现有基准的局限与 SWE-Flux 的定位 现有仓库级 QA 基准主要评测静态代码理解,且常依赖 LLM 自身来评判答案质量;而执行推理基准大多只到函数或代码片段级别。SWE-Flux 填补了这一空白:它是一个仓库级的动态执行推理基准,问题覆盖控制流、循环、程序状态、数据流、异常和程序不变量,包含单测试和多测试两种问题类型。 自动答案提取管线 SWE-Flux 的核心创新在于答案来源:不是人工编写,也不是 LLM 判断,而是从插桩测试执行中自动提取。这意味着答案有客观的、可重复的 ground truth,避免了 LLM 自评带来的偏差。 模型表现与能力短板 评测了五个 LLM,最佳模型准确率仅 37%。模型在需要理解局部行为的问题上表现尚可,例如不变量、函数内控制流、异常处理和简单循环。但在数据流追踪、跨函数执行路径、精确状态推理以及跨多个测试的聚合推理上表现很差。这说明 LLM 对代码的理解仍然停留在表面模式,缺乏对运行时动态行为的深层建模能力。 变体生成与难度提升 自动提取管线还能通过输入扰动生成新的基准变体。实验显示,近 90% 的选定实例都能产出有效变体,且这些变体对模型来说更具挑战性,为后续评测提供了可扩展的难度递增路径。 值得注意 - 论文只提供了摘要,没有展示具体的问题样例、模型名称、实验设置细节或错误分析。因此上述结论均基于论文声称的内容,无法验证其方法的具体实现和评测的严谨性。 - 基准覆盖 12 个仓库,但未说明仓库的规模、领域分布和代码复杂度,这会影响结论的泛化能力。 - 自动提取答案的管线虽然避免了 LLM 偏差,但插桩测试本身的质量(测试覆盖率、测试用例设计)会直接影响答案的正确性和覆盖面,摘要未讨论这一潜在局限。

读原文

本站只做摘要与索引,全部内容版权归原作者所有。