Training Long-Context, Multi-Turn Software Engineering Agents with Reinforcement Learning

很基础的多轮对话agent RL论文,类似于alfworld等真实环境,没有训练数据,直接在真实的环境中交互获得数据。我认为这是以后的一个趋势。在SWE-bench上测评。目测采用了react框架,act->obs->act。第一步是拒绝微调,就是用交互结果成功的数据进行微调,第二步就是rollout后用奖励信号进行学习。 image.png

agent总体可以分为三个部分:基础模型、行动、观察,行动可以是计划、工具调用、实际的动作等,观察可以是环境状态也可以是memory。所有的研究可以在这几个组件进行。


论文深度解读:迈向自主学习的软件工程师

这篇论文 (arXiv:2508.03501v1) 解决了一个当前AI智能体领域的核心挑战:如何让AI智能体在没有明确、逐步指导的情况下,通过与复杂环境的反复试错和交互,学会解决需要多步骤、长上下文推理的现实问题。软件工程,尤其是修复GitHub上的代码缺陷(issue),是这类问题的绝佳代表。

传统的AI方法在应对这类任务时,往往依赖以下三种策略: 1. 使用像GPT-4这样强大的闭源专有模型 (proprietary LLMs),并配合复杂的脚手架 (scaffolding) 代码。 2. 采用耗费大量计算资源的推理时扩展技术 (inference-time scaling techniques),如蒙特卡洛树搜索。 3. 通过监督微调 (Supervised Fine-Tuning, SFT) 的方式,用更强大的“教师模型”生成的“完美答案”来训练一个“学生模型”。

这些方法虽然有效,但成本高昂、依赖闭源技术,或者需要难以获取的高质量示范数据,限制了开源社区和普通研究者构建顶级AI软件工程师的能力。

本文作者独辟蹊径,提出了一条基于强化学习的“自主进化”路线。他们没有寻求外部的“教师”,而是让模型自己成为“学徒”,直接在软件开发环境中“实习”——尝试修复代码、观察编译器的报错、分析测试用例的失败日志,并从最终是否成功修复(一个值为0或1的稀疏奖励信号)中学习。

为了实现这一点,论文首先在概念上做了一个重要的区分。他们指出,像数学解题或单次代码生成这样的任务,可以被看作是“赌博机” (bandit-style) 问题。AI模型接收一个问题,给出一个答案,然后得到一个奖励,整个过程一步到位,没有中间反馈。

The interactive, structured nature of SWE, where actions produce observable transitions and verifiable outcomes, makes it an ideal domain for RL. Yet, to date, most RL applications for LLMs have been limited to single-turn tasks, such as math reasoning or single-shot code generation, which can be trivially modeled as multi-armed bandits or degenerate MDPs with no intermediate environmental feedback (Figure 2).

翻译:软件工程的交互性、结构化特性,即行动会产生可观察的状态转换和可验证的结果,使其成为强化学习的理想领域。然而,迄今为止,大多数针对LLM的RL应用都局限于单轮任务,例如数学推理或单次代码生成,这些任务可以被简单地建模为多臂赌博机或没有中间环境反馈的退化马尔可夫决策过程(图2)。


图注:论文中的图2,清晰地对比了单步的“赌博机”式任务(上)与多步交互的POMDP任务(下)。在软件工程任务中,智能体需要执行find命令、分析输出、运行测试、接收反馈,然后决定下一步行动,这是一个典型的交互循环。


而软件工程则是一个更复杂的部分可观察马尔可夫决策过程 (Partially Observable Markov Decision Process, POMDP)。在这个过程中,智能体无法完全洞察环境的所有状态(例如,代码仓库的完整内部状态),它必须根据一系列的行动(如执行shell命令、编辑文件)和观察(如命令的返回结果、测试日志)来构建对当前状况的理解,并规划后续步骤。

基于此,论文提出了一套精心设计的两阶段训练流程:

第一阶段:拒绝微调 (Rejection Fine-Tuning, RFT) 这是一个巧妙的“预热”步骤。他们首先让基础模型(Qwen2.5-72B-Instruct)在数千个软件工程任务上反复尝试,然后只保留那些最终成功解决问题的“幸运”轨迹。接着,用这些成功的轨迹对模型进行监督微调。这一步至关重要,因为它教会了模型如何正确地使用工具、遵循指令格式,相当于一个“岗前培训”。实验数据显示,仅凭基础模型,在SWE-bench Verified测试集上的成功率(Pass@1)仅为11.4%,而经过RFT后,成功率提升到了20.5%。

