XSKILL 论文精读:让多模态 Agent 从经验和技能中持续学习

多模态 24 分钟
XSKILL 论文精读:让多模态 Agent 从经验和技能中持续学习

XSKILL 论文精读:让多模态 Agent 从经验和技能中持续学习

总结

这篇论文讨论的是一个很实用的问题:现在的多模态 Agent 已经能看图、写代码、做网页搜索、做图片搜索、访问网页,但它们很多时候仍然像“每道题都从零开始做”。它们可以调用工具,却不一定会高效调用;它们可以执行多步推理,却不一定能把以前成功或失败的经验迁移到新任务。

论文提出的 XSKILL 想解决这个问题:不更新模型参数,只从过去的执行轨迹中抽取可复用的经验和技能,把它们存在外部知识库里,在新任务推理时再检索、改写、注入给 Agent。

这里有两个关键词:

  1. Experience(经验):偏动作级,告诉 Agent 在某种视觉/执行上下文下应该怎么选工具、怎么纠错、怎么避免走弯路。
  2. Skill(技能):偏任务级,是更结构化的工作流和工具模板,告诉 Agent 一类任务大致应该按什么步骤做。

可以把二者理解成:

  • Experience 像“踩坑记录”和“临场提醒”:如果图片倒置,先旋转;如果目标太小,先裁剪放大;如果原图搜索不准,先裁 ROI 再搜。
  • Skill 像“标准操作流程”:对于未知物体识别任务,先定位目标,再裁剪,再反向图片搜索,再访问网页确认。

论文的核心贡献是把这两种知识拆开建模,又让它们互相配合。它不是让模型靠参数微调记住过去,而是让 Agent 维护一个外部知识库:

  • Skill Library:Markdown 风格的结构化技能文档;
  • Experience Bank:JSON 风格的经验条目,每条经验通常是条件 + 动作。

上图给了一个很直观的例子。问题是识别图片角落两个吉祥物的原型。没有 XSKILL 时,Agent 可能直接看原图、直接搜索原图,然后失败;有 XSKILL 时,它能回忆到以前的经验:图片可能需要转正,小目标最好先裁剪,未知物体可以裁剪后再图片搜索。于是它形成了“旋转 -> 裁剪 -> 图片搜索 -> 访问网页确认”的执行链,最后答对。

一句话概括这篇论文:

XSKILL 把多模态 Agent 的历史轨迹变成可检索、可合并、可迁移的经验和技能,让 Agent 在不微调模型的情况下持续变聪明。

引言

近年来,多模态大语言模型(MLLM)让 Agent 从“被动看图回答问题”变成了“主动解决问题”的系统。一个多模态 Agent 可以:

  • 看图理解视觉内容;
  • 调 Python 代码裁剪、旋转、增强图片;
  • 用网页搜索补充外部知识;
  • 用图片搜索识别未知物体;
  • 访问网页并抽取信息。

但论文认为,当前多模态 Agent 仍有两个关键瓶颈。

工具使用效率低

有些任务很简单,Agent 却绕很多步;有些任务很复杂,Agent 又探索不够深。比如图片里文字太小,正确做法应该是先裁剪放大再 OCR,但 Agent 可能直接肉眼猜;或者图片方向不对,Agent 没有先旋转,后面所有判断都偏了。

这类问题需要 Skill 来缓解。Skill 提供可复用的工作流和工具模板,让 Agent 知道一类任务应该怎么拆、怎么执行。

工具编排不灵活

很多 Agent 系统是单路径执行,遇到不同任务时不太会组合工具。例如它知道可以图片搜索,也知道可以裁剪,但不知道“先裁剪目标区域,再用裁剪图搜索”比“直接搜索整张图”更可靠。

这类问题需要 Experience 来缓解。Experience 提供更局部、更战术的决策知识,帮助 Agent 根据当前视觉上下文选择合适动作。

为什么不能只保存文本轨迹?

