← 返回 2026-02-04

SWE-Master:通过后训练释放软件工程智能体的潜力 SWE-Master: Unleashing the Potential of Software Engineering Agents via Post-Training

Huatong Song, Lisheng Huang, Shuang Sun, Jinhao Jiang, Ran Le, Daixuan Cheng, Guoxin Chen, Yiwen Hu, Zongchao Chen, Wayne Xin Zhao, Yang Song, Tao Zhang, Ji-Rong Wen 📅 2026-02-03 👍 39 2026-07-13 08:35
SWE-bench 代码导航 后训练 强化学习 软件工程智能体

开源全流程后训练框架,用32B模型在SWE-bench Verified上达到70.8%解决率

前置知识

SWE-bench Verified

SWE-bench Verified是一个由500个可解决实例组成的软件工程基准数据集,来源于真实的GitHub issues,涵盖12个开源Python仓库。每个实例包含一个问题描述、对应的代码仓库、一个黄金补丁(golden patch)和单元测试套件。评估时,智能体需要在隔离的Docker容器中与代码库交互,生成补丁来解决问题,然后通过fail-to-pass(F2P)和pass-to-pass(P2P)测试来验证修复是否成功。这是当前评估LLM代码智能体最权威的基准之一。

本文的所有实验结果都基于该基准进行评估,理解其评估协议(包括resolve rate的定义、测试验证流程)是解读实验结果的前提

GRPO(Group Relative Policy Optimization)

GRPO是一种强化学习算法,属于RLVR(Reinforcement Learning with Verifiable Reward)范式。它通过在一组样本中计算相对优势来优化策略:对于每个样本,将其奖励与组内其他样本的平均奖励进行归一化,得到优势估计。相比传统PPO,GRPO不需要单独训练价值函数,而是通过组内比较来估计基线。本文在GRPO基础上引入了Leave-One-Out优势估计、Clip-Higher策略等改进,以应对长视野软件工程任务中的熵崩溃和奖励稀疏问题。

GRPO是本文RL阶段的核心算法,理解其基本原理和本文的改进点是理解SWE-Master RL训练的关键

LSP(Language Server Protocol,语言服务器协议)

LSP是由Microsoft提出的标准化协议,用于统一开发工具与语言智能服务器之间的通信。它基于JSON-RPC,将IDE与底层语言编译器/分析引擎解耦,使得不同编程语言可以通过统一接口获取语义分析能力。LSP支持的核心功能包括:go to definition(跳转到定义)、find references(查找引用)、call hierarchy(调用层次分析)、document symbols(文档符号提取)等。传统代码智能体依赖grep等文本检索工具,而LSP提供的是结构化的语义信息。

本文首次将LSP集成到代码智能体中,实现IDE级别的代码导航能力,这是区别于已有工作的核心创新点

Test-Time Scaling(TTS,测试时缩放)

TTS是一种通过增加推理时计算量来提升性能的策略。在SWE场景中,TTS主要有两种形式:顺序缩放(增加交互轮次限制)和并行缩放(生成多个候选轨迹后选择最优)。并行缩放的关键在于选择机制的有效性——如何从多个候选补丁中识别出正确的那个。本文使用SWE-World模型进行模拟评估,它不是简单的二分类,而是生成模拟测试报告和预测奖励,提供可解释的选择依据。

TTS是SWE-Master从61.4%提升到70.8%的关键技术,理解其工作原理有助于评估该方法的实际应用价值

长视野(Long-Horizon)SFT

传统SFT通常处理单轮或短对话,而长视野SFT处理的是多轮交互轨迹,上下文长度可达80K-128K tokens。这类轨迹包含完整的智能体-环境交互过程:思考(Thought)、动作(Action)、观察(Observation)的循环序列。训练时采用多轮掩码策略,将环境反馈(如Docker执行输出)从损失计算中排除,确保模型只学习推理和动作生成,而不是拟合执行输出。

SWE-Master的核心训练范式,理解长视野SFT的特殊性(数据过滤、上下文长度、掩码策略)是理解本文方法论的基础

研究动机

