论文Agent0: Unleashing Self-Evolving Agents from Zero Data via Tool-Integrated Reasoning主要提出了一个叫 Agent0 的框架,用来让大模型“自我进化”,而且完全不依赖人工标注数据,同时又能学会比较复杂的工具使用和多步推理。
论文作者为Peng Xia, Kaide Zeng, Jiaqi Liu, Can Qin, Fang Wu, Yiyang Zhou, Caiming Xiong, Huaxiu Yao,来自UNC-Chapel Hill, Salesforce Research, Stanford University。
一、研究背景:为什么要搞“从零数据自进化的 Agent”
- 现有做法的瓶颈
- 现在很多“智能体型”大模型(自动写代码、深度检索、复杂推理之类)都是靠 强化学习 提升能力,比如:
- 从人类反馈来的 RL(RLHF)
- 从可验证奖励来的 RL(RLVR)
- 这些方法高度依赖大规模、人类精心构造的训练数据:写指令、打分、标正确答案……
- 这样带来几个问题:
- 标数据非常耗钱、耗时间,扩展性差;
- 模型的能力被人类知识和标注速度“卡死”,很难突破“人能想到的题与答案”的上限。
- 自进化框架的现有限制
- 最近兴起很多“自我博弈、自我出题、自我挑战”的框架,让模型自己生成训练数据、自我进化。
- 但作者指出两大硬伤:
1)被基础模型能力“封顶”:- 模型自己出题、自己做题,题目往往难度不会明显超过它当前水平;
- 结果就是“自娱自乐”:题越出越像自己会做的那类,难度很难持续上升,学习停滞。
2)大多只支持单轮交互: - 很多框架只在单轮问答中玩自博弈;
- 而真实世界问题往往是多轮、多步骤、多工具调用的复杂过程。
- 这意味着:
- 课程难度上不去;
- 无法真正学会复杂的工具使用和多步推理。
二、核心思路:双智能体 + 工具 + 共进化
论文提出的 Agent0 想解决的就是上面两个问题:
- 两个角色、同一个底模
- 从同一个基础 LLM(如 Qwen3-8B-Base)中初始化两个“角色”:
- Curriculum Agent(课程 Agent):负责出题,生成“前沿任务”——既不要过于简单,也不要完全做不出来;
- Executor Agent(执行 Agent):负责解题,通过强化学习不断提升解题和工具使用能力。
- “共生竞争”的自进化闭环
- 整体流程迭代进行,每一轮分两步:
1)课程进化:- 在当前 Executor 水平的基础上,训练 Curriculum,让它出更能“卡住”Executor 的题。
2)执行进化: - 固定住当前 Curriculum,让它批量出题,过滤出“最有锻炼价值的题”;
- 再用这些题来训练 Executor,让它的能力往上走。
- 在当前 Executor 水平的基础上,训练 Curriculum,让它出更能“卡住”Executor 的题。
- 两者之间是“你强我更强”的对抗共生关系:
- Executor 变强 → Curriculum 必须出更难、更需要工具的题;
- Curriculum 出题变难 → Executor 被迫学会更复杂的推理与工具使用。
- 工具集成:用代码解释器打破天花板
- 仅靠语言模型本身,题目难度会被它的“脑容量”封顶。
- Agent0 的关键是给 Executor、同时也给 Curriculum 接入 代码解释器工具(python 沙盒):
- 可以在推理过程中写代码、执行、拿结果、再继续推理;
- 这相当于引入了一个“外部计算器和环境”,让模型可以借助工具做更复杂的计算与验证。
- 正因为有工具加成,Executor 能力被显著抬高,从而逼着 Curriculum 生成真正需要工具、真正复杂的题目,而不是只在脑补层面打转。
- 支持多轮交互
- Agent0 不是简单的单轮问答,而是:
- 可以生成多轮、带上下文的任务;
- Executor 的解题过程是“思考 → 触发工具 → 获得输出 → 继续思考 → 最终答案”的多步轨迹。
- 这更接近真实世界中人类解决问题的方式。
三、课程 Agent:如何“出好题”
课程 Agent 的目标:生成对当前 Executor 来说“刚好有挑战性”的任务,用一个综合奖励来衡量题目的“好坏”。核心几个信号:
- 利用执行 Agent 的“不确定性”
- 对每个候选任务,Executor 会尝试多次作答(比如采样 10 次答案)。
- 用“多次作答的一致程度”来衡量:
- 如果大部分答案都一样 → 任务太简单;
- 如果完全乱七八糟、没有明显多数答案 → 任务可能太难或太混乱;
- 最佳的情况是:有一定分歧,但能形成一个明显的多数派。
- 论文把这个“一致程度”映射成一个奖励:
- 当“一致度”接近 50% 时(即 Executor 非常纠结)奖励最高;
- 一致度太高或太低都会被惩罚。
- 明确奖励“用工具的任务”
- 为了让课程里多出现需要工具的题,作者直接加了一个 工具使用奖励:
- 统计 Executor 在解这道题时调用工具的次数(比如 python 执行块数);
- 次数越多,奖励越高,但设一个上限,防止模型无脑多次调用工具刷分。
- 这样 Curriculum 就学会了:“出那些逼 Executor 用工具才能做好的题,奖励更大”。
- 多样性约束:避免一窝蜂出同一类题
- 如果不管,Curriculum 可能会围绕某种“好拿分”的题型疯狂复制。
- 论文对同一批任务做类似“聚类”:
- 用文本相似度(例如基于 BLEU)的方式,判断哪些题太像;
- 对属于大簇、重复度高的题加惩罚。
- 这让课程中的任务类型更丰富:不仅难,而且多样。
- 形式合法性检查
- 在综合奖励之前,还会做 格式检查:
- 题目是否符合预期模板、是否包含要求的字段、是否可解析等;
- 不合法的任务直接不给奖励。
- 用强化学习训练出题策略
- 有了上述综合奖励之后,再用类似 PPO / GRPO 这种策略梯度方法去更新 Curriculum:
- 针对“如何出题”这件事本身做 RL;
- 逐渐学会:在当前 Executor 水平下,什么样的问题最能提升对方。
四、执行 Agent:如何在噪声很大的自监督环境中稳步变强
执行 Agent 的目标:在 Curriculum 出的题上尽量答对,同时学会合理地调用工具。
- 挑出“最有训练价值的题”
- 每轮迭代完 Curriculum 后,把它冻结,用来大规模出题,形成题库。
- 对题库里的每道题,让当前 Executor 多次作答,统计“自一致性”(多次答案是否一致)。
- 只保留那些“一致度居中”的题作为训练集:
- 太简单(一致度接近 100%):再训练意义不大;
- 太难或太混乱(一致度很低):可能连 Executor 也完全摸不着头绪,容易学坏。
- 最终得到的是一批“位于能力边界附近”的题——对 Executor 来说既不简单,又不是完全不可做。
- 多步 + 工具的解题轨迹
- 解每道题时,不是一次性吐出答案,而是:
1)先输出一段推理文字;
2)当需要计算或验证时,生成一个“工具调用块”(比如python ...);
3)框架在沙盒中执行代码,将结果封装成output ...反馈给模型;
4)模型继续基于这个反馈推理,可能再次调用工具,直至给出最终答案(用特定标记包住)。 - 这整个过程形成一条混合了自然语言和代码执行结果的长轨迹,强化学习就是在这些轨迹上做的。
- 用多数投票构造伪标签
- 对同一题采样多条完整解题轨迹,拿到多个最终答案。
- 用多数投票选出一个“伪正确答案”,把每条轨迹的最后答案和它比:
- 相同 → 这一轨迹得到正奖励;
- 不同 → 得到零或负奖励。
- 这样就不需要外部标注:是模型自己给自己打分。
- ADPO:在“有歧义的伪标签”下做更聪明的强化学习
因为伪标签来自多数投票,本身可能是错的,而且题目有时很模棱两可。直接当成真标签去强化学习,容易学坏。因此作者提出了一个叫 ADPO(模糊感知的动态策略优化) 的改进版本,大致做了两件事:
(1)根据“题目歧义度”调整学习强度
- 题目的一致度越低,说明模型之间分歧越大,这种题的伪标签越可能是错的。
- ADPO 会根据一致度对每个样本的“优势值”(相当于梯度权重)做缩放:
- 一致度高(模型比较确定) → 保留较强的更新信号;
- 一致度低(高歧义) → 把梯度权重打折,防止模型过度相信可能是错的伪标签。
(2)针对高歧义题放宽“信任区间”,鼓励探索
- 传统 PPO 中有一个“截断比率”的机制,防止策略一步跨太大导致训练不稳定。
- 论文的观察是:
- 对很多低概率 token,这个“上截断”经常被触发,反而会抑制探索新的推理路径。
- ADPO 根据题目一致度,动态调整这个上截断的宽度:
- 对高度不确定的题,适当放宽约束,让策略可以大步调整,把一些“原来概率很低但可能是正确方向”的 token 涌现出来;
- 对很确定的题,保持严格约束,保证稳定和不遗忘。
整体效果:在多数投票伪标签的噪声环境下,Executor 仍能比较稳地向“更好、更会用工具”的方向收敛。
五、实验结果:真的变强了吗?
- 实验设置
- 实现基于 VeRL 框架,基础模型选用:
- Qwen3-4B-Base
- Qwen3-8B-Base
- 每题采样 10 条回答用于不确定性估计和多数投票。
- Self-consistency 过滤阈值设置成一个区间,只保留中等一致度的题。
- 工具是一个沙盒代码解释器,执行带特定标记的 python 代码块。
- 对比对象
- 不做任何训练的基础模型(有无工具版本);
- 多种“零数据自进化”方法:
- R-Zero
- Absolute Zero(也有代码执行器,但主要用于验证)
- SPIRAL
- Socratic-Zero 等。
- 数学推理上的提升
- 以 Qwen3-8B 为例:
- 基础模型在多数学基准上的平均准确率大约在 49 左右;
- 加工具但不训练略有提升;
- R-Zero、Socratic-Zero 等方法能提升到 54~56 左右;
- Agent0 可以到约 58 左右,提升明显。
- 对 4B 模型也有类似趋势,Agent0 基本都是同类方法中的最优或接近最优。
- 泛化到通用推理任务
- 论文还在 SuperGPQA、MMLU-Pro、BBEH 这些更偏通用知识和复杂推理的基准上测试。
- 即使训练主战场是数学推理,Agent0 依然能在这些通用任务上带来 20% 左右的相对提升,并超过其他自进化方法。
- 说明:
- 通过工具驱动、多轮推理形成的“抽象推理能力”,可以在数学以外的领域迁移。
- 消融实验的结论
- 去掉课程 Agent 的训练,直接用“未训练的出题器” → 性能大幅下降,说明“学会如何出题”本身很关键;
- 去掉工具奖励 → 工具相关题目减少,整体性能明显变差,说明明确奖励“需要工具的题”非常重要;
- 去掉多样性惩罚 → 题型更单一,尤其是通用任务上的表现下降;
- Executor 不用 ADPO 改进、只用普通 GRPO → 性能略微下降,证明“按歧义动态调整学习力度和截断”确实有帮助;
- 去掉多轮推理,只用单轮 → 数学等复杂任务的表现明显变差。
- 共进化过程的演化现象
- 他们固定第一轮训练得到的 Executor,用它去做第 1、2、3 轮 Curriculum 分别生成的题集:
- 通过率从第 1 轮到第 3 轮持续下降,说明题确实在变难;
- 同时平均工具调用次数从约 1.6 次升到 2.6 次,说明题目越来越依赖工具。
- 这印证了作者的主张:
- 工具加持的 Executor 变强 → 课程 Agent 出题更难、更工具化;
- 整个系统形成了一个正反馈的“螺旋式上升”。
六、与相关工作的关系
- 相比一般自进化框架
- 以前的自进化方法大多:
- 不带外部工具,难度被模型本身能力封顶;
- 或者只用外部工具做验证,没把“工具使用本身”纳入课程设计与策略学习的核心环节。
- Agent0 的特点:
- 工具集成是双向的:出题也考虑工具、解题更依赖工具;
- 通过奖励设计,让“需要多步推理 + 工具调用”的题自然占据课程主流。
- 相比一般工具强化学习(TIR)
- 许多工具强化学习工作依赖人工构造的数据集或任务环境;
- Agent0 则强调“从零外部数据”出发,通过自进化生成所有训练信号;
- 这使它更像一种“面向未知环境的大规模自学机制”,而不仅是“在固定任务上调优工具使用策略”。
七、总结与可能的局限
- 创新点概括
- 把“出题”和“解题”分成两个角色,且都可用工具、多轮推理;
- 用 Executor 的“不确定性 + 工具使用频率 + 多样性”设计出题奖励,真正围绕“能力边界”构建课程;
- 在伪标签、噪声极大的自监督场景下,提出 ADPO 这种考虑歧义度的强化学习优化策略;
- 在多数学和通用推理基准上取得了比现有多种“零数据自进化”方法更好的成绩。
- 可能的局限与思考
- 目前主要的工具是代码解释器,适合数学、逻辑和程序式任务,扩展到更开放的真实环境(网页、API、文件系统等)时依然需要工程设计;
- 多轮采样、自一致性估计、代码执行等都带来很大的算力开销,自进化过程本身“很贵”;
- 伪标签机制再怎么做歧义调整,仍然有可能放大模型自身的偏差,需要和安全性、对齐机制一起考虑;
- 课程质量高度依赖于奖励设计:如果不确定度、工具奖励、多样性的平衡设置不当,可能会导致“走偏”的课程。
总体来说,这篇论文展示了一条很有吸引力的路线:不依赖外部标注数据,只靠双智能体 + 工具 + 强化学习,就能让一个基础模型在推理能力上持续“自我升级”,而且这些能力还能泛化到更一般的推理任务上。
Agent0 on GitHub: https://github.com/aiming-lab/Agent0