COSIL:基于 LLM 驱动的迭代式代码图搜索的函数级问题定位方法 ——在 SWE-bench 上实现近 2 倍函数定位准确率提升

@莫得名字 2025-12-25 16:52:05

近期,浙江大学、重庆大学与蚂蚁集团合作发表了一篇题为《Issue Localization via LLM-Driven Iterative Code Graph Searching》的论文,提出了一种名为 COSIL(Code Graph-based Issue Localization)的新型问题定位框架。该方法在无需训练、无需预建索引的前提下,在 SWE-bench Verified 与 Lite 上分别实现了 44.6% 与 43.3% 的函数级 Top-1 定位准确率,平均超越当前 SOTA 方法达 96.04%,并显著提升下游自动修复系统的成功率。

本文对 COSIL 的核心思想、技术架构和实验结果进行系统性解读。


背景:问题定位是自动修复的基石

在 LLM 驱动的软件工程自动化(如 GitHub Issue 自动修复)中,问题定位(Issue Localization)是关键前置步骤——目标是从大型代码库中精准识别出需要修改的具体函数。然而,该任务极具挑战:

  1. 搜索空间失衡
    • Prompt-based 方法(如 Agentless)仅在 Issue 描述中提及的文件内搜索,搜索空间过窄,易遗漏真正相关模块(如被调用但未提及的辅助函数)。
    • Agent-based 方法(如 LocAgent、OrcaLoca)则在整个仓库中自由探索,引入大量无关上下文,造成噪声干扰。
  2. 搜索方向不可控
    LLM 缺乏全局视角,易陷入局部循环或无效路径(如反复读取同一类),导致上下文窗口被冗余信息填满。
  3. 交互格式脆弱性
    在长上下文场景下,LLM 难以稳定输出符合工具调用规范的格式(如参数类型错误),引发“ToolError”甚至整个流程崩溃。

这些问题严重制约了 LLM 在真实软件仓库中的定位效能。


COSIL 方法论:四大组件协同解决上述挑战

COSIL 提出一种 两阶段图驱动的迭代搜索策略,结合剪枝机制反射对齐,在不训练、不建索引的前提下实现高精度定位。

1. 两阶段代码图搜索:平衡广度与深度

  • 文件级(File-level)
    基于 Issue 描述中提及的文件,动态构建模块调用图(Module Call Graph),通过 import 关系扩展搜索范围,纳入间接依赖模块(如 django/forms/models.py)。

 

  • 函数级(Function-level)
    将模块图进一步展开为函数调用图(Function Call Graph),执行迭代式探索:每次选择一个节点(类/函数),调用工具获取其代码,若相关则展开其邻居节点,逐步深入。

该策略既避免了“仅看 Issue 提及文件”的视野局限,又防止了“全仓库漫游”的噪声爆炸。

 2. 剪枝机制(Pruner):精准控制搜索方向

在每次 LLM 选择一个目标节点后,COSIL 引入一个轻量级判断器(同样是 LLM),根据节点代码片段与 Issue 的语义相关性,输出布尔值决定是否:

  • 接受该节点(加入上下文并展开邻居),或
  • 剪枝(丢弃该路径,避免噪声传播)。

实验证明,剪枝机制有效抑制了无关路径的探索,提升上下文信息密度。

3. 反射对齐(Reflective Alignment):解决格式错误问题

借鉴 Reflexion 思想,COSIL 在每个阶段结束时,使用一个独立的短上下文查询,要求 LLM 对当前输出结果进行重排与格式化校正

  • 该机制显著降低“空结果率”(Empty Rate):在 Qwen2.5-Coder-32B 上,COSIL 的空结果率为 0%,而 LocAgent 高达 13.67%
  • 同时修复因路径不完整、格式错位导致的解析失败(见附录案例)。

 

4. 动态图构建:无需预建索引

COSIL 利用 LLM 解析代码中的 import 与函数调用关系,按需生成局部子图(见论文 Algorithm 1),避免了预建全仓库图的存储与维护开销。


实验结果:全面超越 SOTA

主实验(RQ1)

SWE-bench Lite / Verified 上,使用 Qwen2.5-Coder-32B:

方法

Function-level Top-1

Agentless-FL

24.7%

OrcaLoca

21.7%

LocAgent

10.3%

COSIL

43.3% / 44.6%

  • 平均提升 96.04%,且在所有指标(Top-3/5, MAP, MRR)上均显著领先。
  • 空结果率最低(0% vs LocAgent 的 13.67%),系统鲁棒性更强。

消融实验(RQ2)

移除各组件后性能下降显著:

  • 迭代搜索:↓27.8%(核心机制)
  • 模块调用图:↓11.5%(扩展搜索空间)
  • 剪枝:↓4.6%(控制噪声)
  • 反射对齐:↓9.9%(保障输出可靠性)

 应用价值(RQ3)

将 COSIL 集成到 Agentless 修复流程中:

  • 在 SWE-bench Verified 上,Resolved% 从 29.4% → 30.0%
  • 在 Lite 上,大幅提升至 21.67%(+30.5%)

 

泛化性与成本(RQ4)

DeepSeek-v3GPT-4o 上均保持领先,且成本可控:

  • DeepSeek:$0.022/instance
  • GPT-4o:$0.341/instance

讨论与启示

  1. 定位精度 ≠ 修复成功率线性相关
    论文发现,即使定位准确率提升,修复成功率提升幅度可能受限于补丁生成阶段的随机性(如 high-temperature sampling)。这提示未来需联合优化定位-修复 pipeline。
  2. 反射机制的普适价值
    Reflective Alignment 不仅解决格式问题,还具备结果重排与错误修正能力,值得在其他 LLM-Agent 系统中推广。
  3. 无需训练的工程优势
    COSIL 完全基于 Prompt Engineering 与工具调用,开箱即用,可无缝集成到现有 Agent(如 SWE-Agent、Agentless)中。

开源与复现


总结

COSIL 通过 “图扩展 + 迭代探索 + 剪枝控制 + 反射校正” 的组合策略,有效解决了 LLM 在代码库中“找不准、走偏路、说不清”的三大痛点。其在函数级定位上的突破,不仅推动了 Issue Localization 任务的发展,也为构建更可靠的 LLM-based 软件工程智能体提供了新范式。

引用
Jiang, Z., Ren, X., Yan, M., et al. (2025). Issue Localization via LLM-Driven Iterative Code Graph Searching. arXiv:2503.22424.

...全文
156 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

109

社区成员

发帖
与我相关
我的任务
社区描述
本社区由重庆大学与云从科技联合发起并共同运营,旨在打造一个开放、前沿、务实的知识共享与交流平台。 我们聚焦于两大前沿技术领域:通用语言大模型 (LLM)与知识协同技术。
软件工程 个人社区 重庆·沙坪坝区
社区管理员
  • 阿大abcd
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