(2512) Self-Play SWE-RL (Meta)
(2511) SkyRL-Agent
🌺 论文摘要
(2511) InfCode
🌺 论文摘要
InfCode提出对抗式多智能体框架,通过测试补丁与代码补丁生成器的迭代互搏解决仓库级缺陷修复中验证信号弱、补丁易过拟合的问题。Test Patch Generator持续构造更强测试用例以暴露缺陷,Code Patch Generator则针对性改进代码,形成动态强化闭环;Selector智能体最终在容器化环境中评估多候选方案,筛选最可靠补丁。
该方法在SWE-bench Verified上以79.4%准确率刷新SOTA,在SWE-bench Lite上达40.33%,领先基线11例。消融实验表明对抗迭代与选择器分别贡献4.0和8.0个百分点提升。
核心贡献在于将对抗训练思想引入代码修复领域,通过可复现的执行环境与多维度评估机制,显著提升了LLM生成补丁的真实可靠性与泛化能力,为自动化软件维护建立了新的质量保障范式。
问题背景
❓问题背景
核心方法
📕核心方法
实验设置
✍️实验设置
基础模型
训练任务/数据
评测任务/数据
算法/策略
超参
关键结果
🍑关键结果
未来方向
⛳ 未来方向
(2509) Kimi-Dev
🌺 论文摘要
问题背景
❓问题背景
核心方法
📕核心方法
实验设置
✍️实验设置
基础模型
训练任务/数据
评测任务/数据
算法/策略
超参
关键结果
🍑关键结果
模型效果
重要结论
关键贡献
未来方向
⛳ 未来方向
(2508) SWE-Swiss
🌺 论文摘要
参考链接
核心方法
- 3任务SFT数据构建方法:
问题定位+问题修复+测试生成,蒸馏DeepSeekR1共10k数据。 - 2阶段训练方法:
3任务SFT+2阶段RL 课程学习,难样本:过滤正确率>90的数据。 - TTS方法:EM +
GT代码相似度。
模型效果(Qwen2.5-32B-Instruct)
- SWE-Verified
SFT达36,RL达45,RL提升9pt,增加TTS(best-120) 达60分。 - 在
通用任务、Math任务、代码生成任务上,均有提升。
重要结论
- 虽然工作用SFT,但
基于RL做定位,也很有效果
关键贡献
- 开源数据

❓问题背景
Agentless把SWE分解为固定workflow- 如何通过提升
各子任务能力,来提升SWE效果?
📕核心方法
核心思想
提升
3技能:定位、修复、单元测试生成。2阶段训练
3任务SFT:分别构造SFT数据2阶段RL:通过执行反馈提升修复能力
3任务SFT数据构建(定位+修复+测试生成)
背景
- 通过提升3任务能力,来提升SWE能力。
- 模型:均使用
DeepSeek-R1-0528做蒸馏模型。
问题定位
- 数据源:SWE-Bench、SWE-Gym-Raw
- 提取GT修改文件。
- LLM预测修改文件。
- 输入:Issue + 项目结构;输出:需要修改的文件
- 筛选标准:
recall=1+预测文件数<5 - 最终:
5.3k 定位数据。
问题修复
- 数据+环境:SWE-gym、SWE-smith。
- LLM预测Patch。
- 输入:
Issue+GT修改文件+相关文件;输出:Patch
- 输入:
- 筛选标准:单元测试。保留通过的。
- 最终:
3.9k 修复数据。
测试生成
- 数据源:SWE-gym、SWE-smith,同问题修复数据。
- LLM生成单元测试。
- 筛选标准:实际执行测试结果,需和原测试保持一致。
- 最终:
1k 单元测试生成数据。

2阶段训练(3任务SFT + 2阶段RL)
3任务SFT
- 10k SFT数据集。
- 把不同的多任务能力,训进一个单模型。
2阶段RL (课程学习)
- 奖励设计:通过单元测试:1,其他:-1
- 阶段1:训200步,
全部数据。 - 阶段2:训90步,
过滤正确率超90%的样本。