现有很多经验学习方法主要从文本日志中提取知识,比如模型说了什么、调用了什么工具、返回了什么结果。但多模态任务里,关键决策经常来自视觉观察:

  • 图像是不是倒置;
  • 目标是不是太小;
  • 背景是不是太暗;
  • OCR 区域是不是被遮挡;
  • 搜索结果里的图是否和原图同一个物体。

如果经验提取和检索只看文本轨迹,不看图像状态,就很容易抽到“看起来对、实际不适用”的经验。XSKILL 的一个关键点就是:经验和技能的抽取、检索、改写,都要视觉接地(visually grounded)。

方法概览

XSKILL 的整体流程分两阶段:

  1. Phase I:Accumulation(积累阶段)
    在训练任务上让 Agent 多次尝试,得到多条推理轨迹。系统从这些轨迹里抽取技能和经验,并合并到外部知识库。

  2. Phase II:Solving(推理阶段)
    面对新任务时,系统先分解任务,再检索相关经验和技能,然后根据当前图片和问题进行改写,最后注入到 Agent prompt 中辅助执行。

论文里有两个模型角色:

  • MLLM_exec:真正执行任务的模型,负责推理和调用工具;
  • MLLM_kb:管理知识库的模型,负责总结轨迹、抽取经验、合并技能、检索改写。

这个设计有一个好处:知识管理和任务执行可以解耦。比如可以用强模型积累知识,再把知识迁移给另一个执行模型使用。这也是论文后面做 cross-model transfer 的基础。

问题定义

论文把一个多模态工具使用任务表示为:

$$ T = (q, I) $$

其中:

  • $q$ 是自然语言问题;
  • $I = {I_1, I_2, ..., I_m}$ 是相关图片集合;
  • Agent 拥有工具集合 $F = {f_1, f_2, ..., f_n}$,比如代码解释器、网页搜索、图片搜索、网页访问等;
  • Agent 每一步根据当前状态选择一个工具动作,形成轨迹 $\tau$;
  • 最终输出答案 $\hat{y}$。

XSKILL 的目标不是更新模型参数,而是构建外部知识库:

$$ KB = (K, E) $$

其中:

  • $K$ 是技能库(Skill Library);
  • $E$ 是经验库(Experience Bank)。

最终目标是让 Agent 在给定任务和知识库时更容易生成正确答案:

$$ \max_{KB} P[\hat{y}=y^* \mid T, KB] $$

换句话说,XSKILL 学的不是模型参数,而是外部可读、可检索、可编辑的知识。

Skill 与 Experience

Skill:任务级技能

论文定义的 Skill 是一个任务级指导文档,形式上可以写成:

$$ k = (M, W, P) $$

其中:

  • $M$ 是元信息,比如技能名、描述、版本;
  • $W$ 是 workflow,也就是操作步骤;
  • $P$ 是 tool templates,也就是可复用工具模板。

Skill 通常存成 Markdown 文档。它更像 SOP(Standard Operating Procedure,标准操作流程),用于指导一类任务。

例如“识别图片中的未知小物体”可以形成这样的技能:

1. 先判断图片方向是否正常;
2. 如果目标太小,先裁剪目标区域;
3. 对裁剪图进行图片搜索;
4. 打开搜索结果网页,寻找物体名称或来源;
5. 回到原问题,给出简洁答案。

Skill 的优点是结构清楚,能减少工具调用错误、语法错误和无效探索。它解决的是“这一类任务大体应该怎么做”的问题。

Experience:动作级经验

Experience 是动作级、上下文敏感的经验,形式上可以写成:

$$ e = (c, a, v_e) $$

其中:

  • $c$ 是触发条件,比如“图片倒置”“目标很小”“搜索无结果”;
  • $a$ 是推荐动作,比如“先旋转 180 度”“裁剪 ROI 后再搜索”;
  • $v_e$ 是语义向量,用于检索。

Experience 通常更短,像这样:

{
  "condition": "当目标物体很小且位于图片角落时",
  "action": "先裁剪目标区域并放大,再进行识别或图片搜索"
}

Experience 的优点是灵活,能处理具体任务里的临场选择。它解决的是“当前这个视觉状态下下一步怎么做”的问题。

为什么要同时有二者?

