把任务树重组成能力树:多模态智能体递归自进化框架

ppylox
·10/30/2026·0 阅读

一句话结论

多模态智能体自进化卡在两处:异构且可验证的环境造起来太贵,人工迭代 Harness 的速度追不上任务多样性的增长。Trinity 的做法是不再按「表面类别」(模态、题型)组织任务,而按「底层能力需求」重组任务树,让世界生成和 Harness 进化互为输入,最终在 28 个训练基准上把平均表现提升 34 分、18 个未见基准上提升 26 分,其中包含两项真实具身任务。论文见 arXiv:2610.36077。

方法要点

核心观察:模态和表面形式不同的任务,可以共享同一套底层能力需求。既然如此,就没有必要为每个任务单独造环境、单独调 Harness —— 应该先在能力层面把任务归并,再让环境生成和模块进化在归并后的节点上收敛。

关键设计:

  1. 能力树(Evolver)。使用已经验证成功的执行轨迹,把原始任务树从「表面类别」的划分基准切换到「共享需求」,重组成分层能力树。这一步是整个框架的支点:树的结构错了,后面的仿真世界和模块继承都会跑偏。
  2. Capability-Driven Real2Sim2Real(Creator)。对同一节点下的异构任务,Creator 把它们的共性需求抽象成简化、可验证的仿真世界,供能力学习;训练完再回到原始任务上评测,测的是迁移效果,不是仿真分数。
  3. Harness 树(Explorer)。Explorer 沿能力树逐层进化可复用能力模块,采用选择性继承,在固定拓扑内让已验证的更新跨迭代累积 —— 也就是拓扑一旦定下就不改,只让节点上的模块越迭代越强。
  4. 能力感知路由。进化出的 Harness 各自擅长不同能力,因此配一个 Capability-Aware Harness Router,只用公开的任务信息(不看标注、不看答案)从树里挑兼容的模块配置。

伪代码(按摘要机制重组,非原文实现):

# The Trinity 一轮迭代
cap_tree = evolver.reorganize(task_tree, verified_traces)   # 任务树 -> 能力树
harness_tree = seed(cap_tree)

for node in cap_tree.walk_top_down():
    sim_world = creator.abstract(node.tasks)                # 共性需求 -> 可验证仿真世界
    module = explorer.evolve(
        node,
        sim_world,
        inherit=harness_tree[node.parent].module,           # 选择性继承
    )
    harness_tree[node] = module                             # 固定拓扑内累积更新
    module.score = eval_on_original(module, node.tasks)     # Real2Sim2Real 的 Real 端

router = CapabilityAwareRouter(harness_tree, use_public_task_info_only=True)
config = argmax(router.compatible(public_info), key=lambda c: c.score)

注意伪代码里那行 eval_on_original:仿真世界里学得再好,只有回到原任务上不掉分,这次更新才算「已验证」,才能写回 Harness 树。这条闸门是整套递归自进化不至于自嗨的前提。

关键数字

数据集 指标 对比基线 提升幅度
28 个训练基准 平均表现 未在摘要中点名,需查正文表格 +34 分
18 个未见基准 平均表现 同上 +26 分
两项真实具身任务 含在上述评测内 同上 未见单独拆分数字

需要说清楚的地方:论文摘要只给了「平均提升」这一个口径,没有给分任务明细、方差和失败率;「34 分」是均值,长尾任务的表现可能被均值掩掉。训练集与未见集之间从 34 分掉到 26 分,这个衰减幅度本身值得在选型时盯一眼 —— 泛化是有的,但没有满格迁移。

局限与前提

  • 固定拓扑是硬约束。摘要明确说更新是在固定拓扑内累积,意味着结构本身不自演化。能力树一旦切分错了,后面只能靠模块补丁,不能改树。这省了搜索成本,也封死了结构层面的上限。
  • 仿真世界的保真度就是天花板。Creator 做的是「简化」抽象,简化必然丢约束;丢了哪个约束、影响多大,摘要没有给消融。如果抽象掉了任务的关键难点,模块在 Real 端的迁移会直接崩,而这条链路只有一道评测闸门兜着。
  • 环境构建成本没有被消除。作者把「构造异构可验证环境代价高」列为瓶颈之一,Trinity 是用抽象仿真去缓解,但 Creator 本身的构建开销、以及每轮都要在原任务上回归的评测开销,摘要里没有任何成本数字。
  • 路由依赖公开任务信息的质量。线上任务描述残缺、带噪声或者刻意误导时,模块选择会退化成一个随机选择器。
  • 具身任务样本太少。「两项真实具身任务」不足以支撑泛化结论,只能算方向性证据。

作者自己承认的不足集中在两个瓶颈上;而失败案例清单、单任务方差、算力与时间成本,在这份摘要层面都拿不到。

能不能用

开源情况:信息源中未见代码仓库、权重或数据集的发布链接,arXiv 页面只提供 PDF、HTML 实验版与 TeX 源码,Hugging Face 相关链接也没有指向本项目的产物。也就是说当前只能读方法,不能拉代码跑。

本地复现需要什么:

  • 一个能批量执行 28 个训练基准的沙箱,且每个任务都要有可自动判定的成功信号 —— 没有验证器,Evolver 的「已验证轨迹」这一环就断了;
  • 可回滚的 Harness 版本管理,因为写回是累积式的,某个节点退化必须能退回上一版;
  • 按能力树节点切分的模块缓存与索引,否则路由每次都要重新装配;
  • 真实成本不在模型推理,在评测次数:每轮迭代都要在原任务上全量回归,这一项会主导你的账单。

值不值得用:

  • 值得:任务集异构但能力重叠、并且能自动判对错。这类场景下把任务重组成能力树,能省掉大量「一个任务造一个环境」的重复投入。
  • 不值得:任务无法自动验证(只能人工打分),或者任务分布单一 —— 后者会让能力树退化成一条链,整个框架的收益趋近于零。

上手建议:先拿少量共享能力的任务跑通最小链路 —— 任务树 → 能力树 → 抽象仿真世界 → 模块选择性继承 → 原任务回归,确认这套闭环在你的验证器上不塌,再决定要不要把规模铺到论文那种基准数量级。

参考来源

相关文章

评论 (0)

暂无评论,来写第一条吧