[Paper] CodeScout:强化学习代码搜索代理的有效配方

发布: (2026年3月18日 GMT+8 23:25)
7 分钟阅读
原文: arXiv

Source: arXiv - 2603.17829v1

请提供您希望翻译的具体文本内容,我将为您翻译成简体中文。

概览

本文介绍了 CodeScout,一种编码代理家族,它们仅通过标准的类 Unix 终端界面学习在海量代码库中定位相关代码片段。通过应用精心设计的强化学习(RL)方案,作者展示了这些代理在多个代码搜索基准上能够匹配甚至超越体积更大的语言模型,且完全不依赖于重量级的静态分析图或其他自定义工具。

关键贡献

  • Minimalist Agent Design – 演示仅使用普通终端(文件系统命令、grep、cat 等)即可实现有效的代码搜索,摆脱了复杂的仓库图 API 的需求。
  • RL “Recipe” for Code Search – 提供了一个可复现的流水线,包括环境再利用、奖励塑形以及课程式训练,可应用于现有的编码代理框架。
  • Strong Empirical Results – CodeScout 在三个公开基准(SWE‑Bench Verified、Pro、Lite)上始终优于或持平于规模大 2–18 倍的基础或后训练 LLM。某些情况下其表现接近闭源模型如 Claude Sonnet。
  • Open‑Source Release – 发布完整的模型系列、训练代码、基准数据以及详细文档,帮助社区扩展或改进该方法。
  • Benchmark‑Level Analysis – 提供了全面的消融研究,剖析奖励设计、课程长度以及终端动作粒度对搜索成功的影响。

Source:

方法论

  1. 环境重新利用 – 作者从已有的编码代理环境(例如 OpenAI Codex 风格的沙盒)出发,重新配置,使得唯一可观察的动作是终端命令。代码库被挂载为只读文件系统,代理收到原始的命令行输出作为观测。

  2. 动作空间 – 代理可以发出一组受限的 Unix 命令(lscdcatgrepfind 等)。每条命令被分词后输入语言模型,模型逐步预测下一条命令。

  3. 奖励设计 – 奖励稀疏但信息量大:

    • 正奖励:当代理打开包含真实目标函数/类的文件时。
    • 中间奖励:用于缩小搜索范围(例如,减少候选文件数量)。
    • 惩罚:对不必要的命令或超时进行惩罚,以鼓励效率。
  4. 课程强化学习 – 训练从简单任务(文件少、文本线索明确)开始,逐步过渡到更难任务(大型仓库、线索模糊)。使用近端策略优化(PPO)更新策略,并加入 KL 正则化项,使模型保持接近其预训练语言模型的先验。

  5. 模型规模 – 在相同的训练配方下训练多种模型规模(约 300 M 到 2 B 参数),从而直接比较性能与参数数量的关系。

结果与发现

基准CodeScout(最佳)基线 LLM(规模)相对提升
SWE‑Bench Verified48 % 成功率30 %(2 B 参数)+60 %
SWE‑Bench Pro42 %25 %(6 B 参数)+68 %
SWE‑Bench Lite55 %38 %(1 B 参数)+45 %
  • 与闭源模型竞争 – 在部分任务中,CodeScout 的 2 B 参数模型的表现仅比 Claude Sonnet 报告的性能低 5 %,即使仅使用终端操作。
  • 效率提升 – 每次成功搜索的平均指令数从约 12(基线代理)降至约 7,表明导航更为聚焦。
  • 消融分析 – 移除中间奖励会使成功率下降约 15 %,确认了在最终 “找到目标” 奖励之外塑造强化学习信号的重要性。

Practical Implications

  • 简化 IDE 插件的工具链 – 开发者可以在 IDE 中嵌入类似 CodeScout 的代理,而无需部署庞大的图构建服务;该代理像人类一样直接与本地文件系统交互。
  • 成本效益的扩展 – 由于该方法使用的模型规模比典型代码‑LLM 小一个数量级,组织可以在普通 GPU 实例上进行推理,从而降低云费用。
  • 快速适应新代码库 – 不需要预先计算的嵌入或全库索引;代理能够即时学习探索,非常适合持续演进的单体仓库。
  • 多步骤编码助手的基础 – CodeScout 的基于终端的策略可以与下游编辑或生成代码的代理链式组合,实现端到端的“搜索‑再‑编写”流水线。

限制与未来工作

  • 稀疏奖励依赖 – 当前的奖励方案依赖于拥有用于训练的真实位置;要实现真正的无监督搜索,需要替代信号(例如用户点击、测试失败)。
  • 命令集限制 – 虽然 Unix 子集在文本搜索中表现良好,但处理二进制资产或特定语言的构建系统可能需要扩展动作空间。
  • 基准覆盖范围 – 实验聚焦于 SWE‑Bench;需要在更广泛的开源生态系统(如 npm、PyPI)上进行评估,以确认通用性。
  • 长时程规划 – 对于极大的代码库,代理有时会陷入局部循环;未来工作可以整合层次强化学习或记忆增强策略,以提升可扩展性。

作者

  • Lintang Sutawika
  • Aditya Bharat Soni
  • Bharath Sriraam R R
  • Apurva Gandhi
  • Taha Yassine
  • Sanidhya Vijayvargiya
  • Yuchen Li
  • Xuhui Zhou
  • Yilin Zhang
  • Leander Melroy Maben
  • Graham Neubig

论文信息

  • arXiv ID: 2603.17829v1
  • 分类: cs.SE, cs.AI, cs.CL
  • 出版日期: 2026年3月18日
  • PDF: 下载 PDF
0 浏览
Back to Blog

相关文章

阅读更多 »