论文

存储库级代码问答的深度代理搜索:实证研究

Deep Agentic Search for Repository-Level Code Question Answering: An Empirical Study

智能体系统Agent任务评测

摘要

代码代理花费大量精力只是在存储库中查找正确的代码。目前的实践主要有两种方法。在语义搜索中,代理从预先从存储库构建的向量索引中检索代码块。在深度代理搜索(也称为子代理 grep-search)中,规划代理将探索委托给一个单独的子代理,该子代理在隔离的上下文窗口中工作并仅返回压缩结果。第二种设计被认为是良好的上下文工程实践,它的存在是为了保护主要代理免受上下文污染(也称为上下文腐烂),即上下文窗口中不相关材料累积时发生的准确性损失。最近的代码代理(例如 Claude Code、Codex、Antigravity 等)很快就采用了它,但几乎没有证据表明它是否能产生更好的答案。我们在 SWE-QA(存储库级代码问答的基准)上比较了这两种方法。语义搜索正确回答了 65.2% 的问题,而深度代理搜索的回答率为 46.2%,而且它生成每个正确答案的成本不到一半。为了解释这一差距,我们将每次失败的运行编码为故障模式分类。分类法表明,深度代理搜索并没有消除失败,而是引入了一种新的失败类别:最大的失败比例(41.8%)发生在规划者与其子代理之间的交接时,这些失败通常是无声的,以流利而自信的错误答案结束。深度代理搜索解决了一个实际问题,现在是许多代码代理的首选设计。然而,我们的结果表明,它提供的保护可能不是免费的,并且对于可索引的存储库的只读问题,检索是更强大且更便宜的选择。