只用 Skill,Agent 有了流程,但可能不够灵活;只用 Experience,Agent 有了很多小提醒,但缺少整体工作流。XSKILL 的假设是:

  • Skill 提供稳定结构,减少低级工具错误;
  • Experience 提供局部策略,提高工具选择灵活性;
  • 两者结合,才能同时提升执行稳定性和任务适应性。

实验也支持这一点:去掉 Experience 或去掉 Skill 都会导致性能下降。

Phase I:经验和技能积累

积累阶段输入一批训练任务。对每个任务,Agent 会做多次 rollout,也就是多条独立尝试路径。

设第 $i$ 个训练任务为:

$$ T_i = (q_i, I_i) $$

执行模型生成 $N$ 条轨迹:

$$ R_i = {\tau_i^{(1)}, ..., \tau_i^{(N)}} $$

XSKILL 不只看一次成功或失败,而是比较多次尝试,找出哪些行为真正导致成功,哪些行为导致失败。

Rollout Summary:视觉接地的轨迹总结

MLLM_kb 会读取:

  • 多条执行轨迹;
  • 当前任务图片;
  • 问题;
  • 标准答案;
  • 当时注入过的技能。

然后输出:

  • 轨迹总结 $SR_i$;
  • 新的技能片段 $\Delta K_i$。

这里最重要的是“视觉接地”。系统不是只总结“调用了 image.crop”,而是总结为什么调用它:

  • 因为目标在角落很小,所以裁剪;
  • 因为图片上下颠倒,所以旋转;
  • 因为图像太暗,所以增强亮度;
  • 因为 OCR 失败,所以换区域或放大。

这样抽出来的知识才不是空泛日志,而是和视觉状态绑定的可复用经验。

Cross-Rollout Critique:跨轨迹批判

多次 rollout 里有成功也有失败。XSKILL 会比较它们,找因果线索。

比如:

  • 成功轨迹都先裁剪目标区域,失败轨迹都直接搜索整图;
  • 成功轨迹先旋转图片,失败轨迹忽略图片方向;
  • 成功轨迹访问网页验证来源,失败轨迹只看搜索结果标题。

系统据此生成经验更新:

  • add:加入一条新经验;
  • modify:修改已有经验,让它更准确、更泛化。

这一步的意义是:经验不是从单条轨迹硬抄,而是从成功和失败的对照中归纳出来。

Knowledge Consolidation:知识合并

如果每个任务都加一堆经验,知识库很快会膨胀、重复、变脏。所以 XSKILL 做了分层合并。

对 Experience:

  • 新经验加入前,先和已有经验算相似度;
  • 如果相似度超过阈值,就交给 MLLM_kb 合并;
  • 如果经验库超过最大容量,就删除低质量、重复、不够可执行的经验。

对 Skill:

  • 新技能片段会合并进全局 Skill 文档;
  • 如果文档太长,就触发 refinement;
  • 系统会删除过于具体的案例,把实体替换成占位符,让技能更泛化。

这一步对应论文里说的 hierarchical consolidation:把临时轨迹洞察变成持久、可复用、可迁移的知识。

Phase II:新任务推理

推理阶段面对一个新任务,XSKILL 不会把整个知识库都塞进 prompt,而是做三步:任务分解、经验检索、上下文改写。

任务分解检索

直接用原问题检索经验可能效果不好,因为一个复杂任务常常包含多个技术子问题。

比如一个问题可能同时需要:

  • 处理暗图;
  • 裁剪小目标;
  • OCR;
  • 网页搜索;
  • 数值计算。

XSKILL 先让 MLLM_kb 把任务分解成若干子任务:

$$ G = {g_1, ..., g_{n_g}} $$

再对每个子任务分别检索 top-k 经验:

$$ E_{ret} = \bigcup_{g\in G} Top\text{-}k({e\in E \mid cos(v_g, v_e)>\tau_{min}}) $$

这样可以避免只检索到一种经验,而漏掉其他关键技术需求。

Experience Rewrite:经验改写

检索到的经验通常是通用的,不能直接照搬。XSKILL 会根据当前图片和问题,把经验改写成当前任务可用的形式。