第二阶段:多轮强化学习 (Multi-Turn RL) 这是论文的核心贡献。在RFT的基础上,他们采用了一种名为解耦优势策略优化 (Decoupled Advantage Policy Optimization, DAPO) 的改良版RL算法。DAPO是一种无需“评论家网络”(critic)的策略优化算法,它通过比较一组尝试中某个尝试的最终奖励与这组尝试的平均奖励,来计算一个“优势”值,并以此指导模型的参数更新。这比传统的PPO算法更稳定、更高效。

作者对DAPO进行了针对性的改造,以适应长序列、多轮次的软件工程任务。例如,他们引入了对超长响应的“软惩罚”机制,并让模型在长达131k的上下文窗口中进行训练。为了让学习更高效,他们还设计了一种课程学习 (curriculum learning) 策略:在训练后期,筛选掉那些模型已经能稳定解决的“太简单”的任务和那些从未成功过的“太难”的任务,将计算资源集中在最具学习价值的“中等难度”任务上。

最终,经过这个两阶段流程训练出的智能体,在SWE-bench Verified上的Pass@1成功率达到了惊人的39.0%,几乎是RFT基线的两倍。这个成绩足以与业界顶尖的开源模型(如DeepSeek-V3-0324)相媲美,证明了这条“自主学习”路径的巨大潜力。

总而言之,这篇论文不仅仅是发布了一个更强的代码智能体,它更像是一本详细的“操作手册”,展示了如何将一个强大的开源基础模型,通过与环境的直接交互,锻造成一个专业的“AI软件工程师”。它为整个AI Agent领域的发展,特别是在摆脱对专有模型和教师数据依赖方面,提供了宝贵的经验和深刻的启示。


1. 论文的研究目标是什么? 想要解决什么实际问题?这个问题对于行业发展有什么重要意义?

  • 研究目标:论文的核心研究目标是验证并展示强化学习(RL) 是一种可以有效训练大语言模型(LLM)以解决长周期、多轮交互的软件工程(SWE)任务的强大方法。
  • 解决的实际问题:当前开发高性能SWE智能体主要面临三大瓶颈:
    1. 依赖闭源模型:最好的效果通常来自GPT-4等专有模型,这使得研究和应用成本高昂,且技术路线不透明。
    2. 依赖教师模型:许多开源工作通过监督微调(SFT)进行,但这需要用一个更强的模型(教师)来生成高质量的解决方案,陷入了“用魔法打败魔法”的循环,并且限制了模型超越教师的能力。
    3. 高昂的推理成本:一些方法通过在推理时进行大量搜索(如MCTS)来提升性能,但这在实际部署中速度慢、成本高。
    论文旨在解决这些问题,探索出一条仅使用开源模型,无需教师模型示范,并且将智能提升的成本主要放在训练阶段的新路径。
  • 行业意义:这项研究的意义是深远的。
    • 推动AI Agent的自主进化:它证明了AI智能体可以通过与环境的直接交互进行“自我完善”,这是通往更通用、更自主AI的关键一步。
    • 降低顶级AI Agent的开发门槛:为开源社区和中小型企业提供了一套可行的方案,使他们也能构建出与顶级水平相竞争的AI软件工程师,从而促进技术的普及和创新。
    • 开辟新的商业模式:未来,AI Agent的能力可能不再仅仅取决于其基础模型的大小,更取决于其在特定领域“实习”和“进化”的经验。这可能催生出专注于提供高度专业化、经过RL训练的AI Agent服务的公司。

2. 论文提出了哪些新的思路、方法或模型?跟之前的方法相比有什么特点和优势?

论文的核心创新在于其系统性的训练框架和对RL算法的精巧改造,而非提出一个全新的模型结构。

  • 新思路:将SWE任务形式化为POMDP
    • 特点:区别于将代码生成视为“输入-输出”的单步任务,本文强调其交互式和状态化的本质。智能体每一步的行动都会改变环境状态(如修改了文件),并收到新的观察(如编译器错误),它需要基于整个历史(history)来决策。
    • 优势:这种建模方式更贴近现实,使得能够应用强大的强化学习框架来优化整个决策链,而不仅仅是单个生成步骤。
  • 新方法:两阶段训练流程(RFT + RL)
    1. 第一阶段:拒绝微调 (Rejection Fine-Tuning, RFT)
      • 特点:这是一种高效的“冷启动”方法。它不依赖外部数据,而是通过“广撒网”式的尝试,筛选出模型自身产生的成功案例进行学习。
      • 优势:相比于直接上RL,RFT能快速让模型适应任务的格式和工具,显著提升初始成功率(从11.4%到20.5%),为后续更耗资源的RL阶段提供了一个更好的起点,避免了RL在“一无所知”的情况下进行无效探索。
    2. 第二阶段:基于改良DAPO的强化学习
      • 特点:
        • 无评论家(Critic-Free):采用了DAPO算法,避免了训练一个额外的、不稳定的价值网络(critic network),简化了训练过程。
        • 长上下文适应:将训练的上下文长度从多数开源模型默认的32k扩展到65k,甚至131k,以应对真实软件项目中庞大的代码库和冗长的错误日志。
        • 课程学习:在训练后期(Stage 2),动态调整训练任务池,剔除太简单或太难的任务,集中火力攻克“学习甜点区”的任务。
        • 稀疏奖励处理:整个RL流程仅依赖任务最终成功与否的0/1奖励,这在现实场景中更容易定义和获取。
      • 优势:这套方法鲁棒且有效。它使得模型能够在没有密集、人工设计的奖励信号的情况下,从稀疏的最终结果中学习到复杂的行为链。与依赖教师模型的SFT相比,RL允许模型探索并可能发现SFT数据中不存在的、更优的解决方案路径,具备更高的潜力上限。

