Self Improving Agents Tool R0
论文笔记:Tool-R0 — 自博弈 RL 训练工具调用智能体,从零数据开始
| arXiv: 2602.21320 | UIUC + ETH Zurich |
一句话总结
Tool-R0 让同一个基座模型同时扮演”出题者”和”解题者”,通过自博弈 RL 在零人工标注数据的条件下,把 0.5B 模型训练到超越基座 3B 模型的能力水平。
问题:人工标注是天花板
工具调用智能体的训练,长期依赖人工构造的”任务–工具–答案”数据集。问题在于:
- 人类标注的成本高、速度慢,永远追不上模型能力增长
- 静态数据集无法适应模型能力演进——模型变强了,训练数据还是老分布
- 人类能出的题有天花板,模型自学出来的题没有
核心问题:能否让模型在没有任何人工监督的情况下,自己给自己出题、自己训练自己?
方法:双角色自博弈框架
Tool-R0 的设计很直接,但细节值得仔细看。
两个角色
从同一个基座模型出发,初始化两个角色:
- Generator(π_θ):负责出题。给定任务规格
(domain, context_type, num_tools, num_gold_calls),生成「用户请求 + 工具菜单 + 标准答案」,并通过 GRPO 强化学习优化生成质量。 - Solver(π_φ):负责解题。给定用户请求和工具菜单,输出调用序列,也通过 GRPO 训练。
两个角色独立训练、交替更新——Generator 出题 → 用 Solver 的表现作为信号 → 训练 Generator → 再生成更高质量数据集 → 训练 Solver……循环迭代。
关键机制一:Grounded Task Specification(任务规格锚定)
Generator 如果只看到”出题”两个字,会很快 mode collapse——反复生成类似的题目。
Tool-R0 的解法:给 Generator 一个轻量规格向量 s = (d, c, m, n),分别控制领域、上下文类型、可用工具数量和答案中工具调用数量。这个规格从用户定义的加权分布中采样,注入 Generator 的 prompt 作为元提示(meta-prompting)。
效果:生成分布从”高概率模式”扩散到覆盖更多能力区域。
关键机制二:Difficulty-Guided Reward(难度感知奖励)
这是我认为最聪明的设计。
Generator 出了一道题,难度是”对当前 Solver 来说刚刚好”还是”太简单”或”太难”?这个信息从哪来?
Tool-R0 的答案是:直接问 Solver。
具体做法:对每道候选题目,用当前 Solver 跑 K 次(论文用 K=8 次),看 Solver 能做对几次。得到一个通过率估计 p̂_succ:
- p̂_succ 在 [0.25, 0.75] 区间内 → 题目难度合适,奖励高
- p̂_succ 太低(太难)或太高(太简单)→ 奖励低,指数衰减
这本质上是让 Generator 能感知 Solver 当前的能力边界,在边界附近生成题目——这正是”i+1”学习理论的自博弈版本。
关键机制三:多维度奖励设计
Generator 训练时有三个互补的奖励项:
- Format Reward(r_fmt):输出格式是否正确——四个必需块能否提取、工具 JSON 能否解析、答案 JSON 是否规范
- Validity Reward(r_valid):内部一致性——工具是否在菜单里、参数是否齐全、参数值是否在题目文本中能找到
- Curriculum Reward(r_curr):难度 + 语义连贯性——由上述 difficulty-guided reward 和语义评分组成
Solver 训练时也有类似的分层奖励:Format Reward + Accuracy Reward(工具名匹配 + 参数 key 重叠 F1 + 参数 value 匹配),并且对”多调用”场景有额外的惩罚项(extra-call penalty),防止 Generator 和 Solver 合谋刷分。
数据集构建
Generator 训练完每轮后,冻结它,用它生成 10,000 道候选题,然后经过:
- 去重(基于 question–tool–call 签名)
- 交叉验证(用 Solver 多次预测,保留答案一致的题目)
- 难度分级(easy/medium/hard bucket)
- 平衡采样(保证领域多样性和难度分布)
最终得到 2,000 道高质量题用于训练 Solver。
结果:缩小模型规模差距
核心数据(Qwen2.5 系列,Tool-Alpaca / Seal-Tools / NexusRaven / API-Bank / SNIPS 平均):
| 模型 | 基座分数 | Tool-R0 后 | 提升 |
|---|---|---|---|
| Qwen2.5-0.5B | 15.47 | 30.57 | +101% |
| Qwen2.5-1.5B | 24.85 | 47.84 | +92% |
| Qwen2.5-3B | 43.97 | 48.50 | +10% |
关键发现:
- 0.5B 超越基座 1.5B:零数据自博弈训练,可以让小模型突破原始能力边界
- 1.5B 超越基座 3B:意味着自博弈不只是在小模型上有效,而是真正挖掘了”能力差距”这个信号的价值
- 3B 提升幅度最小:大模型本身已较强,提升空间更小;也说明难度感知奖励在小模型上效果更显著
深层洞察:Capability Gap as Loss Signal
Tool-R0 最重要的贡献不是具体算法,而是一个概念框架——把”能力差距”本身当成训练信号。
传统 RL 的范式:环境给 reward → 模型优化 Tool-R0 的范式:模型自己识别自己不会什么 → 专门生成这类任务 → 训练 → 能力边界外推
这不是 curriculum learning(课程学习),因为没有外部的课程设计者。这是 self-referential gradient——模型在用自己的当前状态来定义下一阶段的学习目标。
这与”元学习”的不同在于:元学习通常在单模型内部做快速适应,而 Tool-R0 是在双角色交互中动态构建任务空间。任务空间本身是训练过程中涌现的,不是预先定义好的。
局限与思考
- 工具类型受限:论文评估的是 API 工具调用(函数调用),迁移到更开放的工具集(如网页操作、文件操作)效果未知
- Generator–Solver 同步更新:两角色独立参数避免了学习冲突,但随着能力提升,Generator 是否会陷入”为 Solver 量身定做”的可作弊空间?
- domain 配置仍需人工:任务规格
s的加权分布是人工指定的,完全零数据还需要后续工作
关联论文
- Agent0(Xia et al., 2025):首个用自博弈训练 LLM Agent 的框架,但只针对 Python 编程工具,任务空间固定
- Dr. Zero(Yue et al., 2026):搜索导向 QA 的自博弈,但同样局限于单一工具类型
- ASL(Agentic Self-Learning):用 Generative Reward Model 替代规则奖励,与 Tool-R0 的难度感知思路正交
结论:Tool-R0 证明了”零人工数据 + 自角色博弈”这条路径的可行性,同时揭示了”能力差距驱动学习”这个范式的强大解释力。值得持续关注其在更开放任务空间(不只是 API 调用)中的泛化能力。
💬 评论
💡 使用 GitHub 账号登录 即可参与讨论