例如通用经验是:

如果图像方向异常,先规范化方向再识别。

当前任务图片明显上下颠倒,那么改写后可能是:

当前图片倒置,先用 image.rotate(180) 转正,再裁剪角落中的目标物体。

这一步很关键,因为它把“抽象经验”变成“当前任务操作建议”。

Skill Adaptation:技能适配

全局 Skill 文档可能很长,也可能包含当前任务不需要的流程。XSKILL 会根据当前图像和问题剪裁 Skill:

  • 删除无关章节;
  • 保留相关 workflow;
  • 把工具模板改成当前任务适用的参数形式;
  • 把重写后的经验整合进技能步骤。

最终得到:

$$ K_{adapted} = MLLM_{kb}(K, E_{rewritten}, q, I) $$

然后把 adapted skill 和 rewritten experiences 注入到 Agent 的系统提示中,让执行模型参考。

论文强调,这种注入是 non-prescriptive 的,也就是不给 Agent 强制脚本,而是提供参考。Agent 仍然可以根据实际观察做调整。

实验设置

论文在五个 benchmark 上评估 XSKILL,覆盖三类任务。

视觉 Agent 工具使用

  1. VisualToolBench
    关注混合工具视觉推理,要求模型处理视觉输入并调用工具做图像分析。

  2. TIR-Bench
    Tool-Integrated Reasoning benchmark,包含 referring expression、迷宫、仪器识别、OCR、视觉对比等任务。

多模态搜索

  1. MMSearch-Plus
    需要结合网页搜索、图片搜索和视觉推理。

  2. MMBrowseComp
    多模态网页浏览理解任务,论文用它做 OOD 测试,也就是不在目标数据上积累经验,直接迁移过去。

综合任务

  1. AgentVista
    更难的综合 benchmark,结合工具使用和复杂搜索。

训练/测试划分上,多数数据集随机抽 100 个任务用于知识积累,其余用于测试;MMBrowseComp 因为样本少,全部用于测试。

工具集合

论文给 Agent 提供四类工具:

  • Code:执行 Python,用于图像处理、计算和数据分析;
  • Web Search:文本网页搜索;
  • Image Search:反向图片搜索;
  • Visit:访问具体网页并抽取内容。

不同 benchmark 可用工具不同。例如 TIR-Bench 只用 Code,MMSearch-Plus 和 AgentVista 则使用四类工具。

Baseline

论文比较了几类方法:

  1. No Tools:没有工具;
  2. w/ Tools:有工具,但没有经验和技能学习;
  3. AWM:Agent Workflow Memory,从过去轨迹中抽工作流;
  4. DC:Dynamic Cheat-Sheet,维护动态策略和代码片段;
  5. Agent-KB:构建结构化经验知识库并检索;
  6. XSKILL:本文方法。

评价指标

论文主要用 Success Rate(SR)。每个任务跑 $N=4$ 次 rollout,并报告两个指标:

  • Average@4:4 次 rollout 的平均成功率,衡量稳定性;
  • Pass@4:4 次里至少成功一次的任务比例,衡量上限能力。

Average@4 更看重每次是否稳定答对,Pass@4 更像“多试几次有没有希望答对”。

主实验结果

主结果表明,XSKILL 在不同模型和 benchmark 上整体都优于工具基线和已有经验学习方法。

几个关键信息:

  1. 相比只给工具的 baseline,XSKILL 在不同模型上的 Average@4 平均提升约 2.58 到 6.71 个点
  2. 在 Gemini-3-Flash + TIR-Bench 上,XSKILL 的 Average@4 达到 47.75%,比最强 baseline Agent-KB 高 11.13 个点
  3. GPT-5-mini 和 o4-mini 并没有自己积累经验,而是使用 Gemini-3-Flash 积累的知识,仍然获得提升。这说明 XSKILL 的外部知识具有一定跨模型迁移能力。
  4. XSKILL 同时提升 Average@4 和 Pass@4,说明它不只是偶尔多答对一些任务,而是提升了执行稳定性和潜在上限。