当前最先进的软件工程智能体系统(如OpenAI和Anthropic的系统)存在严重的透明度和可复现性问题。这些闭源系统隐藏了多个关键挑战:在训练数据侧,高效构建高质量教师轨迹(teacher trajectories)的技术尚不成熟,特别是那些能捕获长视野推理和真实环境交互的轨迹;在优化侧,SFT需要精心设计数据过滤和混合策略来平衡正确性、多样性和任务难度,RL则需要精细的算法调优和奖励设计来避免熵崩溃和奖励欺骗;在推理侧,现有框架主要依赖基础的bash命令(如grep、find)进行代码检索,缺乏语义理解能力,在处理涉及重载函数名或多层跨文件调用的bug时效率极低。这些问题形成了高准入门槛,阻碍了学术界的可复现研究。

本文的目标是本文的具体目标是构建一个完全开源、可复现的软件工程智能体后训练框架,系统性地探索从数据构建到训练优化再到推理设计的完整流程。在SWE-bench Verified基准上,从初始性能低于10%的开源基础模型(Qwen2.5-Coder-32B)出发,通过系统优化使其达到与闭源系统可比的性能水平。具体指标包括:Pass@1解决率超过60%,通过TTS进一步提升至70%以上。

与已有工作不同的是,本文的独特切入角度在于「全链路透明化」和「IDE级代码理解」。现有工作要么只关注训练数据(如SWE-Gym、R2E-Gym),要么只关注推理框架(如OpenHands、SWE-agent),缺乏对完整pipeline的系统研究。SWE-Master首次将数据构建、SFT、RL、推理框架四大环节整合在一个可复现的框架中。更重要的是,本文首次将Language Server Protocol(LSP)引入代码智能体,将代码导航从「文本检索」提升到「语义导航」,这是一个被严重忽视但至关重要的技术路径——因为软件工程失败往往源于对大型代码库的理解不足,而非代码生成错误。

核心方法

SWE-Master的方法可以用「构建→训练→优化→推理」四阶段流水线来理解。类比人类培养新程序员的过程:首先让新手阅读资深程序员的解题过程(教师轨迹合成),然后进行系统性的技能培训(长视野SFT),接着在真实项目中历练并从错误中学习(强化学习),最后配备先进的IDE工具提升工作效率(LSP代码导航)。技术路线基于R2E-Gym框架构建推理pipeline,采用解耦的Docker-Server架构实现环境隔离,使用MiniMax-M2和GLM-4.6作为教师模型生成轨迹,通过格式过滤和难度筛选构建高质量训练集,在SWE-Master-SFT基础上进行GRPO强化学习,最终集成LSP工具实现语义级代码导航。

SWE-Master最本质的创新在于两个层面。第一是「难度感知的数据筛选」:通过多次rollout(N∈[3,12])计算每个issue的平均解决率,发现数据呈双峰分布——要么始终解决(简单)、要么始终失败(困难),只有「混合结果」的样本才是有学习价值的。这种筛选策略确保训练集聚焦于可学习难度的样本,解决了现有开源数据集缺乏难度标注的问题。第二是「LSP驱动的代码导航」:现有智能体依赖grep等文本检索工具进行代码定位,在处理重载函数或多层调用时效率极低且容易检索到无关上下文。LSP提供go to definition、find references、call hierarchy等语义功能,将智能体的代码理解从「文本搜索」提升到「结构化导航」,这是从黑盒测试到白盒分析的范式转变。

方法步骤详情

SWE-Master的完整流程分为四个阶段。第一阶段是轨迹合成与数据策展:使用MiniMax-M2和GLM-4.6作为教师模型,在SWE-Gym、R2E-Gym、SWE-smith、SWE-rebench四个数据集上进行rollout,每个issue生成3-12条轨迹。然后进行两级过滤:格式过滤(去除奖励为0、上下文超80K/100轮、语法无效的轨迹)和难度过滤(去除双峰分布中的极端样本)。第二阶段是长视野SFT:在约60K实例上训练,使用YaRN扩展上下文从32K到80K,采用多轮掩码策略排除环境反馈。第三阶段是RL:采用改进的GRPO算法,包含Leave-One-Out优势估计、Clip-Higher策略、KL散度移除等优化,配合强制提交机制和奖励塑形(α=0.5的折扣系数)解决轨迹截断问题。第四阶段是推理增强:集成LSP工具进行语义代码导航,使用SWE-World进行并行TTS选择最优候选。

