微软几乎完全通过强化学习训练了一个40亿参数的编码代理,无需更大的教师模型

Reddit r/ArtificialInteligence 论文

摘要

Microsoft Research 推出了 FrogNano,这是一个40亿参数的编码代理,完全通过强化学习进行训练,并使用在线任务合成,实现了有竞争力的性能,无需从更大模型中蒸馏。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/09/10 14:23

# FrogNano:通过在线任务合成训练一个40亿参数的编程智能体  
来源:https://arxiv.org/html/2609.07925  

FrogNano:通过在线任务合成训练一个40亿参数的编程智能体  
郑岩 史\* 埃米利亚诺·佩纳洛扎 克里斯托弗·崔 罗杰·克鲁斯·卡斯塔尼耶 玛丽亚姆·哈希姆扎德,伊莎多拉·怀特,乔纳森·赖特,金正贤,马特乌斯·佩雷拉,达里娅·莫尔达夫斯卡娅,辛梅·辛格,法比奥·贝拉,彭保利,袁星迪,马克-亚历山大·科特,亚历山德罗·索尔多尼  
Froggy团队 – 微软研究院 蒙特利尔实验室  
froggy@microsoft\.com,emiliano\.penaloza@mila\.quebec,czcui@ucsd\.edu  
roger\.creus\-castanyer@mila\.quebec,alessandro\.sordoni@gmail\.com  
https://microsoft\.github\.io/debug\-gym/  

###### 摘要  
我们提出**FrogNano**,一个40亿参数的编程智能体,旨在高效有效地处理软件工程(SWE)任务,即使在资源受限的环境下。它仅通过在约1,500个具有合成任务的SWE环境上进行强化学习(RL)后训练。提高性能的一个关键要素是**在线任务合成流水线**,该流水线生成的任务根据当前检查点的可学习前沿进行校准。本报告提供了证据,表明仅通过合成任务(而非传统的大模型蒸馏)就能训练出有竞争力的小型编程智能体,并且在当前智能体的可学习前沿生成任务至关重要。我们报告了训练方法的细节、跨多种环境的评估以及深入分析,为我们在轻量级但能力强大的编程智能体(可在最小硬件上运行)的持续探索奠定了基础。  
00脚注文本:在Froggy实习期间完成的工作。  
参见标题  
图 1:通过**TaskPilot**进行迭代强化学习训练在SWE-bench Verified上的性能。每次迭代中,TaskPilot添加约300个根据前一次迭代策略校准的*合成*任务。虚线对比使用了约300个和1,500个根据40亿参数策略的可学习性筛选的真实SWE-rebench任务。数字是三次运行的平均值。  

## 1 引言  
(a)SWE-bench Verified 按参数规模的解决率。  
(b)SWE-bench Pro 按参数规模的解决率。  
(c)Terminal-Bench 2.0 按参数规模的解决率。  
(d)PatchEval-Verified 按参数规模的解决率。  

图 2:模型参数规模和性能信息收集自模型技术报告和基准测试官方排行榜。我们的模型在参数少一个数量级的情况下,性能优于更大规模的模型。Qwen3.5-4B\* 使用Leaf框架计算。FrogNano的数据是三次运行的平均值。  

软件工程智能体(SWE)的许多进展是由专有API背后的前沿模型或具有数百亿参数的开源权重模型驱动的。尽管它们能力强大,但此类系统部署成本高昂,且难以用于本地部署和重复实验。这些局限性促使我们思考:一个规模小得多的模型能否成为有能力的仓库级编程智能体?我们在40亿参数规模下研究这个问题,并为紧凑型编程智能体开发了一套训练方案,涵盖数据、框架和强化学习设置。  