3. 论文通过什么实验来验证所提出方法的有效性?

论文设计了严谨的实验来验证其方法的有效性。

  • 实验设计:
    • 基准测试集:主要使用SWE-bench,这是一个广泛认可的、从真实GitHub issue中提取任务的基准。为了快速迭代,他们还创建了一个50个问题的随机子集VERIFIED-50用于中间评估。
    • 消融研究 (Ablation Study):论文通过分步展示模型性能,清晰地证明了每个阶段的贡献。这是一个经典的实验设计,说服力很强。
    • 横向对比:将最终训练出的模型与其他顶尖的开源模型(如DeepSeek-V3-0324, Qwen3-235B等)在相同的环境下进行“公平竞赛”。
  • 实验数据和结果:
    • 核心性能提升:如下表所示(根据论文Table 1简化),每个阶段都带来了显著的性能提升。 | 模型/阶段 | 上下文长度 | SWE-bench Verified (Pass@1) | | :— | :—: | :—: | | Qwen2.5-72B-Instruct (基础模型) | 65k | 11.4% | | + RFT (第一阶段后) | 65k | 20.5% | | + RL Stage 1 (RL第一阶段后) | 65k | 35.7% | | + RL Stage 2 (最终模型) | 131k | 39.0% | | DeepSeek-V3-0324 (竞品) | 131k | 39.6% | | Qwen3-235B (更大模型) | 131k | 25.8% |

    • 关键数据解读: > Our two-phase procedure yields substantial improvements… The final model achieves 39.0% on the full SWE-BENCH VERIFIED. > > 翻译:我们的两阶段流程取得了实质性的改进……最终模型在完整的SWE-BENCH VERIFIED上达到了39.0%的成功率。

      这组数据清晰地表明:

      1. RFT的有效性:RFT将成功率提升了近一倍,证明了其作为预热步骤的价值。
      2. RL的巨大贡献:RL阶段将成功率从20.5%进一步提升到39.0%,是性能增长的主要动力。
      3. 竞争力:他们训练的72B模型,性能上追平了以代码能力著称的DeepSeek模型,并超过了参数量远大于自身的Qwen3-235B模型,展示了其训练方法的卓越效率。
    • 另一个值得注意的数据是Pass@10的得分。最终模型的Pass@1(单次尝试成功率)为39.0%,而Pass@10(10次尝试中至少有1次成功)高达58.4%。这表明模型生成的解决方案候选中,往往包含正确答案,只是模型有时无法准确判断哪个是最好的。这为未来引入重排(re-ranking)模块来进一步提升性能指明了方向。

4. 结合大模型领域的当前学术理解,未来在该研究方向上还有哪些值得进一步探索的问题和挑战?

