来源笔记

Beyond Resolution Rates: Behavioral Drivers of Coding Agent Success and Failure

Coding AgentsSoftware EngineeringTrajectory AnalysisSwe BenchLLM Evaluation

本文通过分析 19 个代理在 500 个 SWE-bench Verified 任务上的 9,374 条轨迹,研究代码代理为何失败。文章认为,单看解决率会掩盖失败的主要来源:错误的架构判断、薄弱的轨迹结构,以及比框架选择更重要的 LLM 局限。

  • 代码代理在大量软件任务上仍会失败,顶级系统在基准问题上仍会漏掉 20% 以上,但基准分数不能说明失败原因。
  • 以往分析常把任务难度、代理身份和行为混在一起,因此“轨迹更长就更容易失败”这类说法可能有混杂因素。
  • 这对自动化软件生产很重要,因为团队需要知道失败来自难任务、搜索和验证行为差、模型能力不足,还是框架设计不佳。
  • 作者分析了 19 个代理的 9,374 条轨迹,覆盖 8 个框架和 14 个 LLM,任务都来自同一组 500 个 SWE-bench Verified 问题,这样可以在相同问题上比较代理。
  • 他们把每条轨迹编码成 13 个动作/响应符号的紧凑序列,包括读代码、打补丁、重复打补丁、运行测试、重现脚本、环境配置步骤,以及触发语法或导入失败的编辑。
  • 对任务难度,他们为每个任务提取了 90 个特征,覆盖补丁复杂度、测试需求、问题文本和元数据,然后比较从未解决和总能解决的简单补丁任务。
  • 对行为,他们用了两组配对分析:一组固定代理,比较它在不同任务上的成功与失败;另一组固定任务,比较在同一任务上成功与失败的代理。
  • 对模型与框架效应,他们比较了使用不同 LLM 但同一框架的代理,以及使用同一 LLM 但不同框架的代理。
  • 数据集包含 500 个任务:55 个没有任何代理解决(11%),416 个有争议(83%),29 个总能解决(6%)。
  • 在 55 个从未解决的任务中,12 个只需要单文件补丁,且总修改数不超过 10 次;这 12 个任务仍然被 19 个代理全部失败。人工标注者把这些任务标成简单或短任务,常见耗时少于 15 分钟或 15 分钟到 1 小时。
  • 补丁复杂度不能把这些看起来简单但失败的任务和那些简单且总能解决的任务区分开来:平均总修改数分别是 4.75 和 3.76,Mann-Whitney p=0.24,Cliff's delta=0.24。
  • 在这类简单补丁任务上,90 个任务特征里只有 5 个差异显著,而且都不是原始补丁大小:fail-to-pass 数量 2.42 vs. 1.24(p<0.001)、FTP 测试文件数 2.17 vs. 1.20(p=0.001)、测试补丁文件数 1.58 vs. 1.00(p=0.003)、测试补丁改动数 21.25 vs. 12.64(p=0.025),以及是否包含重现代码 0.67 vs. 0.24(p=0.014)。
  • 在这 12 个从未解决的简单补丁任务中,最佳代理在 12/12 个案例里找到了 gold-patch 文件,并在 10/12 个案例里编辑了它,但仍然全部失败。文章把这 12 个失败中的 10 个归因为架构判断错误,另外 1 个归因为行为失败,1 个归因为领域知识不足。
  • 摘要还说,在控制任务难度后,轨迹长度与失败的关系会反转,因此长度本身不是可靠的失败信号。它还说,先收集上下文再编辑、并进行更多验证的代理更容易成功,而且这些策略主要由代理决定,而不是按任务自适应调整。
  • 摘要还说,LLM 是结果和行为的主要驱动因素:使用同一 LLM 的代理在更多任务上达成一致,而使用同一框架的代理一致性更低;随着 LLM 质量提升,框架之间的性能差距会缩小。摘要没有给出这些 RQ2 和 RQ3 结论的数值效应大小。