<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Tool Use on LeoDreamer</title>
        <link>https://LeoDreamer2004.github.io/tags/tool-use/</link>
        <description>Recent content in Tool Use on LeoDreamer</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Tue, 16 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://LeoDreamer2004.github.io/tags/tool-use/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>论文阅读 - 智能体工具调用</title>
            <link>https://LeoDreamer2004.github.io/p/paper-reading/agent-tool-use/</link>
            <pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate>
            <guid>https://LeoDreamer2004.github.io/p/paper-reading/agent-tool-use/</guid>
            <description>&lt;p&gt;在 &lt;a class=&#34;link&#34; href=&#34;../agentic-rl-overview&#34; &gt;智能体强化学习总览&lt;/a&gt; 和 &lt;a class=&#34;link&#34; href=&#34;../gui-agentic-rl&#34; &gt;GUI 智能体&lt;/a&gt; 里, 我们已经反复看到一个现象: 现在的多模态智能体 (Multimodal Agent) 不缺工具, 缺的是稳定地选择、组合和复用工具的能力.&lt;/p&gt;&#xA;&lt;h2 id=&#34;xskill&#34;&gt;XSkill&#xA;&lt;/h2&gt;&lt;p&gt;&lt;img alt=&#34;XSkill Teaser&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;611px&#34; data-flex-grow=&#34;254&#34; height=&#34;311&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://arxiv.org/html/2603.12056v2/x1.png&#34; width=&#34;793&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;论文 &lt;a class=&#34;link cite-XSkill&#34;&gt;[&lt;span class=&#34;material-index&#34;&gt;&lt;/span&gt;]&#xA;    &lt;span class=&#34;material-name&#34;&gt;Unknown-material&lt;/span&gt; &#xA;&lt;/a&gt; 不更新模型参数, 而是从历史多模态工具调用轨迹中提炼两类外部知识:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;经验 (Experience): 面向局部决策的条件-动作建议&lt;/li&gt;&#xA;&lt;li&gt;技能 (Skill): 面向任务流程的结构化工作流和工具模板&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;论文把当前多模态智能体的问题概括为两点:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;工具使用低效. 模型可能对简单问题过度调用工具, 对复杂问题又探索不够深.&lt;/li&gt;&#xA;&lt;li&gt;工具编排僵硬. 很多系统偏向单路径执行, 缺少跨任务迁移的工具组合模式.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;XSkill 认为这两个问题需要两种粒度不同的知识来解决. 技能负责高层结构, 经验负责局部策略.&lt;/p&gt;&#xA;&lt;h3 id=&#34;知识表示&#34;&gt;知识表示&#xA;&lt;/h3&gt;&lt;p&gt;论文把技能库和经验库分开维护:&lt;/p&gt;&#xA;$$&#xA;KB=(K,E)&#xA;$$&lt;p&gt;其中 $K$ 是 Markdown 形式的 Skill Library, $E$ 是 JSON 形式的 Experience Bank.&lt;/p&gt;&#xA;&lt;p&gt;技能定义为:&lt;/p&gt;&#xA;$$&#xA;k=(M,W,P) \in K&#xA;$$&lt;p&gt;$M$ 是元信息, 包括技能名称、描述和版本; $W$ 是工作流序列; $P$ 是可复用工具模板. 比如一个视觉识别技能里, $W$ 可能包含“检查朝向、裁剪目标、增强图像、搜索图片来源”的流程, $P$ 则包含 Python 图像旋转、裁剪、放大的代码模板.&lt;/p&gt;&#xA;&lt;p&gt;经验定义为:&lt;/p&gt;&#xA;$$&#xA;e=(c,a,v_e) \in E&#xA;$$&lt;p&gt;$c$ 是触发条件, $a$ 是建议动作, $v_e$ 是用于检索的语义向量. 论文限制单条经验的文本长度, 使它更像短的策略性 prompt, 而非完整轨迹复述.&lt;/p&gt;&#xA;&lt;h3 id=&#34;问题建模&#34;&gt;问题建模&#xA;&lt;/h3&gt;&lt;p&gt;论文把多模态工具调用任务建模成 POMDP. 一个任务为:&lt;/p&gt;&#xA;$$&#xA;T=(q,I)&#xA;$$&lt;p&gt;其中 $q$ 是自然语言问题, $I=\{I_1,I_2,\ldots,I_m\}$ 是相关图像集合. 工具集合为:&lt;/p&gt;&#xA;$$&#xA;F=\{f_1,f_2,\ldots,f_n\}&#xA;$$&lt;p&gt;包括代码执行、网页搜索、图片搜索、网页访问等. 每一步 agent 根据当前状态和观察选择工具动作, 形成轨迹:&lt;/p&gt;&#xA;$$&#xA;\tau=[(s_0,a_0,o_0),\ldots,(s_T,a_T,o_T)]&#xA;$$&lt;p&gt;最终构造外部知识库:&lt;/p&gt;&#xA;$$&#xA;\max_{KB} P[\hat{y}=y^\ast \mid T, KB]&#xA;$$&lt;h3 id=&#34;整体框架&#34;&gt;整体框架&#xA;&lt;/h3&gt;&lt;p&gt;XSkill 分成两个阶段: 积累 (Accumulation) 和求解 (Inference). 论文中还区分了两个模型角色:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;$\mathrm{MLLM}_{exec}$: 负责实际执行工具调用和回答问题.&lt;/li&gt;&#xA;&lt;li&gt;$\mathrm{MLLM}_{kb}$: 负责总结轨迹、抽取经验、合并技能、重写检索结果.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;math-block math-algo&#34;&gt;&#xA;    &lt;p class=&#34;math-title&#34;&gt;算法&lt;span class=&#34;math-subtitle&#34;&gt;XSkill: 双流知识循环&lt;/span&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong class=&#34;algo-input&#34;&gt;输入 &amp;gt; &lt;/strong&gt;&#xA;训练任务集合 $\mathcal{D}_{train}$, 测试任务 $T=(q,I)$, 工具集合 $F$, 执行模型 $\mathrm{MLLM}_{exec}$, 知识管理模型 $\mathrm{MLLM}_{kb}$, 技能库 $K$, 经验库 $E$.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong class=&#34;algo-output&#34;&gt;输出 &amp;gt; &lt;/strong&gt;&#xA;最终答案 $\hat{y}$, 更新后的知识库 $KB=(K,E)$.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;对训练任务 $T_i=(q_i,I_i)$ 执行 $N$ 条独立 rollout:&#xA;&#xA;$$&#xA;   R_i=\{\tau_i^{(1)},\ldots,\tau_i^{(N)}\}&#xA;   $$&lt;/li&gt;&#xA;&lt;li&gt;用 $\mathrm{MLLM}_{kb}$ 对轨迹、图像、问题和标准答案做视觉锚定总结:&#xA;&#xA;$$&#xA;   S_{R_i},\Delta K_i=\mathrm{MLLM}_{kb}(R_i,I_i,q_i,y_i^\ast,K_{adapted})&#xA;   $$&#xA;其中 $S_{R_i}$ 记录关键决策点、工具模式和失败原因, $\Delta K_i$ 是从成功轨迹中抽出的技能片段.&lt;/li&gt;&#xA;&lt;li&gt;做跨 rollout 批判 (Cross-Rollout Critique), 对成功和失败轨迹进行对比:&#xA;&#xA;$$&#xA;   \Delta E_i=\mathrm{MLLM}_{kb}(S_{R_i},y_i^\ast,E_{ret})&#xA;   $$&lt;/li&gt;&#xA;&lt;li&gt;将 $\Delta E_i$ 中的经验加入 Experience Bank, 对相似经验按向量相似度合并, 并删除低质量或过度具体的条目.&lt;/li&gt;&#xA;&lt;li&gt;将 $\Delta K_i$ 合并到 Skill Library, 对冗长技能做压缩、去重和变量化.&lt;/li&gt;&#xA;&lt;li&gt;对测试任务 $T=(q,I)$, 先把问题分解成若干抽象子任务:&#xA;&#xA;$$&#xA;   G=\{g_1,\ldots,g_{n_g}\}&#xA;   $$&lt;/li&gt;&#xA;&lt;li&gt;对每个子任务检索相关经验:&#xA;&#xA;$$&#xA;   E_{ret}=\bigcup_{g\in G}\mathrm{Top}\text{-}k(\{e\in E\mid \cos(v_g,v_e)&gt;\tau_{min}\})&#xA;   $$&lt;/li&gt;&#xA;&lt;li&gt;结合当前图像和问题重写经验:&#xA;&#xA;$$&#xA;   E_{rewritten}=\mathrm{MLLM}_{kb}(E_{ret},q,I)&#xA;   $$&lt;/li&gt;&#xA;&lt;li&gt;结合重写后的经验, 对全局技能文档做任务适配:&#xA;&#xA;$$&#xA;   K_{adapted}=\mathrm{MLLM}_{kb}(K,E_{rewritten},q,I)&#xA;   $$&lt;/li&gt;&#xA;&lt;li&gt;将 $K_{adapted}$ 和 $E_{rewritten}$ 作为非强制参考注入 system prompt, 由 $\mathrm{MLLM}_{exec}$ 执行工具调用并输出答案.&lt;/li&gt;&#xA;&lt;li&gt;记录实际使用了哪些技能和经验, 将使用历史回流到下一轮积累.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;可以看到, XSkill 在总结、检索和改写时都显式把图像观察放进去了.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;XSkill&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;574px&#34; data-flex-grow=&#34;239&#34; height=&#34;331&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://arxiv.org/html/2603.12056v2/x2.png&#34; width=&#34;792&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;积累阶段&#34;&gt;积累阶段&#xA;&lt;/h3&gt;&lt;p&gt;rollout summary. $\mathrm{MLLM}_{exec}$ 对同一个训练任务执行 $N$ 次, 得到成功和失败轨迹. $\mathrm{MLLM}_{kb}$ 看到的是完整多模态上下文: 图像、工具调用、中间输出、最终答案和 ground truth.&lt;/p&gt;&#xA;&lt;p&gt;然后是 cross-rollout critique. 这一步对比成功和失败轨迹, 抽取导致结果差异的因素, 输出对经验库的结构化操作:&lt;/p&gt;&#xA;$$&#xA;\Delta E_i=\{op_1,op_2,\ldots,op_M\}&#xA;$$&lt;p&gt;每个操作是 &lt;code&gt;add&lt;/code&gt; 或 &lt;code&gt;modify&lt;/code&gt;. 如果新经验和已有经验相似度超过阈值, 系统会让 $\mathrm{MLLM}_{kb}$ 合并这些条目.&lt;/p&gt;&#xA;&lt;p&gt;技能库的合并也类似. 从 rollout 中抽出的 workflow 和 tool template 会被合并进全局 Markdown 技能文档. 当技能文档超过长度阈值时, 系统会删除过度具体的细节. 这一步把 agent 轨迹整理成一份会不断演化的 &lt;code&gt;SKILL.md&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;推理阶段&#34;&gt;推理阶段&#xA;&lt;/h3&gt;&lt;p&gt;推理阶段有三个设计点: 任务分解、上下文改写、非强制注入.&lt;/p&gt;&#xA;&lt;p&gt;直接用原始问题去检索经验通常不够好, 所以 XSkill 先让 $\mathrm{MLLM}_{kb}$ 根据问题和图像分解出多个技术子任务, 再分别检索经验. 检索到的经验也不会直接塞进 prompt. 系统会先做 experience rewrite, 把通用经验改写成当前任务相关的建议.&lt;/p&gt;&#xA;&lt;p&gt;随后系统会做 skill adaptation, 从全局技能库中剪掉无关章节, 把相关经验融进工作流, 并调整代码模板. 论文强调注入方式是非强制的参考.&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