技术新颖性

SWE-Master的技术新颖性体现在四个方面。首先是数据层面的创新:通过多次rollout估算难度分布并进行筛选,这在开源SWE数据集领域是首创,解决了数据质量控制的关键问题。其次是RL训练的创新:针对长视野SWE任务的特殊性(轨迹截断率约24.3%),提出强制提交机制配合奖励塑形,将截断轨迹也纳入学习信号,这与DeepSWE的掩码策略形成鲜明对比。第三是LSP工具的首次应用:将IDE级别的语义代码导航能力集成到智能体中,提供了go to definition、call hierarchy等传统工具无法实现的功能。最后是TTS的实现方式:使用SWE-World进行模拟评估而非简单二分类,生成模拟测试报告提供可解释的选择依据,在TTS@8设置下实际性能与理论最优(Pass@8)高度对齐。

交互轮次分布的过滤演化
Figure 3: 交互轮次分布的过滤演化
SWE数据集难度分布
Figure 4: SWE数据集难度分布
LSP协议与智能体工作流
Figure 9: LSP协议与智能体工作流
LSP工具效果案例研究
Figure 10: LSP工具效果案例研究
RL奖励设计对比
Figure 12: RL奖励设计对比
Git Hacking行为对比
Figure 13: Git Hacking行为对比
不同上下文管理策略对比
Figure 14: 不同上下文管理策略对比

实验结果

SWE-Master在SWE-bench Verified上取得了开源代码智能体的前沿性能。核心实验结果显示:SWE-Master-32B-SFT在Pass@1下达到57.8%,显著超越SWE-Gym-32B(20.6%)、R2E-Gym-32B(34.4%)等基线;SWE-Master-32B-RL进一步提升至61.4%,超越daVinci-Dev-72B(58.5%)和SWE-Compressor(57.6%)。值得注意的是,在较小的Qwen3-4B模型上,RL训练将解决率从27.6%提升至33.4%(+5.8%),验证了RL框架在不同模型规模上的有效性。在TTS@8设置下,SWE-Master-32B-RL达到70.8%,比Pass@1提升9.4%,且显著优于DeepSWE-32B+TTS@16(59.0%)和R2E-Gym-32B+TTS@16(49.4%),表明选择机制的高效性。Pass@8下更是达到76.2%,接近MiniMax-M2.1(74.0%)和GLM-4.7(73.8%)等闭源模型。数据缩放实验显示,resolve rate随SFT数据量呈对数增长,从6.2%增长至57.8%,但在48K后边际收益递减。RL训练动态显示奖励从0.35稳步上升,交互轮次逐渐增加(从95到110轮),熵持续下降但未崩溃。

开源SWE数据集统计与轨迹生成结果
Table 1: 开源SWE数据集统计与轨迹生成结果
SWE-World奖励预测精度对比
Table 2: SWE-World奖励预测精度对比
SWE-Master与基线在SWE-bench Verified上的性能对比
Table 3: SWE-Master与基线在SWE-bench Verified上的性能对比
LSP功能概览
Table 4: LSP功能概览
LSP工具效果验证
Table 5: LSP工具效果验证
LSP持续训练效率对比
Table 6: LSP持续训练效率对比
难度过滤消融实验
Table 7: 难度过滤消融实验
Git工具消融实验
Table 8: Git工具消融实验
上下文管理器效率对比
Table 9: 上下文管理器效率对比
SWE-Master性能概览与缩放分析
Figure 1: SWE-Master性能概览与缩放分析
RL训练动态
Figure 5: RL训练动态
测试时缩放性能
Figure 6: 测试时缩放性能
评估中交互轮次与解决率分布
Figure 7: 评估中交互轮次与解决率分布
评估中的工具使用分布
Figure 8: 评估中的工具使用分布
SFT数据缩放效果
Figure 11: SFT数据缩放效果
查看结构化数据
任务指标本文基线提升
SWE-bench Verified(Pass@1) Resolve Rate 61.4% daVinci-Dev-72B: 58.5% +2.9%(使用32B模型超越72B模型)
SWE-bench Verified(TTS@8) Resolve Rate 70.8% DeepSWE-32B+TTS@16: 59.0% +11.8%(更少rollout次数更高性能)
SWE-bench Verified(Pass@8) Resolve Rate 76.2% GLM-4.7: 73.8% +2.4%(接近闭源模型水平)
数据过滤消融实验 Resolve Rate 57.8%(含难度过滤) 54.2%(无难度过滤) +3.6%
LSP工具效率 Avg. Turns 91.7轮(含LSP) 111.2轮(无LSP) -17.5%(效率显著提升)
上下文管理器 Input Tokens 1.6M(M2.1+摘要策略) 2.8M(M2.1无管理) -42%(token消耗大幅降低)

