AI coding agents find the right file but miss the exact lines that matter, study shows

The Decoder··作者 Jonathan Kemper

资讯摘要

AI coding agents find the right file but miss the exact lines that matter, study shows A new benchmark separates code search from the actual fix and exposes a hidden weakness of AI coding agents. They land in the right neighborhood but miss the crucial spots. Until now, AI coding has mostly been judged by the result. Did the agent fix the bug or not? That single metric hides what actually went wrong. Maybe the agent never read the relevant code. Maybe it saw the correct file and still wrote the wrong patch. Either way, the outcome looks the same.

AI coding agents find the right file but miss the exact lines that matter, study shows

资讯正文

AI 编码代理能找到正确的文件,却找不到真正关键的具体行,研究显示

一项新的基准测试将代码搜索与实际修复分离开来,暴露出 AI 编码代理的一个隐藏弱点。它们能找到大致正确的区域,却总是错过最关键的地方。

直到现在,AI 编码能力主要还是通过结果来评判:代理是否修复了 bug?这单一指标掩盖了真正出错的环节。也许代理根本没有阅读相关代码;也许它看到了正确的文件,却还是写出了错误的补丁。无论哪种情况,最终结果看起来都一样。

一个包括上海交通大学在内的国际研究团队正借助 SWE-Explore 解决这一盲点。这个基准只评估流程的第一阶段:代理接收一段 bug 描述和一个软件项目,然后返回一个它认为相关的代码片段排序列表。

成功运行建立参考标准

要手工判断哪些片段真正重要几乎是不可能的。因此,研究团队采用了另一种方法。对于数据集中的 848 个问题,至少都有两次成功的解决尝试,这些尝试来自 GPT-5.4、Gemini 3 Pro、Claude Sonnet 4.6 或 Kimi K2.6 等强大模型。

研究人员从这些运行中提取出 AI 在修复 bug 之前实际查看过哪些文件和行。多个独立解决路径都收敛到的段落,被视为有用上下文的信号。它们并非绝对必需,但强烈表明其重要性。随后,一个单独的验证步骤会补全各个关键段落,团队再对每个区域进行人工复核。

该数据集来自 203 个开源项目,覆盖 10 种编程语言。Python 占绝对主导,在 848 个任务中有 547 个,其次是 Go、JavaScript 和 Rust。

关键词搜索几乎只是勉强胜过随机

对比测试将传统搜索方法与五种通用编码代理进行较量,其中包括 Claude Code、Codex 和 OpenHands,以及四个专门为代码搜索构建的研究系统。

老派的关键词搜索几乎只是勉强比随机猜测好一点。作者通过一个案例研究说明了原因。像“RuntimeWarning on Overflow”这样的 bug 描述,包含的术语在项目模板和文档中出现的频率,远高于在实际源代码中的出现频率。AI 代理之所以明显领先,是因为它们会一步一步地搜索项目,而不是把所有命中项一次性排序。

行级准确率断崖式下滑

在文件层面,这些代理表现还不错。它们能找到正确的源文件,较早地把它排到前面,并保持较小的候选范围。但一旦测试细化到代码的具体行,系统就会崩掉。通用编码代理覆盖到的真正关键行,只占 14% 到 19%。

给问题换上更强大的语言模型也无济于事。团队用来自 OpenAI、Anthropic、Google、Moonshot 和智谱的六种不同模型运行了同一个代理。GPT 系列表现领先,但整体模式并未改变。文件命中率始终明显高于实际的行覆盖率。

不同代理架构之间的结果也惊人地接近。Claude Code、Codex、OpenHands、Mini-SWE-Agent 和 AweAgent 在各项指标上的得分几乎完全一致。

CoSIL 研究系统是一个例外。它把代码视为一个由相互连接的构件组成的网络来扫描,因此获得了高得多的行覆盖率。在这些专门的定位系统中,AutoCodeRover 定位精确,但采取了保守策略,而 OrcaLoca 产生的噪音很少,却错过了许多相关位置。

修复在低于最低上下文阈值时会失败

在一项受控的消融实验中,团队人为改变了上下文。修复模型只看到了核心区域的 0%、25%、50%、75% 或 100%,有时还会被无关的非核心代码填充。对于数据集里较容易的任务,出现了明显的阈值效应。只要可见的必要核心区域少于一半,修复大多都会失败。

成功率只在覆盖率从 50% 提升到 75% 之间才会明显跃升。修复不会逐步改善;它们需要达到一定数量的线索,才会真正“接上”。对于更难的任务,这种效应要窄得多。如果问题本身已经超出了模型能力,即便提供更好的上下文也帮助不大。

一旦关键位置可用,多余的无关代码几乎不会造成影响。读得太少的智能体,表现会比读得太多的更差。对未来改进的启示很明确:少过滤,多读取。代码和数据可在 GitHub 和 Hugging Face 上获取。

大约两年前,一个研究团队创建了 SWE-bench,这是一个用真实 GitHub 问题报告来测试 AI 编码智能体的基准。此后又衍生出一整系列变体,覆盖更多语言、更干净的数据以及更困难的专业任务。不过,最近这个底层成功指标正受到多个方向的压力。研究机构 METR 的一项研究发现,项目经理会拒绝自动化审查器接受的大约一半解决方案,其中许多是因为基本的功能错误。

来源与参考

  1. 原始链接
  2. AI coding agents find the right file but miss the exact lines that matter, study shows

收录于 2026-06-15