测试和TTS
单Patch生成
- 2阶段
定位+修复。- 定位模块:先
预测相关文件 - 修复模块:
预测文件+检索文件-->生成修复Patch,检索使用text-embedding3-small
- 定位模块:先
多Patch + TTS
核心:
生成多个patch+过滤patch+选择最优patch。过滤patch:
原测试过滤+生成测试过滤- 生成测试:Issue+预测相关文件,生成测试用例。测试用例通过一致性选择过滤。
最优patch选择:
传统self-consistency:基于EM做投票选择,数学居多。
增强self-consitency:除
EM以外,增加与GT代码相似度得分。

实验设置和结果
✍️实验设置
基础模型
- Qwen2.5-32B-Instruct
训练任务/数据
- SFT(定位+修复+测试生成):10k 数据
- RL(修复):
SWE-Gym,SWE-smith
评测任务/数据
- SWE-verified
算法/策略
3任务SFT+RL- DAPO技巧:
no kl loss,clip_higher,动态采样,token-level loss
超参
🍑关键结果
模型效果(Qwen2.5-32B-Instruct)
- SWE-Verified
SFT达36,RL达45,RL提升9pt。 - 增加TTS后,
Best-of-120:达60分。 - 在
通用任务、Math任务、代码生成任务上,均有提升。- Instruct < SFT < SFT + RL
重要结论
- 虽然工作用SFT,但基于RL做定位,也很有效果。预测正确:给+1奖励。
关键贡献
- 完全开源。
⛳ 未来方向
(2508) NEBIUS 长上下文多轮SWE (筛选SWE-rebench数据)
🌺 论文摘要
参考链接
核心方法
SWE-rebench数据筛选策略:过滤有误数据+控制复杂度+LLM质量评估+确定性测试- 选出
7k数据做训练,用Verified-50做快速验证。
- 选出
RFT冷启动方法:自蒸馏6.5k轨迹数据 + SFTMask错误格式动作,仅学习有效动作。2阶段RL课程学习:65k->131k,全部样本->难度样本- 难样本:过滤阶段1期后
正确率 > 2/3、正确率=0的样本
- 难样本:过滤阶段1期后
部分DAPO技巧:超长步数惩罚+去掉0优势样本+ Token-level Loss- 步数惩罚:鼓励高效和
惩罚死循环动作
- 步数惩罚:鼓励高效和
模型效果 (Qwen2.5-72B-Inst)
- 训练后,SWE
pass@1达39分,pass@10达58分,持平DeeepSeek-V3-0324
重要结论
不要过滤超长样本,要惩罚死循环。训推不一致:采样topk, topp导致词表被截断,解法:关闭filter。- 未来难题方向:
长程信用分配问题、盲目自信问题。
SWE方法及挑战
❓问题背景
- 复杂的scaffold + 闭源LLM
- 大量的
Test-Time-Scaling技术,(2410)SWE-search - 使用
强LLM做数据蒸馏微调小模型- (2504) SWE-smith, (2506) Skywork-SWE, (2412) SWE-Gym
Long-Horizon 多轮交互- 2阶段RL,YaRN 技术 扩展至131k
反馈复杂:反馈一大堆报错,可能看不懂- RFT 冷启动
数据难以构建- 对策:使用ReBench做清洗,一套清洗策略
奖励稀疏- 对策:GRPO/DAPO,Token-Level Loss
评估贵且有噪声:跑1次要几分钟,还学不到东西;- 对策:
Verified-50子集、去掉Noisy不稳定数据
- 对策:

