[Paper] 一把工具足够:强化学习用于仓库级 LLM 代理
发布: (2025年12月24日 GMT+8 13:27)
7 min read
原文: arXiv
Source: arXiv - 2512.20957v1
请提供您希望翻译的具体文本内容(例如摘要、引言或全文),我将按照要求保留源链接并将其余部分翻译成简体中文。谢谢!
概述
大型开源代码库包含数百万个文件和函数,使得开发者(甚至是高级 AI 助手)很难准确定位 bug 或所需更改所在的位置。论文 One Tool Is Enough: Reinforcement Learning for Repository‑Level LLM Agents 介绍了 RepoNavigator,一个由 LLM 驱动的代理,仅使用 一种执行感知工具——jump‑to‑definition 来浏览代码。通过直接从预训练模型使用强化学习(RL)训练该代理,作者实现了最先进的 issue‑localization 性能,同时保持系统的简洁和可扩展性。
关键贡献
- 单工具设计:引入统一的“跳转到定义”工具,映射实际代码执行流,消除对一套临时检索或搜索工具的需求。
- 端到端强化学习微调:通过强化学习从预训练的大语言模型(LLM)训练 RepoNavigator,避免任何闭源蒸馏或多阶段流水线。
- 可扩展的性能提升:展示 7 B 参数模型优于 14 B 基线,14 B 模型胜过 32 B 竞争者,32 B 模型超越 Claude‑3.7 等专有模型。
- 开源友好:该方法适用于公开可用的模型和工具,使研究者和开发者社区能够复现。
- 实证验证:在真实开源仓库上进行大量实验,显示在各种问题修复任务中定位正确文件/函数的一致性提升。
方法论
-
工具定义 – 跳转到定义
- 代理可以调用一个工具,给定符号(函数、类、变量),返回其在代码库中的精确定义位置。
- 这与开发者在 IDE 中导航代码的方式相同,并且遵循实际的调用图/导入层次结构。
-
强化学习(RL)形式化
- 将问题建模为顺序决策过程:在每一步,LLM 决定是查询工具、查询哪个符号,还是输出最终答案(目标文件/函数)。
- 奖励稀疏但信息量大:当最终预测与真实位置匹配时给予高奖励;中间奖励鼓励高效使用工具(例如,减少跳转次数)。
-
训练流水线
- 从预训练的 LLM(7 B、14 B 或 32 B)开始。
- 通过让模型在一组问题定位示例的训练集上与工具交互,生成轨迹。
- 使用近端策略优化(PPO)更新模型策略,在保持语言生成能力的同时提升导航决策。
-
评估设置
- 基准由多个大型项目(如 Linux kernel、TensorFlow)上的真实 GitHub Issue 组成。
- 指标包括定位正确文件/函数的 top‑1 / top‑5 准确率以及每个查询的工具调用次数。
Source:
结果与发现
| 模型(规模) | Top‑1 准确率 | Top‑5 准确率 | 平均工具调用次数 |
|---|---|---|---|
| 7 B(RepoNavigator) | 48.2 % | 71.5 % | 2.3 |
| 14 B(RepoNavigator) | 55.9 % | 78.1 % | 2.1 |
| 32 B(RepoNavigator) | 62.4 % | 84.3 % | 1.9 |
| 14 B 基线(多工具) | 44.7 % | 68.2 % | 4.7 |
| 32 B 基线(多工具) | 51.3 % | 73.9 % | 4.2 |
| Claude‑3.7(闭源) | 58.1 % | 80.0 % | – |
- 效率:RepoNavigator 的工具调用次数约为多工具基线的一半,降低了延迟和 API 成本。
- 模型规模与性能:即使是最小的 7 B 模型也能超越更大、未经微调的基线,证明 RL 微调的影响大于单纯的参数规模。
- 闭源差距已弥合:32 B 版本超越 Claude‑3.7,表明在使用合适的训练信号时,开源流水线可以与专有产品相媲美。
实际意义
- Developer Assistants:IDE 插件可以嵌入 RepoNavigator,立即建议错误报告所指的文件/函数,减少分配时间。
- Automated Code Review:机器人可以自动定位审阅者评论的确切代码区域,从而提供精确、上下文感知的建议。
- Continuous Integration (CI) Optimization:CI 流水线可以使用该代理仅对受影响的模块运行针对性测试,加快反馈循环。
- Cost‑Effective Scaling:由于只需要一个轻量级工具,基于云的 LLM 服务可以降低请求开销和 token 消耗,使大规模部署更经济。
- Open‑Source Ecosystem:团队可以在没有授权限制的情况下采用 RepoNavigator,促进社区驱动的改进和自定义扩展(例如,针对特定语言的跳转定义后端)。
局限性与未来工作
- 稀疏奖励信号:强化学习训练依赖于轨迹结束时的二元成功/失败信号,这可能导致在非常大的代码库中收敛缓慢。
- 工具依赖:该方法假设存在可靠的、语言感知的跳转到定义服务;该服务的不准确性会直接影响代理的性能。
- 对非代码制品的泛化:当前设计侧重于源代码中的符号;将其扩展到配置文件、构建脚本或文档仍是一个待解决的问题。
- 多问题场景:对跨多个文件/函数的问题(例如跨模块重构)的处理尚未得到充分探索。
- 未来方向:作者建议探索层次化强化学习以更好地处理多步推理,结合静态分析以获得更丰富的奖励,并在保持单工具简洁理念的同时,将工具集扩展至包括“查找使用”或“运行测试”等原语。
作者
- Zhaoxi Zhang
- Yitong Duan
- Yanzhi Zhang
- Yiming Xu
- Jiyan He
- Yunfang Wu
论文信息
- arXiv ID: 2512.20957v1
- 分类: cs.SE, cs.AI
- 发表时间: 2025年12月24日
- PDF: 下载 PDF