LocAgent: Graph-Guided LLM Agents for Code Localization

2025年03月12日
  • 简介
    代码定位——即精确识别代码库中需要修改的位置——是软件维护中一项基础但极具挑战性的任务。现有的方法在识别相关代码部分时,难以高效地导航复杂的代码库。其挑战在于将自然语言描述的问题与适当的代码元素联系起来,这通常需要跨越层次结构和多重依赖进行推理。我们提出了 LocAgent,一个基于图表示的框架,用于解决代码定位问题。通过将代码库解析为有向异构图,LocAgent 创建了一种轻量级的表示方式,能够捕捉代码结构(如文件、类、函数)及其依赖关系(如导入、调用、继承),从而使大语言模型代理能够通过强大的多步推理有效搜索和定位相关实体。在真实世界基准上的实验结果表明,我们的方法显著提高了代码定位的准确性。特别是,使用微调后的 Qwen-2.5-Coder-Instruct-32B 模型的方法,在成本大幅降低的情况下(约减少 86%),实现了与当前顶尖专有模型相当的结果,文件级定位的准确率高达 92.7%,同时多次尝试(Pass@10)下的 GitHub 问题解决成功率提升了 12%。我们的代码已开源,可在 https://github.com/gersteinlab/LocAgent 获取。
  • 图表
  • 解决问题
    论文试图解决代码定位(code localization)的问题,即如何在复杂的代码库中高效地找到需要修改的代码部分。这是一个软件维护中的关键挑战,特别是在将自然语言问题描述与代码元素进行匹配时。
  • 关键思路
    LocAgent 提出了一种基于图表示的学习框架,通过将代码库解析为有向异构图来捕捉代码结构和依赖关系。这种方法允许大语言模型(LLM)通过多步推理搜索相关实体,从而更有效地完成代码定位任务。相比传统方法,LocAgent 的创新点在于结合了轻量级图结构和 LLM 的推理能力。
  • 其它亮点
    实验结果表明,使用 Qwen-2.5-Coder-Instruct-32B 模型的 LocAgent 在文件级代码定位任务上达到了 92.7% 的准确率,并显著降低了成本(约 86%)。此外,该方法还提高了 GitHub 问题解决的成功率(Pass@10 提升了 12%)。论文提供了开源代码,项目地址为 https://github.com/gersteinlab/LocAgent。未来可以进一步研究如何优化多步推理效率以及扩展到更大规模的代码库。
  • 相关研究
    近期相关研究包括:(1) CodeBERT 和 GraphCodeBERT 等预训练模型,专注于代码理解和生成;(2)CodeGen 和 AlphaCode,尝试解决编程竞赛中的复杂任务;(3) PLATO 系列模型,探索程序修复和漏洞检测。此外,还有类似的研究如 'Graph-based Neural Networks for Program Understanding' 和 'Code Localization via Natural Language Queries',这些工作均关注于代码理解或自然语言查询的结合,但 LocAgent 在效率和准确性上展示了显著优势。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论