核心方法
📕核心方法
筛选 SWE-rebench数据
SWE-ReBench
- 原始:
21k任务+3.4k python仓库 - 筛选后:
7.2k 任务
数据筛选策略
过滤任务本身有误的数据:如属性错误、引用错误导致不能通过测试等。控制复杂度:修改文件数<7+修改代码数<500行LLM评估质量:去掉问题描述不清楚、任务过于复杂、test patch有问题的数据。确定性测试:执行50次,需要结果一致,不一致则过滤。
评测集
Verified-50:从SWE-verified 随机选择50个任务,做训练时验证。SWE-rebench 5月和6月版:
环境动作空间 (SWE-Agent Scaffold + ReAct)
动作空间
任意shell命令:ls, cat, grep等。编辑命令:新闻部替换指定行自定义搜索和查找:search_file、open、`gotosubmit:终止
SWE Task
Issue描述、测试套件、sandbox 环境快照
RFT冷启动 (筛选正确轨迹+Mask错误动作)
背景
- Qwen2.5-72B-Instruct:
SWE 仅11分,因为指令格式不遵循。
方法
- 在选定的
SWE-rebench任务上,Rollout 10次,仅保留成功的6.5k轨迹 - SFT
1个epoch:Mask 错误格式动作,只学习有效动作。 - 准确率由
11提升至20分。

DAPO算法+2阶段RL训练
奖励配置
整体奖励:
稀疏奖励+步数超长惩罚,全部正确才为1步数超长惩罚:惩罚死循环+鼓励高效方案: 最大步数,: 开始惩罚的阈值。类似DAPO 长度超长惩罚。
GRPO 算法配置
- 整体同DAPO:
token-level-loss - Group-10 计算,但
去掉优势为0的样本。 - rollout=10
2阶段RL训练
- 阶段1:65k,构建baseline
- 阶段2:
131k,交互轮数T_max翻倍,处理更复杂问题
阶段2优化
降低clip上限:更新更稳定,防止模型跑偏,(2506) Magistral增加问题难度:(2506) 课程RL学习(E2H Reasoner)- 去掉
成功率>2/3的任务 - 去掉
成功率一直为0的任务
- 去掉
增大batch size:梯度计算更准确,(2505) Skywork-OR1减少每次迭代采样的实例数量:平衡开销。- 以上来自推理模型训练经验
实验设置
✍️实验设置
基础模型
- Qwen2.5-72B-Instruct
训练任务/数据
- 从
SWE-rebench清洗的7.2k 数据
评测任务/数据
- SWE-verified
算法/策略
RFT 冷启动+2阶段RL训练(65k->131k上下文)
超参
- 具体见
RL算法配置 - H200,
8卡 * 16节点,每节点32核CPU、960GB CPU内存。
SWE环境
- agent执行:
Kubernetes集群,每个实例0.5 CPU+2GB内存 - 评估:云平台 TractoAI
关键结果(Qwen2.5-72B-Inst)
🍑关键结果
模型效果 (Qwen2.5-72B-Instruct)
RFT 冷启动微调:SWE-verified达20分2阶段 RL训练:pass@1达39分,pass@10达58分。RFT+2RL后:效果持平 DeepSeek-V3-0324,低于235b-Inst-2507,超过Qwen3-235B。
重要结论
不要过滤丢弃超长样本:实际丢弃了超长负样本,导致死循环得不到惩罚。训推不一致导致训练崩溃- 原因:
top-k, top-p导致词表被截断,计算IS权重时分布不匹配。 - 解法:
关闭filter,温度设为1 - DeepSeek-V3.2 保持采样Mask 解决训推不一致问题:
保持采样Mask
- 原因:

SWE 难题未来方向
⛳ 未来方向
稀疏奖励和信用分配问题
背景:长轨迹难以分配奖励信号。
未来方向:
Reward Shaping:设计中间奖励,通过部分测试用例、减少编译器保持数量等。训练辅助Critic:提供step-level的优势估计,实现细粒度更新前缀采样:从共享非空前缀开始进行多次Rollout,更好知道中间动作哪个动作更好
不确定性和风险感知(盲目自信)
- 背景:稀疏二值奖励 鼓励agent提交patch:可能
表现得很自信,但结果不正确 - 现实:需要
识别何时该放弃。 - 方法:
- 模型显示
输出置信度分数 - Agent
自主决定是否重新尝试:自主 Best-of-N 选择
- 模型显示
(2508) DeepSWE (Agentic)
🌺 论文摘要
参考链接
核心方法
Kubernates R2E环境集群+R2E-Gym 4.5k数据+环境执行反馈GRPO++算法:- DAPO技巧:
Clip-Higher+去除KL Loss+去除熵loss+compact过滤 - Dr.GRPO技巧:
优势不除以标准差+去掉序列内Token平均 - RLOO技巧:
留一法计算优势
- DAPO技巧:
Hybrid TTS
模型效果
- Qwen3-32B 经
GRPO++优化后,SWE-verified 达42分,TTS达59分。
重要结论
- 用Claude蒸馏来SFT模型,
SWE仅34分,低于SWE-Agent-LM 40分。 - 用
SWE-Smith和SWE-Gym数据做RL,提升有限。 R2E-Gym很适合做RL,较好课程学习。
关键贡献
问题背景
❓问题背景
- Agent:通过工具调用和真实环境交互,环境给予反馈、奖励信号。
- Code Agent:IDE工具(
Bash+文件搜索+文件编辑+文件浏览)等。
Agent
Code Agent
核心方法
📕核心方法
SWE环境(Kubernates集群)
并发需求
- 每次RL迭代:512个Docker容器,BS=64、8passes。
- 并行RL实验:每时刻都有
几千个容器在运行。
解决方法
- Kubernates集群,每个节点:
200 CPU+6TB local NVME SSD。 - 可扩展至1000 CPU 集群。
RL设置(动作空间+数据+稀疏奖励)
动作空间
- 执行Bash:执行命令,返回sdtout和sdterr
- 搜索:在目录下或对单文件进行搜索
- 文件编辑:查看、创建、替换字符串、插入、撤销修改等。
- 完成/提交:LLM决定已经解决PR,结束
数据
R2E-Gym 4.5k数据集,过滤污染数据。
稀疏奖励
- 1:测试用例
全部通过,(Pass2Pass, Fail2Pass) - 0:
超时或至少有1个未通过 - 超时时间:
5分钟,官方是30分钟。
GRPO++算法(DAPO+Dr.GRPO+RLOO)
相关笔记
采用 DAPO 技巧
Clip-Higher:鼓励探索和防止熵崩塌移除KL Loss:避免LLM受原始SFT影响限制探索空间移除熵 Loss:会增加不稳定性,导致熵增加,训练崩溃。如果基模熵在0.3-1,就无需熵lossCompact 过滤:对达最大长度、超时、达最大步数的数据,Mask Loss
采用Dr.GRPO 技巧
优势不除以标准差:消除任务难度偏差去掉序列内平均,消除长度偏差,其实就是DAPO的Token-Level-Loss
采用RLOO 技巧
留一法计算优势
Compact 过滤:


Hybrid TTS (DeepSWE-Verifier)
- DeepCoder-14B-Preview
16k -> 32k ->64k,LiveCodeBench效果:54 -> 58 -> 60.6,
- Skywork-SWE
- 从头
36提升至47分,Best-of-3 rollout3次,由OpenHands critic model来选择最优轨迹评测。
- 从头
- R2E-Gym TTS
- 先基于
免执行验证选出top-n,再基于执行验证做最终排序。 - 从
34.4提升至51分。
- 先基于
Hybrid TTS
- 不执行验证
- 不执行,由
LLM选择最优轨迹。 DeepSWE Verifier:在正确和错误patch上,训练2epoch,识别正确和错误
- 不执行,由
- 执行验证
- 由LLM生成
测试用例,用例通过最多则为最优轨迹
- 由LLM生成
混合方法。
TTS 参数
- 上下文长度:16k -> 32k -> 128k,
超过32k收益就比较小 - Rollout数量:8、16等
不执行和执行两种方法对比:
TTS 对比:

最大输出token对比

实验设置
✍️实验设置
基础模型
- Qwen3-32B
训练任务/数据
- R2E-Gym 子集
4.5k任务,并做污染过滤
评测任务/数据
- SWE-verified,
官方R2E-Gym代码库来评估 - 超参:
100步,64k上下文 - 指标:
pass@1 avg16, best@8, best@16 - TTS策略:
免执行方法+执行免执行混合方法
算法/策略
GRPO++(多种策略),R2E-Gym Scaffold
超参
- 上下文长度:16k -> 128k,其中
32k效果很好了,后期收益不大 - 训练:
32k、50轮;测试:64k、100轮 - Rollout:
16、8等,做了多组实验 64张H100,训练6天。
关键结果(Qwen3-32B)
🍑关键结果
模型效果
GRPO++微调Qwen3-32B,得DeepSWE-Preview-32B,SWE得分59分,效果提升20pt。pass@1 42.2分,pass@16 71分,TTS best@16 59分。
重要结论
- 使用Claude3-4蒸馏数据做SFT,
仅34.4分,低于SWE-Agent-LM 40分。 - 使用SWE-Smith和SWE-Gym数据集,但
提升有限,训练中无解率很高 - 相反R2E-Gym很适合
RL,提供足够的课程学习,随时间推移解决越来越难的问题。
未来方向
⛳ 未来方向
更大模型:比如DeepSeek-R1更长上下文:扩展到不同领域的agent
(2512) Devstral2
参考链接
模型效果
模型小且效果好256k、Dense模型,比Kimi/DeepSeek都小很多。- Devstral2:
123B,72.2 SWE-verified。 - Devstral Small2:
24B,68 SWE-verified。
- 但
仍落后于闭源模型。
关键结论
- 支持
探索代码库、跨文件协调更改、架构级上下文 - 支持
Mistral Vibe CLI 工具。


(2505) Devstral
🌺 论文摘要
参考链接
核心方法
- SFT轨迹数据合成方法:基于
环境探索+单元测试验证, 保留正确轨迹- 模式:
CoT+代码执行,OpenHands+SWE-Gym - 具体数据没细讲,类似 DeepSeekV3.2 自蒸馏冷启动
- 模式:
Post-Training方法:简单过滤SFT、严格过滤SFT、RL训练。
模型效果
- Devstral-small-24B模型,
SWE达46分,迭代式 Best-of-3指标。
❓问题背景
- 开源模型在
代码片段生成效果好,但在复杂、多步骤SWE任务表现不好。 Coding Agent需要迭代开发、debug、集成软件工具等能力,大都依赖闭源模型。
核心方法(环境探索SFT数据+PostTrain)
📕核心方法
模型架构
- 基于Mistral-Small3 开发:24B,40层,GQA,128k
数据构建方法
- 目标:
Cot推理+code执行能力 - Agent框架:
OpenHands CodeAct scaffold;SWE环境:SWE-Gym - 模型基于
以上环境去探索,基于单元测试验证,仅保留高质量正确轨迹数据。
Post-Train
- SFT:大量数据微调(
简单过滤),高质量数据微调(严格过滤) - RL:使用SFT模型生成新数据,再去做RL训练。
- 论文不清楚。
实验设置
✍️实验设置
基础模型
- Mistral-Small3 24B
训练任务/数据
- 没说
评测任务/数据
SWE
OpenHands Scaffold:安全的沙盒环境,代码、bash、网页浏览(本实验禁用)。Best-of-3作为pass@1:第1次(温度=0),第2、3次(温度=0.1)- 一般做法:多次取
avg作为pass@1
- 一般做法:多次取
评测时的交互轮数:50轮效果好,100轮也没有提升。30轮低10个点。
算法/策略
- SFT + RL
超参
- 128k
关键结果(Devstral-small-24B)
🍑关键结果
模型效果
- Devstral-small-24B
SWE达46分,超越一众顶尖模型。- Qwen3-235B(25), DeepseekR1V3(40+), GPT-4.1-mini(23.6), Claude3.5-Haiku(40.6)。
重要结论
- 评测交互轮数:
50轮效果好46分,30轮仅36分。 - 温度
0.1和0.4比较好,0.7和1.0反而Pass@4还低了。

⛳ 未来方向
- 新版本优化:2507比2505好
- 优化数据生成和筛选过程:提升数据质量
- 微调数据过滤机制:可能不仅看是否单元测试,还会看代码风格、步骤冗余度等。
- 不同脚手架支持:构造伪脚手架.
- 多格式训练:增加XML格式、原生函数调用格式等。
- 优化数据生成和筛选过程:提升数据质量

(2502) SWE-RL (Meta)
🌺 论文摘要
参考链接
核心方法
- 1套
GithubPR数据收集构建方法:仓库事件克隆+PR聚合+预测相关文件+数据过滤- SWE-RL PR数据:
27.3w
- SWE-RL PR数据:
- 1套
AgentSFT数据合成方法:PR种子筛选+定位数据合成+编辑数据合成 - SWE-RL方法:
LLama3-70B+GRPO,不执行环境,采用Patch相似度来做奖励信号
模型效果
- SWE-RL-70B 达
41分,Best-of-500。
重要结论
RL比SFT效果好。Best-of-N越大越好,但后期逐渐收敛。DenseReward比Sparse Reward好。
整体流程如下

问题背景
❓问题背景
问题
- SWE 进展:
repo-level 代码生成、Issue Resolution(SWE Bench)。 - SWE-Bench:
主要依赖私有模型GPT-4o, Calude-3.5,开源模型很少。- DeepSeekR1 RuleRL很强,但是
SWE任务效果不行。
- DeepSeekR1 RuleRL很强,但是
- 传统规则奖励
难以直接应用到SWE任务。- 数学:
EM匹配; - 代码:竞赛题,
单代码文件、容易执行;SWE:有依赖,不是自包含的。
- 数学:
SWE 相关工作
- (2411)Lingma-SWE-GPT:迭代开发过程,基于Qwen2.5-Coder-7B和Qwen2.5-72B-Instruct 构建。
- (2412)SWE-gym:第一个用于
开放训练的环境,提升Qwen2.5-Coder-7B/32B效果。 - (2501)SWE-fixer:微调Qwen2.5 base,提升best@1性能。
GitHub PR数据收集构建方法
- 最终:
27.3w 高质量 Gihub PR - 每个PR包含:
Issue描述:问题Code Context:所有相关文件(需要修改+不需要修改的)Oracle Patch:GT解决方法
Github Events Clone
- 目标PR数据:PR中的
所有事件、PR之前的源代码。 - 通过 GHAchive 拉取事件:1501-2412共10年数据
- 通过GitClone 仓库:包含历史所有commit,共460w repo。
PR 数据聚合
- 从PR出发,关联
Github事件和代码库,仅保留已合并的PR,聚合以下内容- Issue、用户讨论、Review Comment、出事代码、Commits、代码变更。
- 保存从
merge base到head commit所有的中间提交和代码变更 - 扫描所有PR,
识别Issue并与对应PR匹配 (Prompt, Response)。累计240w PR。
预测相关但未修改文件
- 问题
- 目前PR
仅包含被修改过的文件,但实际预测会检索到很多无关文件 - 如果训练时,只看修改文件,会产生bias。
- 目前PR
- 方法
- 根据Issue+已修改文件,使用
Prompt+LLM预测相关但未被修改的文件列表 - 把这部分
相关但未修改文件列表加入数据集中。
- 根据Issue+已修改文件,使用
数据过滤
- 背景:PR有噪音,需剔除有害PR。但允许一定噪音,尽量召回高质量PR。
- 过滤规则:
- 过滤
机器人PR - 过滤
变更极大的PR 细粒度过滤:检查每个代码块 Hunk(参考CodeLLaMA ),确保是在写代码,去掉版本、锁定等内容。
- 过滤
- 最终:
1100w PR->27.3w 高质量PR

AgentSFT 数据合成
PR 种子数据筛选
收集高质量PR种子数据:启发式规则筛选
问题定位数据-合成
- LLM合成
- 输入:
Issue描述+仓库结构+目标编辑文件+相关文件 - 输出:
CoT推理生成需要编辑的文件。 - LLama-3.3-70B-Instruct
- 输入:
- 过滤:
仅保留推理正确的答案
代码编辑数据-合成
- LLM 合成
- 输入:
标准答案和Patch, - 输出:
Search/Replace格式的代码编辑数据。
- 输入:
- 过滤:保留
格式正确且search/replace内容正确(能搜索到)的数据。
相关工作
- 整体采样Magicoder的OSS-Instruct技术,同Seed-Coder合成数据技术

核心方法
任务Prompt 设计
整体
Reasoning+Tool Use风格。prompts.py- THINKING_SYSTEM + AGENTLESS_REPAIR
THINKING_SYSTEM
- 强调输出思考过程
AGENTLESS_REPAIR
- --- BEGIN ISSUE ---:{problem_statement},
Issue 定义 - --- BEGIN FILE ---:{content},包含
相关文件的全部源代码 - 任务指令:
先定位、再修复 - 输出格式:
Search/Replace 协议,严格的Diff格式 - 样例:
输出样例
```python
### mathweb/flask/app.py
<<<<<<< SEARCH
from flask import Flask
=======
import math
from flask import Flask
>>>>>>> REPLACE
```
RL 设计
📕核心方法
任务
- 给定
Issue+上下文,进行推理,生成代码变更,把代码变更应用到Patch中。
奖励
不去真正执行,而是对比Patch 相似度。Python.difflib.SequenceMatcher。
算法
- GRPO + KLLoss
训练和测试存在不同点
训练
- 给出所有相关代码文件,隐式强迫模型
先找Bug、再做修复。
评测时 (Agentless mini 框架)
- 完整Pipeline
- Step1
文件定位:bug在哪个文件? - Step2
测试生成:生成测试用例,来复现bug - Step3
回归测试:挑出哪些旧测试用例跑一遍,防止改坏了别的地方。 - Step4
修复代码:请写出修复代码
- Step1
SWE-RL 训练时仅有4,没有1、2、3。但在测试时,有泛化性。
实验设置
✍️实验设置
基础模型
- Llama-3.3-70B-Instruct
训练任务/数据
- RL:27.3w 构建的PR数据
- SFT:
合成代码编辑SFT数据+LLama3代码SFT数据+LLama3通用SFT数据
评测任务/数据
- SWE-Bench-Verified。
- 温度=1,每个问题
生成500个patch - 使用
top-30测试用例去测试排序,选择第1名的patch去报告pass@1,其实是Best-of-N。
算法/策略
- GRPO、混合SFT
Scaffolding
- 基于Agentless开发的简化
Agentless mini,专注于文件级定位
超参
16k 上下文,batch_size=32,rollout=16,real_batch_size=512512 张H100,32小时。
关键结果(LLaMA-3-70B)
🍑关键结果
模型效果
未使用闭源LLM蒸馏技术,纯开源数据。- LLama3-SWE-RL-70B:
SWE-Verified 41分,在100B模型下效果最好, SFT 达36.2分,效果也不错。
重要结论
- 测试
Best-of-NN越大效果越好,后期逐渐收敛。20 -> 160 -> 500:33.6 -> 40 -> 41 DenseReward比Sparse效果好一些,促进格式和修复。
未来方向
⛳ 未来方向
- 奖励太僵硬:奖励仅靠GT相似度会限制模型探索其他方案,没有真正的执行奖励。
- 定位粗糙:Agentless Mini 缺乏复杂上下文信息。
- 流程割裂:Agentless 固定Pipeline,但理想Agent应该是E2E的。