用途
SWE-RL 是论文《SWE-RL: Advancing LLM Reasoning via Reinforcement Learning on Open Software Evolution》(发表于 NeurIPS'25)的官方代码库。该工作提出首个以强化学习方式扩展 LLM 推理能力、面向真实世界软件工程任务的方法,借助开源软件演化数据与基于规则的奖励进行训练。
主要能力
代码库当前提供论文所用的提示词模板和基于序列相似度的奖励函数实现:
- 提示词模板位于 src/swerl/core/prompts.py
- 奖励函数位于 src/swerl/core/reward.py
共提供三个奖励函数 API:
- calculate_search_replace_reward:计算 search/replace 变更与 oracle 变更之间的相似度(论文中所用);
- calculate_reward_unidiff:计算两组 unified diff 之间的相似度;
- calculate_reward:更通用的 API,可与任意编辑格式搭配。
仓库中还给出了 search/replace 变更奖励、unified diff 奖励和通用版本的玩具示例,并列出 calculate_reward_unidiff 与 calculate_reward 的函数签名,可在 swerl.core.reward 中查看。
Agentless Mini
Agentless Mini 基于 Agentless 构建,带来以下关键改进和功能变化:
- 使用 openai-python 进行快速异步推理;
- 代码重构,具备更好的可扩展性、并行化和可访问性;
- 仅执行文件级定位,整份文件内容将用于修复;
- 支持使用多个复现测试进行重排序。
使用方式
环境设置:运行仓库提供的命令安装依赖。
Agentless Mini 可与任意 OpenAI 兼容端点配合。若希望自行托管 Hugging Face 模型,常见选择是 vLLM 和 SGLang。以 vLLM 为例,仓库给出了相应启动方式。此外需要设置 Agentless Mini 所需的环境变量。
当环境变量正确配置后,即可运行 Agentless Mini。最简单的方式是提供 oracle 文件进行修复,这可作为端到端结果的良好代理。仓库还展示了完整流水线的贪心解码演示。
适用场景
面向真实软件工程任务的大语言模型推理训练与研究,尤其是基于开源软件演化数据的强化学习实验;奖励函数也可用于自行项目中评估 search/replace 变更或 unified diff 的相似度。
限制与说明
- 项目已进行大幅代码重构以提升质量与可访问性,可能导致与内部实现存在潜在不一致;如遇 bug 可提交 issue,仓库也在逐步补充更多信息。
- 由于重构和基础设施差异,复现测试生成、回归测试选择与测试执行目前处于进行中(WIP),后续会更新。
- 许可方面,SWE-RL 的大部分内容采用 CC BY-NC 4.0 许可,但项目中部分内容适用不同许可条款:Agentless Mini 采用 MIT 许可。
致谢
仓库致谢 Agentless、SWE-Gym、SWE-Fixer、SWE-bench、Moatless EvalTools、Nebius SWE-agent。
(注:仓库名称为 swe-rl,官方仓库路径为 facebookresearch/swe-rl。)