MiroRL
首个支持MCP工具调用的强化学习框架,让AI研究Agent在真实互联网中完成深度研究任务的端到端训练
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
首个支持MCP工具调用的强化学习框架,让AI研究Agent在真实互联网中完成深度研究任务的端到端训练
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2025年,一支来自 MiroMind 团队的研究者在复现 DeepSeek-R1 训练流程时,遇到了一个棘手问题:传统 RLHF 框架只支持单轮问答式交互,无法让 Agent 在多轮对话中调用搜索、网页抓取、代码执行等外部工具来获取真实世界信息。这导致训练出来的 Agent"聪明但脱离现实"——能推理数学题,却无法实时搜索最新论文。
MiroRL 正是为解决这一痛点而生:首个支持多轮 MCP 工具调用的强化学习框架,让 Agent 在 RL 训练过程中也能像真实用户一样,调用搜索引擎抓取网页、用 Python 分析数据、跑 Shell 命令,真正学会"用工具做研究"。
传统的 RLHF(基于人类反馈的强化学习)框架(如 TRILON、verl)设计初衷是优化单轮问答或代码生成质量,输入是一个 prompt,输出是一个 response,训练信号来自 reward model 对最终答案的评分。
但深度研究 Agent 的任务远不止于此。一个典型场景是:
用户问:"2024 年 NeurIPS 最佳论文的核心贡献是什么?" Agent 需要:搜索最新论文 → 抓取 PDF → 提取关键段落 → 总结观点 → 给出引用。
这个过程中,Agent 需要多轮调用 MCP 工具(搜索工具、网页抓取工具、LLM 总结工具),中间每一步都可能成功或失败。传统 RL 框架无法建模这种"工具调用序列",更无法对中间步骤进行有效奖励塑形(reward shaping)。
MiroRL 填补了这一空白。它基于 volcengine 的 verl 框架进行深度改造,将 MCP 工具调用无缝集成到 GRPO(Group Relative Policy Optimization)训练流程中,让 Agent 在训练阶段就能学会"何时调用工具、调用哪些工具、如何组合工具"。
MiroRL 通过自定义 MCPTool 类,将任何支持 MCP 协议的工具接入训练流程。README 中展示了两个核心工具的集成方式:
serper_search.py):调用 Google 搜索 API,返回真实世界信息。jina_scrape_llm_summary.py):抓取网页/PDF 内容,调用本地 SGLang 部署的 Qwen3-14B-128k 进行摘要。开发者只需在 YAML 配置文件中声明工具路径和环境变量,即可将自定义 MCP 工具引入训练:
tools:
- class_name: "mirorl.tools.mcp_tool.MCPTool"
config:
command: "python"
args: ["mirorl/tools/serper_search.py"]
env: ["SERPER_API_KEY", "HTTPS_PROXY"]
server_name: "search_and_scrape_webpage"
这种设计将工具定义与训练逻辑完全解耦,开发者无需修改核心训练代码,即可接入任意 MCP 工具。
MiroRL 训练流程中,Actor 模型生成多轮对话轨迹(包含工具调用),Rollout Worker 调用 SGLang 推理引擎异步处理请求。这种设计的优势在于:
核心实现在 workers/rollout/sglang_rollout/sglang_rollout.py,继承自 verl 的 ActorRolloutRefWorker,扩展了 MCP 工具调用的感知能力。
MiroRL 使用 FlashAttention-2.7.4、Triton 自定义 kernels、序列并行和 CPU Offloading 等技术,使得在单 GPU 节点上训练 14B 规模模型、64K 上下文长度成为可能。相比原始 verl,MiroRL 在长序列场景下的显存占用显著降低。
这对于研究 Agent 的"长程规划"能力至关重要——深度研究任务往往需要跨越数千个 token 的信息整合和推理。
MiroRL 提供了经过验证的端到端训练配方。以 8 卡 GPU 训练 14B 模型为例,流程如下:
miromind-ai/MiroRL-GenQA 数据集(RL 训练用)。MiroRL-14B-SFT-SingleAgent-v0.1 作为起点模型(已在大规模数据上 SFT)。run_mirorl_14b_8xgpu.sh,配置 Serper、Jina、LLM Judge(Qwen2.5-72B)等外部服务。MiroRL 代码库采用模块化分层设计,各模块职责清晰:
| 模块 | 路径 | 功能 |
|---|---|---|
| 核心训练 | mirorl/trainer/ppo/ | GRPO 算法核心、reward 计算、ray 分布式训练 |
| 推理引擎 | mirorl/workers/rollout/sglang_rollout/ | SGLang 推理集成、MCP 感知 Rollout |
| 工具集成 | mirorl/tools/ | MCP 工具基类、Serper/Jina 工具实现 |
| 训练配方 | mirorl/recipe/mcp/ | 端到端训练脚本和配置 |
| 分布式训练 | mirorl/workers/fsdp_workers.py | FSDP 多卡训练封装 |
| 评测工具 | mirorl/utils/reward_score/ | LLM Judge、SimpleQA 等 reward 实现 |
代码质量方面,项目配置了 .flake8、.pre-commit-config.yaml,license 头部规范,每个 Python 文件都有 Apache 2.0 头部,代码注释清晰。依赖 verl 框架(作为 git submodule),确保了与 RLHF 生态的深度集成。
优势方面:
miromind/mirorl:v0.1.0),包含 CUDA 12.4、PyTorch 2.6、FlashAttention、Node.js 等全部依赖,开箱即用。挑战方面:
不推荐以下用户使用:
外部 API 依赖过重:训练过程依赖 Serper、Jina、LLM Judge 等多个外部服务,一旦任何一个不可用,整个训练流程可能中断。MiroRL 文档中也坦诚提到单步训练成本约 $2.28/步(Serper $0.85 + Jina $1.23 + OpenAI $0.20),对于需要大量试错的学术研究来说成本不低。
超参敏感性:GRPO 训练本身对超参敏感,加上 MCP 工具调用的不确定性,训练稳定性不如传统 RLHF。MiroRL 在 core_algos.py 中实现了 ignore_failed_rollouts_in_loss 来部分缓解工具调用失败问题,但这也意味着部分训练样本会被丢弃。
可复现性:虽然提供了完整训练脚本,但 6+ 个外部 API 依赖使得完全复现论文结果有一定难度。GitHub 上 star 246、fork 26,说明目前主要用户是研究者而非生产部署。
评测基准单一:目前仅在 GAIA-text-103 上评测,实际效果在其他研究任务上的泛化性尚不清楚。
MiroRL 的出现标志着 RL 训练框架从"优化答案质量"向"优化研究过程"的范式转变。几个值得关注的方向:
从增长曲线看,2025年8月发布至今(2026年7月),不到一年时间积累 246 star,对于一个高度垂直的研究训练框架来说已属难得。这反映了 AI 研究社区对"Agent + RL"方向的强烈关注。
如果你是 AI 研究者,希望在深度研究任务上微调自己的 Agent,可以参考以下路径:
docker pull miromind/mirorl:v0.1.0,避免手动配环境的痛苦。docs/custom_mcp_tool.md,接入自己的 MCP 工具(如知识库检索、代码执行环境等)。