这组结果支持论文的主张:工具本身不够,Agent 还需要从历史轨迹中学会如何用工具。

消融实验

论文在 VisualToolBench 上用 Gemini-2.5-Pro 做消融。

完整 XSKILL 的结果是:

  • Average@4:30.49;
  • Pass@4:46.73。

去掉不同组件后:

  • 去掉 Experience,Average@4 下降 3.04;
  • 去掉 Skill,Average@4 下降 3.85;
  • 去掉 Experience Manager,下降 4.09;
  • 去掉 Skill Manager,下降 3.62;
  • 去掉任务分解,下降 1.28;
  • 去掉任务适配,下降 1.52。

这说明两个点:

  1. Experience 和 Skill 都有用,不能只保留其中一个;
  2. 积累阶段的知识质量比推理阶段的检索技巧更关键,但后者也有贡献。

换句话说,XSKILL 的性能主要来自“知识库本身变好了”,而不只是检索 prompt 写得更漂亮。

技能和经验分别带来什么?

Skill 减少工具使用错误

论文分析了工具调用错误。结果显示,从 Experience Only 到 Skill Only,整体错误率从 29.9% 降到 15.3%。其中:

  • 语法错误从 114 次降到 71 次;
  • 工具名错误从 16 次降到 2 次;
  • runtime error 也明显下降。

这说明 Skill 的主要作用是提供结构化工具模板和 workflow,减少低级执行错误,让 Agent 把有限轮数用在真正解决问题上,而不是反复修工具调用。

Experience 让工具选择更灵活

论文还分析了工具使用分布。Experience 会明显改变 Agent 的工具选择。

例如在 VisualToolBench 上:

  • w/ Tools 的代码工具使用比例是 66.63%;
  • Exp Only 提升到 74.49%;
  • Skill & Exp 提升到 76.97%。

在 MMSearch-Plus 上:

  • w/ Tools 的图片搜索比例是 15.43%;
  • Exp Only 提升到 24.63%;
  • Skill & Exp 保持在 23.89%。

这说明 Experience 能让 Agent 根据任务类型更主动地选工具:视觉推理任务更偏向代码处理,多模态搜索任务更愿意使用图片搜索,而不是只靠文本搜索。

Rollout 数量的影响

论文改变积累阶段的 rollout 数量 $N$,发现随着 rollout 增加,Average@4 和 Pass@4 都上升。

原因很直观:多次尝试提供了更多轨迹差异。系统可以比较成功和失败路径,从中抽出更可靠的经验和更泛化的技能。

这也说明 XSKILL 不是简单记录成功案例,而是利用“多路径对照”来做知识归纳。

跨任务迁移

论文还做了 zero-shot cross-task transfer:

  • 用 VisualToolBench 上积累的知识去做 TIR-Bench;
  • 用 MMSearch-Plus 上积累的知识去做 MMBrowseComp。

结果显示,XSKILL 在 OOD 设置下仍然超过 baseline。论文认为这来自两个机制:

  1. 知识合并 删除了过于具体的案例细节,保留通用原则;
  2. 任务适配 会把通用经验重新改写成当前任务可用的形式。

这很重要,因为如果外部知识只能在同一个数据集上用,那价值有限;能跨任务迁移,说明它确实学到了一些通用的工具使用规律。

知识库长什么样?

附录给了技能和经验的例子。可以看到,Skill 更像结构化文档,会包含代码模板、注意事项和工作流;Experience 更像短条目,每条总结一个具体但可迁移的策略。

例如经验中会出现类似规则:

  • 复杂结构化问题中,识别不影响最终答案的区域,避免无关变量干扰;
  • 体育统计任务中,要区分视觉上下文和统计周期;
  • 如果要确认角色是否缺失,需要增强暗部或阴影区域后再判断;
  • 如果图像可能镜像,先根据坐标轴或文字方向确认时间顺序;
  • 旋转或镜像布局时,要重新校验坐标系统和文本流。

这些内容不像传统 prompt 那样一次性手写,而是从历史轨迹中不断积累、合并、改写出来。

相关工作

论文把相关工作大致放在三个方向。

多模态 Agentic Reasoning