局限与改进

本文的局限性主要体现在以下几个方面。首先,实验仅在Python语言的SWE-bench Verified上验证,虽然LSP设计是语言无关的,但实际效果尚需在Java、C++等其他语言上验证。其次,基础模型仅使用Qwen2.5-Coder-32B和Qwen3-4B,未在更小(如7B)或更大(如72B)规模上系统验证框架的泛化性。第三,RL训练的计算成本较高,每个问题生成4个并行rollout,超时设置为5400秒,这对学术界的计算资源提出了挑战。第四,SWE-World作为模拟评估器的精度(77.59%准确率、71.40%召回率)虽可接受,但仍存在约22%的误判,这在高风险场景下可能是问题。第五,论文观察到在Qwen3-4B小模型上,上下文管理器未能带来效率提升,表明该技术可能对模型规模有要求。最后,虽然论文声称完全开源,但部分关键细节(如教师模型的具体提示策略、SWE-World的完整训练流程)的描述仍不够详尽。

独立分析的弱点

SWE-Master存在几个值得改进的弱点。第一,难度筛选策略虽然有效,但依赖多次rollout(3-12次)来估算难度分布,这在大规模数据集上计算成本高昂,可以探索更轻量的难度评估方法(如基于代码复杂度的静态分析)。第二,RL阶段的强制提交机制使用固定折扣系数α=0.5,这是一个需要调优的超参数,可以考虑自适应调整策略。第三,LSP工具的集成是在RL之后通过持续SFT实现的,未能在RL阶段一起优化,可能导致工具使用能力与决策能力的协同不足。第四,轨迹截断问题虽然通过强制提交缓解,但仍有约24.3%的截断轨迹包含正确补丁,这说明模型存在「不敢提交」的问题,可以在训练中引入更精细的自信度估计机制。第五,TTS@8需要生成8条独立轨迹,推理成本是单次的8倍,在实际部署中可能不经济,可以探索更高效的候选生成策略(如基于难度的自适应rollout数量)。

未来方向

未来研究可以从多个方向展开。作者提出的方向包括:扩展到更多编程语言(Java、C++等)和更复杂的多语言项目;探索Multi-SWE-bench和SWE-bench Pro等更高难度基准;将框架扩展到多模态SWE任务(如SWE-bench Multimodal)。基于本文成果可延伸的方向包括:研究更高效的数据筛选算法,减少对多次rollout的依赖;探索LSP工具在RL训练中的联合优化;开发自适应TTS策略,根据问题难度动态调整rollout数量;研究更精细的奖励塑形方法,减少对强制提交的依赖;将LSP工具扩展到更多IDE功能(如代码重构、类型推断);探索跨项目知识迁移,利用在一个项目上学到的调试经验帮助解决其他项目的bug。

复现评估

SWE-Master的复现性较好,论文承诺完全开源代码(GitHub仓库RUCAIBox/SWE-Master已公开)。训练数据来源于公开数据集(SWE-Gym、R2E-Gym、SWE-smith、SWE-rebench),使用Docker容器化环境确保一致性。然而,复现面临以下挑战:需要约13000个Docker镜像(约数十TB存储);RL训练需要大量GPU资源(论文使用RLLM框架);教师轨迹生成依赖MiniMax-M2和GLM-4.6等闭源模型的API调用,这部分成本难以估算;LSP工具集成需要配置pyright等语言服务器。对于资源有限的研究者,可以考虑:使用较小的子集进行验证实验;复用已开源的教师轨迹;使用较小的模型(如4B)验证框架有效性。总体而言,该框架的工程复杂度较高,完全复现需要较强的工程能力和充足的计算资源。