用AI精准定位问题代码,调试时间直接砍半!LocAgent:斯坦福开源代码调试神器,多跳推理锁定问题代码

120 阅读5分钟

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 丰富的 AI 工具库 -> 每日更新 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦


🔍 「调试时间砍半!斯坦福黑科技让代码问题无处藏身」

大家好,我是蚝油菜花。你是否也经历过这些编程至暗时刻——

  • 👉 面对万行代码库,错误日志像天书找不到源头
  • 👉 接手祖传代码,功能请求不知从哪开始修改
  • 👉 性能优化时,在多层调用链里迷路到怀疑人生...

今天要解剖的 LocAgent ,正在重写代码调试规则!这个斯坦福×耶鲁的「代码CT扫描仪」:

  • 多跳推理引擎:像侦探追踪线索般穿透复杂依赖关系
  • 智能图谱构建:把代码库变成可导航的3D关系网
  • 精准外科手术:直接定位到需要修改的特定代码行

已有团队用它1小时解决过去3天的调试难题,接下来将详解这个学术天团如何用图神经网络+大模型颠覆传统调试!

🚀 快速阅读

LocAgent是专为代码定位任务设计的智能框架。

  1. 功能:支持错误修复、性能优化等多类型代码定位需求
  2. 原理:通过图表示和多跳推理技术实现精准定位

LocAgent 是什么

LocAgent.png

LocAgent是由斯坦福大学、耶鲁大学和南加州大学联合开发的代码定位框架。它将代码库解析为有向异构图,通过捕捉代码结构和依赖关系,帮助开发者快速定位需要修改的代码部分。

该框架基于大型语言模型的多跳推理能力,提供高效的代码搜索工具,显著提升代码开发和维护效率。其创新性的图结构表示方法,能够处理复杂代码库中的多层次依赖关系。

LocAgent 的主要功能

  • 快速定位问题代码:根据自然语言描述精准定位到具体文件、类或函数
  • 多类型问题支持:覆盖错误修复、功能添加、性能优化等场景
  • 智能依赖分析:自动追踪代码实体间的复杂调用关系

LocAgent 的技术原理

  • 图表示技术:将代码库转化为包含文件、类、函数等实体的有向异构图
  • 多跳推理机制:基于大语言模型穿透多层依赖定位问题根源
  • 稀疏层次索引:通过BM25等算法实现大型代码库的高效检索

如何运行 LocAgent

LocAgent,这是一个通过图表示来解决代码定位问题的框架。通过将代码库解析为有向异构图,LocAgent 创建了一个轻量级的表示,捕获代码结构及其依赖关系,使 LLM 代理能够通过强大的多跳推理有效地搜索和定位相关实体。

开发环境设置

请按照以下步骤设置您的开发环境:

git clone git@github.com:gersteinlab/LocAgent.git
cd LocAgent

conda create -n locagent python=3.12
conda activate locagent
pip install -r requirements.txt

启动 LocAgent

1. 解析代码库(可选但推荐)

您可以选择解析代码库以批量生成图索引:

python dependency_graph/batch_build_graph.py \
     --dataset 'czlll/Loc-Bench' \
     --split 'test' \
     --num_processes 50 \
     --download_repo
  • dataset: 选择基准数据集(默认为 SWE-Bench_Lite),您可以从 ['czlll/SWE-bench_Lite', 'czlll/Loc-Bench'](适用于代码定位)和 SWE-bench 系列数据集如 ['princeton-nlp/SWE-bench_Lite', 'princeton-nlp/SWE-bench_Verified', 'princeton-nlp/SWE-bench'] 中选择。
  • repo_path: 您计划拉取或已经拉取代码库的目录。
  • index_dir: 生成的图索引将保存的基本目录。
  • download_repo: 是否在索引前下载代码库到 repo_path

2. 导出图索引和 BM25 稀疏索引目录

如果尚未生成,图索引将在定位过程中生成。

export GRAPH_INDEX_DIR='{INDEX_DIR}/{DATASET_NAME}/graph_index_v2.3'
export BM25_INDEX_DIR='{INDEX_DIR}/{DATASET_NAME}/BM25_index'

3. 运行脚本启动 LocAgent

python auto_search_main.py \
   --dataset 'czlll/SWE-bench_Lite' \
   --split 'test' \
   --model 'azure/gpt-4o' \
   --localize \
   --merge \
   --output_folder $result_path/location \
   --eval_n_limit 300 \
   --num_processes 50 \
   --use_function_calling \
   --simple_desc
  • localize: 设置以启动定位过程。
  • merge: 合并多个样本的结果。
  • use_function_calling: 启用 LLM 的函数调用功能。如果禁用,将使用 codeact 支持函数调用。
  • simple_desc: 由于某些 LLM 的限制,使用简化的函数描述。对于使用 Claude 的情况,将其设置为 False 以获得更好的性能。

4. 评估

定位后,结果将保存在 JSONL 文件中。您可以使用 evaluation.eval_metric.evaluate_results 评估它们。请参阅 evaluation/run_evaluation.ipynb 以获取演示。

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 丰富的 AI 工具库 -> 每日更新 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