##### 数据  
训练SWE智能体需要可执行的、高质量的软件工程任务。从真实开发历史中整理这些任务成本高昂,这催生了如SWE-Gym[34 (https://arxiv.org/html/2609.07925#bib.bib20)]、R2E-Gym[18 (https://arxiv.org/html/2609.07925#bib.bib14)]、SWE-rebench[2 (https://arxiv.org/html/2609.07925#bib.bib32)]、SWE-smith[59 (https://arxiv.org/html/2609.07925#bib.bib13)]和BugPilot[43 (https://arxiv.org/html/2609.07925#bib.bib6)]等数据集和合成任务生成流水线。在本文中,我们提出**TaskPilot**,一个在线的策略自适应任务合成流水线,它利用当前策略的反馈将任务生成导向其可学习前沿。TaskPilot从真实的代码库快照开始,生成候选软件工程任务,并使用当前检查点的轨迹进行评估。策略反馈用于识别可学习的任务,并将任务调整到可学习区域。在文献中,这通常通过难度过滤实现,即根据给定模型的可学习性从大量真实任务数据集中筛选[61 (https://arxiv.org/html/2609.07925#bib.bib61)]。我们通过针对给定检查点定制任务合成来避免这一过程,使任务持续适应当前策略的能力。我们迭代地应用TaskPilot,每当一个检查点在我们的验证集上达到饱和时,我们就使用性能最佳的检查点来生成和校准下一轮任务。这形成了一个任务分布与策略共同演化的闭环。  

##### 框架  
让我们的方案与Qwen3.5-4B[41 (https://arxiv.org/html/2609.07925#bib.bib12)]有效协作,也揭示了智能体框架中的一个重要实际挑战。在更复杂的R2E-Gym/SWE-Agent框架下,Qwen3.5-4B经常无法成功终止,约96%的轨迹达到了回合数上限。因此,我们开发了**Leaf**,一个受Claude Code风格工具使用惯例启发的轻量级编程智能体框架,包含五个类型化的工具和一个简单的自然终止规则。保持其他轨迹设置不变,从R2E-Gym切换到Leaf可将Qwen3.5-4B的SWE-bench Verified解决率从8.3%提高到37.2%,而一个规模大得多的模型对相同的框架变化几乎没有敏感性。  

##### 强化学习  
使用TaskPilot和Leaf,我们通过强化学习迭代优化我们的模型,总共进行了五轮任务合成后接强化学习。我们使用DPPO[39 (https://arxiv.org/html/2609.07925#bib.bib4)],配合异步轨迹和对数长度惩罚,以鼓励简洁的助手生成。经过五次强化学习迭代后的检查点就是**FrogNano**。我们的分析表明,在早期迭代中获得的一些行为可能在后期丢失。为了解决这个问题,我们还研究了一种巩固程序,用于从过去的检查点恢复有用的工具使用行为。  
FrogNano在SWE-bench Verified上达到61.5%的解决率,在SWE-bench Pro上为37.6%,在Terminal-Bench v2上为31.1%,在PatchEval-Verified上为23.2%(图2 (https://arxiv.org/html/2609.07925#S1.F2))。重要的是,这一性能并非通过传统前沿模型蒸馏实现,而是依赖于基于策略的合成任务的迭代强化学习(图1 (https://arxiv.org/html/2609.07925#S0.F1))。这些结果表明,当任务生成适应不断演化的学习者,并配合模型可以可靠使用的交互界面时,紧凑型模型能够获得强大的仓库级编码能力。我们的40亿参数编程智能体也为编程智能体研究提供了一个实用平台,使智能体脚手架、上下文管理、在线数据生成和强化学习的端到端实验更加可行。  

参考标题  
图 3:FrogNano训练循环示意图。从Qwen3.5-4B作为基础模型开始,任务生成阶段和强化学习训练阶段交替进行,直到收敛。  

## 2 框架设计对紧凑型模型至关重要  
编程智能体框架决定了模型如何观察任务并与代码库交互。对于紧凑型模型,这些接口选择本身可能成为主要瓶颈。我们最初的实验使用了R2E-Gym框架,它提供详细的工作流程、一个自定义的多功能文件编辑器和一个专门的`finish`动作。Qwen3.5-4B难以可靠地遵循此交互协议,约96%的轨迹达到了回合数上限,通常没有产生所需的提交动作。这启发了**Leaf**,一个围绕模型能更可靠处理的工具使用惯例设计的轻量级框架。Leaf暴露了五个类型化工具:`read`、`write`、`edit`、`glob`和`bash`。它们的名称和基本模式遵循Claude Code中可用工具的一个小子集[111 https://code.claude.com/docs/en/tools-reference],实现借鉴了SLIME[66 (https://arxiv.org/html/2609.07925#bib.bib64)]中的公共Anthropic适配器[222 https://github.com/THUDM/slime/tree/main/examples/coding_agent_rl]。我们有意省略了交互式编码产品的更广泛功能,如规划模式、权限对话框、提醒、用户特定上下文和辅助工具。  

通过Leaf,模型接收一个简短的系统提示、问题描述和对话历史,并可以用一个或多个JSON模式工具调用进行响应。Leaf按顺序执行调用并将输出返回给模型。包含工具调用的响应继续交互,而不包含工具调用的响应被视为最终答案并终止交互。交互结束后,收集产生的代码库更改并使用任务的测试进行评估。我们发现这些额外的工具和简化很重要,将Qwen3.5-4B使用R2E-Gym框架的性能从8.3%提升到使用Leaf时的37.2%。我们发现这些选择对紧凑型模型尤为重要:一个更大模型MiniMax-M2.5的性能不受框架变化的影响(两种框架下均为66.5%)。  

Qwen3.5-4B与Claude Code风格接口的兼容性可能反映了其在后训练期间接触过类似的交互,尽管其公开文档并未证实这一点。我们在评估和强化学习中都使用相同的Leaf框架。在训练过程中,模型生成的推理、答案文本和工具调用都包含在损失中,而任务提示和工具输出保留在上下文中,但在计算损失时被屏蔽。最终的代码库状态使用任务的测试进行评估。  

## 3 为演化中的策略合成任务  
为紧凑型编程智能体进行强化学习需要与当前策略匹配的可执行任务。策略从未解决的任务不提供学习信号,而饱和的任务提供的相对学习信号很少;因此,随着策略的改进,有用的任务分布会发生变化。TaskPilot使用当前策略的轨迹在线生成、验证和细化任务,将候选任务保留在目标难度范围内,用于下一批训练。表1 (https://arxiv.org/html/2609.07925#S6.T1)将这个策略引导过程置于代表性的软件工程任务构建流水线之中。  

从SWE-rebench[2 (https://arxiv.org/html/2609.07925#bib.bib32)]中抽取的真实代码库快照开始,任务生成模型产生问题陈述、金标准补丁和隐藏的失败转通过(F2P)测试。如果一个候选任务的F2P测试在原始快照上失败,而在应用金标准补丁后通过,并且现有的通过转通过(P2P)测试套件保持稳定,则该候选任务是可执行的。每个任务由问题陈述、代码库快照、运行时、金标准补丁和评分测试组成。在任务合成和FrogNano的强化学习训练期间,金标准补丁仅用于任务验证,并对求解者隐藏。F2P测试指定任务应修复的行为,而P2P测试防止回归。生成的F2P测试及其结果在智能体交互期间也被隐藏。  

### 3.1 策略引导的任务合成与校准  
图 4:TaskPilot中的策略引导任务合成。在可执行验证之后,当前策略的轨迹估计每个候选任务被解决的比例。处于本次迭代目标解决率范围内的候选任务进入下一批强化学习;范围之外的候选任务则被细化、重新评估或丢弃。  

对于每个可执行的候选任务,TaskPilot使用当前40亿参数Leaf策略检查点的轨迹来评估任务。由此产生的反馈不仅用于决定任务是否应被接受,还用于在任务太容易或太困难时对其进行修改。修改后的候选任务随后被验证并再次评估。这个*生成–评估–细化–再评估*循环可能重复数轮,允许任务合成适应当前策略,而不是简单地过滤一个固定的候选池。  

为了确定一个候选任务是否在所需区域内,TaskPilot收集N条轨迹。轨迹是一次完整的随机、多轮尝试,其中求解者接收问题和代码库,但不接收金标准补丁或隐藏的评分测试。我们估算候选任务在当前策略下的解决率为:  
$$\hat{p}_{\mathrm{policy}}=\frac{1}{N}\sum_{j=1}^{N}R_{j}$$  
其中$R_{j} \in \{0,1\}$表示第$j$条轨迹是否通过所有评分测试。  

共享代码库:guillermo-navas-palencia/optbinning  
语义高亮:共享措辞;缺失的契约;行为要求;定位实现细节的说明。  

0% 解决率:太难:定义不明确(1,883字符)  
[...][...]对于一个正数`interval_length`,令所需样本覆盖率为`interval_length`乘以样本大小后的上取整。拟合的HDI区间必须包含至少那么多观测值,并且在实现该覆盖率的区间中具有最小的宽度。等宽选择可以以任何确定性方式解决;没有特定的平局选择是契约的一部分。[...][...]缺失契约:区间闭合性、端点包含性以及区间宽度的含义。  

50% 解决率:期望难度:行为精确(2,398字符)  
[...][...]对于一个正数`interval_length`,令所需样本覆盖率为`interval_length`乘以样本大小后的上取整。拟合的HDI区间是一个闭区间:任一端点的观测值都计入覆盖率。它必须包含至少所需数量的观测值,并且在实现该覆盖率的闭区间中具有最小的宽度。宽度是上端点减去下端点;当只需要一个观测值时,零宽度区间因此是最窄的有效区间。[...][...]行为契约:端点和零宽度语义被明确说明,而无需识别修复点。  

100% 解决率:太容易:方案定位(403字符)  
`RangeDetector`文档将`HDIinterval_length`记录为包含[0,1][0,1],但有效的全区间情况并不安全:`RangeDetector(method="HDI", interval_length=1).fit(np.arange(4.))`当前会引发`ValueError: attempt to get argmin of an empty sequence.`。定义稳定的端点处理方式,使全数据区间被接受并将没有样本标记为异常值,同时不改变普通的ETI/HDI结果。方案定位细节:类、方法、失败输入、异常和预期行为被暴露。  

图 5:三个问题陈述变体的摘录,代码库快照、金标准参考补丁和评分测试保持不变。共享措辞被淡化;彩色子句和注释标记了需求级别的差异,而非字面文本编辑。解决率是当前策略轨迹中最终补丁通过所有评分测试的比例。期望的变体指定了可观察行为,而没有定位实现。  

我们定义策略的广泛*可学习区域*为$0.2 < \Delta p_t < 0.2$,其中$\Delta p_t$表示任务解决率相对于前一次迭代的变化。对于具有正优势标记的token($\Delta p_t > 0.2$),我们保留其优势;对于非正优势标记($\Delta p_t < -0.2$),则将其丢弃。令$\mathcal{T}$表示所有可训练的助手token,$\mathcal{K} \subseteq \mathcal{T}$表示由此非对称掩码保留的token。令$A_t$表示与token $t$相关的轨迹优势。所得的token均值目标函数为:  
$$\mathcal{L}_{\mathrm{policy}}=-\frac{1}{|\mathcal{T}|}\sum_{t\in\mathcal{K}}A_{t}\rho_{t}.$$  
此掩码防止过时的轨迹进一步强化。

相似文章

@MSFTResearch:计算机操作AI代理在处理电子邮件和客户支持等多步骤工作流时表现不佳。Echoverse 在真实环…

X AI KOLs Timeline

微软研究院推出了 Echoverse,这是一组用于训练计算机操作代理的深度、不断进化的环境。一个9B模型在这些环境上训练后,其基线分数几乎翻倍,与GPT-5.4仅差14分。这表明高保真模拟以及模型、世界和验证器的共同进化显著提高了代理在多步骤工作流上的表现。