现代多模态 Agent 不再只是回答图像问题,而是会主动操作视觉数据,比如放大、裁剪、增强、执行代码、搜索网页。问题在于很多系统仍然是 stateless 的,每次任务之间没有长期知识积累。

XSKILL 试图补上这一点:让 Agent 从过去的视觉-工具交互中学习。

从经验中学习

已有方法如 AWM、Dynamic Cheat-Sheet、Agent-KB 都在研究如何从历史轨迹中提取经验。但论文认为,它们大多偏文本轨迹,对多模态任务中“视觉状态导致动作选择”这一点建模不足。

XSKILL 的区别是把经验提取、经验检索和经验改写都和视觉观察绑定。

Skills for Agents

Anthropic 等工作已经提出 Agent skills 的概念,即把专门任务能力写成可复用技能。XSKILL 的不同点是:

  • 它不是只靠人工写 Skill;
  • 它从多条轨迹中自动抽取 Skill;
  • 它同时维护 action-level Experience;
  • 它会在新任务中根据图片上下文适配 Skill。

论文亮点

1. 把知识拆成 Skill 和 Experience

这个拆分很清楚,也符合 Agent 任务的实际需求。Skill 管流程,Experience 管局部策略。前者提升稳定性,后者提升灵活性。

2. 强调视觉接地

多模态任务不能只看文本日志。XSKILL 让知识抽取和知识适配都访问任务图片,这个设计抓住了多模态 Agent 的关键。

3. 不需要参数更新

所有学习都发生在外部知识库里,因此更容易部署、审计、编辑和跨模型迁移。对于闭源大模型或不方便微调的模型,这点很实用。

4. 用多路径对照提炼经验

只看成功轨迹可能会学到偶然相关的模式;同时比较成功和失败轨迹,更容易识别真正有因果意义的操作。

局限

1. 仍然依赖强模型做知识管理

XSKILL 需要 MLLM_kb 做总结、批判、合并、改写。如果知识管理模型不够强,抽取出的技能和经验可能质量不稳定。

2. 当前实验主要是单轮积累再测试

论文说框架支持持续迭代,但实验主要展示的是一次 accumulation-then-test cycle。真正长期、多轮、开放环境中的知识漂移和知识污染问题还需要进一步验证。

3. 外部知识库可能积累偏见或错误

如果过去轨迹中有错误经验,或者某个模型积累了偏见知识,这些知识可能通过外部库迁移给其他模型。论文在 Impact Statement 中也提到,需要人工审核、偏见审计和访问控制。

4. 知识注入会占用上下文

虽然 XSKILL 会检索和改写,但 adapted skill 和 rewritten experiences 仍然要放进 prompt。长任务或大知识库下,如何控制上下文开销仍然重要。

和普通 RAG 的区别

XSKILL 很像 RAG,但不完全是普通 RAG。

普通 RAG 通常检索的是外部文档或事实知识,而 XSKILL 检索的是 Agent 自己过去做任务时归纳出的操作知识。

更具体地说:

  • 普通 RAG 回答“这个问题相关资料是什么”;
  • XSKILL 回答“遇到这种视觉任务时应该怎么操作工具”。

所以 XSKILL 更像是 procedural RAG(过程性知识检索)agent memory for tool use(面向工具使用的 Agent 记忆)

结论

XSKILL 的核心思想很直接:多模态 Agent 不能每次都从零开始,它应该把过去的成功和失败转化为可复用知识。

论文把这种知识分成两层:

  • Skill:结构化任务流程,让 Agent 更稳;
  • Experience:上下文敏感操作建议,让 Agent 更灵活。

通过视觉接地的轨迹总结、跨 rollout 批判、分层知识合并、任务分解检索和上下文改写,XSKILL 在不更新模型参数的情况下,让多模态 Agent 持续提升工具使用效率和工具编排能力。

这篇论文的价值不只是提出一个 benchmark 上有效的方法,更重要的是给了一个很清晰的方向:Agent 的持续学习不一定只发生在模型参数里,也可以发生在外部、可读、可编辑、可迁移的经验和技能库里。