返回文章列表
代码智能体

CodeMidas:让开源代码直接变成编码智能体的强化学习环境

阅读约 3 分钟

导语

强化学习要训练出更可靠的编码智能体,关键不只是模型规模,还在于能否持续获得大量、 diverse 且可验证的任务。过去,研究者常从 issue、commit 或开发记录中整理任务,但这类素材覆盖范围有限,也未必能完整反映代码库中已经存在的功能。

小米 MiMo 团队提出的 CodeMidas,尝试把任务来源前移到“代码本身”。它将开源代码库中的既有功能转化为可执行的强化学习环境,让智能体在真实代码上下文中学习实现、修改和验证程序。

核心方法:用智能体构建训练环境

CodeMidas 并不是简单地扫描函数名或生成几道题,而是把环境构建过程拆成多个由智能体参与的阶段:

  • 探索已实现功能:智能体阅读并运行代码,理解功能边界和输入输出行为。
  • 形成行为规格:根据执行结果总结任务要求,明确哪些行为应当被实现或保持。
  • 构造可执行测试:测试并非完全凭空生成,而是建立在原始代码的实际运行基础上。
  • 执行检查与筛选:候选任务需要经过环境验证,并通过多次解题轨迹检查其可解决性和测试可靠性。

这种设计的重点,是把“生成任务”和“验证任务”放在同一个闭环里。只有能够运行、能够区分正确与错误答案,并且不容易被偶然行为通过的任务,才更适合作为强化学习样本。

数据规模与实验结果

研究团队最终获得了 5,545 个训练任务,来源覆盖 3,185 个开源代码库、23 种编程语言和 15 个技术领域。研究者使用这些任务,以 GRPO 训练 MiMo-V2.5,并在五个不同类型的基准上观察到性能提升。其中,DeepSWE 的 issue 修复表现提升 11.7%,ProgramBench 的整程序构建提升 17%,Terminal-Bench v2.1 的终端任务提升 8.5%。

消融实验显示,高质量训练任务数量增加时,模型表现也会随之改善。轨迹分析还表明,经过 RL 训练的智能体更倾向于深入探索代码库,并采用更多样的自我验证方式。

意义与局限

CodeMidas 的价值在于提供了一条可扩展的数据生产路径:代码库不只是模型需要修改的对象,也可以成为训练环境的原材料。相比依赖人工编写需求或开发历史,这种方案有机会覆盖更多语言、框架和软件功能。

不过,代码中“已实现的行为”并不天然等同于完整、正确的规格。自动生成的测试仍可能遗漏边界情况,重复解题验证也不能取代人工审查。因此,CodeMidas 更像是扩大任务供给和降低环境构建成本的基础设施,而不是彻底解决编码 RL 中的评测可靠性问题。

如果这一方向继续发展,未来编码智能体的训练数据可能不再主要围绕缺陷修复记录组织,而是从大量真实软件的功能、接口和运行行为中持续挖掘。

来源:Hugging Face Daily Papers

评论

正在确认登录状态……

正在加载评论……

相关文章