这篇论文打开了一扇门,门后还有广阔的探索空间。

  • 稀疏奖励与信用分配 (Sparse Rewards and Credit Assignment)
    • 挑战:当前模型仅从最终的0/1奖励中学习。在一个包含数十步操作的轨迹中,很难确定到底是哪几步关键操作导致了最终的成功或失败。
    • 探索方向:
      1. 奖励塑造 (Reward Shaping):设计更密集的奖励信号,比如“成功通过一个单元测试”、“编译错误减少”等,都可以给予一个小的正向奖励。
      2. 引入价值网络 (Value Head/Critic):虽然本文为了简化而放弃了评论家,但训练一个辅助的评论家网络来评估每一步的“价值”,仍然是解决信用分配问题的经典途径。
      3. 前缀采样 (Prefix Sampling):从一个成功的轨迹中间某一步开始继续探索,可以更精确地评估后续决策的影响。
  • 不确定性与风险意识 (Uncertainty and Risk-Awareness)
    • 挑战:当前的智能体被训练得“不惜一切代价”去提交解决方案,即使它成功的概率很低。在真实世界中,一个好的工程师懂得何时该“放弃”或“求助”。
    • 探索方向:训练模型输出一个置信度分数,或者利用模型本身的熵作为不确定性的代理指标。这能让智能体在没有把握时选择停止,或者请求人类介入,实现更好的人机协作。
  • 技术和投资机会:
    • AI Agent开发与评估平台:构建能够支持大规模、并行、有状态交互的仿真环境,将成为训练下一代AI Agent的核心基础设施,具有巨大的商业价值(类似文中的Tracto AI)。
    • 高效RL算法与框架:专门为LLM设计的、能够处理超长上下文和稀疏奖励的RL算法库和训练框架,将是关键的技术壁垒。
    • 垂直领域专业Agent:将这套方法论应用到其他需要复杂交互的领域,如科学研究、药物发现、金融分析、游戏等,可以催生出一系列高度专业化的AI Agent,这本身就是巨大的投资赛道。

5. 退一步,从批判的视角看,这篇论文还存在哪些不足及缺失?

尽管这篇论文非常出色,但仍有一些值得商榷和进一步验证的地方。

  • 任务泛化性存疑:所有训练和测试都围绕SWE-bench展开,其任务类型主要是修复bug。该智能体在其他类型的软件工程任务上(如新功能开发、代码重构、文档撰写)表现如何,是一个未知数。
  • 数据清洗的潜在偏见:作者从21,336个原始任务中,通过一系列规则筛选出了7,249个任务。例如,他们排除了“根据LLM评估得分较低的任务”。这种清洗虽然保证了训练的稳定性,但也可能无意中过滤掉了一些更复杂、更模糊但更真实的边缘案例,导致模型对“干净”问题的解决能力被高估。
  • 对“教师”的隐性依赖:论文声称不依赖教师模型,这是指它不使用教师模型生成的轨迹进行SFT。然而,SWE-bench本身提供的“标准答案补丁” (ground-truth solution patch) 在计算最终奖励时,充当了一个“完美的裁判”。智能体的目标是找到能通过这个补丁所对应的测试的方法,这在某种程度上仍是一种对“标准答案”的拟合,而非完全自由的探索。
  • 复现难度:整个流程涉及复杂的分布式基础设施(16个H200节点)、定制化的RL算法和课程学习策略,包含众多超参数。如果没有同等的工程能力和计算资源,其他研究者可能难以完全复现其结果。

6. 我应该从这篇论文中重点学什么?有哪些启发?

对于希望从中汲取创新想法的您来说,以下几点是关键:

  • 核心启发:问题建模是第一生产力
    • 最大的启发在于如何正确地为问题建模。将一个复杂的任务从“一步生成”的思维定式中解放出来,看作是“多步交互与决策”的POMDP过程,是应用更强大算法(如RL)的前提。在您的工作中,可以思考是否也能将某些任务拆解为交互式的智能体问题。
  • 可以“拿来即用”的创新点:
    1. 拒绝微调 (RFT):这是一个非常实用且低成本的自增强技巧。只要您的任务有一个明确的、可自动验证的成功标准(a verifiable success criterion),您就可以用它来为您的模型“热身”。操作流程:用您的模型生成大量候选方案 -> 用验证器筛选出成功方案 -> 用这些成功方案对您的模型进行SFT。这几乎适用于所有代码、文本生成甚至设计领域。
    2. 课程学习策略:在任何长周期的训练任务中,动态调整训练集,优先学习“半懂不懂”的知识点,是一个普遍适用的加速训练、提升效果的策略。您可以借鉴其思路:定期评估模型在各项任务上的表现,然后将资源集中在那些“有进步但尚未完全掌握”的任务上。
  • 需要补充的背景知识:
    • 强化学习基础:尤其是策略梯度(Policy Gradient) 方法,理解PPO (Proximal Policy Optimization) 是理解DAPO的基础。核心概念包括:策略(Policy)、奖励(Reward)、优势函数(Advantage Function)。
    • 软件工程基准 (SWE-bench):了解SWE-bench是如何构建的,即它提供一个代码仓库、一个GitHub issue描述和一个用于验证的脚本。这有助于理解任务的输入、输出和评估方式。
    • 大模型训练与推理技术:对长上下文扩展技术(如本文的YaRN)、分布式训练和高效推理服务框架(如vLLM)有所了解,有助于理解论文的技术实现细节和其面临的工程挑战。