SkillDAG:大规模LLM技能选择中的自进化类型化技能图
摘要
介绍了SkillDAG,一种用于大规模LLM技能选择的自进化类型化有向图,它建模了技能间关系,并允许智能体在执行过程中查询和演化该图,在ALFWorld和SkillsBench上优于基线。
arXiv:2606.03056v1 公告类型:新
摘要:随着LLM智能体采用大型技能库,选择正确的子集成为一个结构性问题而非相似度匹配问题:技能相互依赖、冲突、特化或重复,这种结构对完全枚举和嵌入相似度均不可见。我们提出SkillDAG,它将技能间关系建模为类型化有向图,并作为推理时可被智能体调用的结构检索接口暴露给LLM智能体,在执行过程中查询和演化,而非固化在固定的检索流水线中:每次搜索返回向量匹配、类型化边邻居和冲突信号,同时一个提议再提交协议允许智能体注册执行支持的边,从而让图跨回合积累结构。在ALFWorld和SkillsBench上使用MiniMax-M2.7时,SkillDAG达到67.1%的成功率和27.3%的奖励,超过已报道的最强Graph-of-Skills基线+12.8和+8.6个百分点;该优势可迁移到gpt-5.2-codex,且在匹配查询下内在SkillsBench Ret@K从65.5提升至78.2。这些增益归因于可分解的机制:当候选池扩大10倍时仍保持鲁棒的候选排序(而固定的种子扩散流水线性能下降),以及在不驱逐先前命中结果的前提下扩大真实召回率的集合单调在线编辑。
查看缓存全文
缓存时间: 2026/06/03 09:42
# SkillDAG:面向大规模LLM技能选择的自进化类型化技能图 来源:https://arxiv.org/html/2606.03056 \\setheadertext SkillDAG\\correspondingemail\\emailiconyu\_xingrui@a\-star\.edu\.sg (https://arxiv.org/html/2606.03056v1/[email protected])∗同等贡献\.‡通讯作者\. \\teaserfigure ![[无标题图片]](https://arxiv.org/html/2606.03056v1/x1.png) 图1:SkillDAG每个回合的工作流程。智能体通过`search`获取一个三字段响应(匹配、邻居、冲突),通过`show`获取任意技能体,在环境中执行动作,并可以通过`propose-edge/edit-edge`对提交基于证据的图编辑。每次提交都通过无环性和无矛盾性检查,并附带仅追加的日志以支持回滚;更新后的图用于后续的`search`调用。由LLM(而非图排序策略)决定加载什么。童柏1∗ 万正林2∗ 周鹏飞2 余星瑞3‡ 赵旺波2 尤阳2 常毅文3 1复旦大学 2新加坡国立大学 3CFAR ###### 摘要 随着LLM智能体采用大规模技能库,选择合适的子集成为一个结构性问题,而非简单的相似性匹配:技能之间存在依赖、冲突、特化或重复关系,这种结构在完全枚举和嵌入相似性中都是不可见的。我们提出SkillDAG,将技能间关系建模为类型化的有向图,并将其作为推理时、智能体可调用的结构检索接口暴露给LLM,在执行过程中查询和演化,而非嵌入固定的检索流水线:每次`search`返回向量匹配、类型化边邻居和冲突信号,并通过提议-提交协议让智能体注册基于执行结果的边,从而使图在多个回合中积累结构。在ALFWorld和SkillsBench上使用MiniMax-M2.7时,SkillDAG达到67.1%的胜率和27.3%的奖励,超过最强的已报告Graph-of-Skills基线分别提高\+12.8\+12.8和\+8.6\+8.6个百分点;该优势迁移到gpt-5.2-codex,且在匹配查询下内在SkillsBench Ret@K从65.5升至78.2。这些收益可追溯到可隔离的机制:候选排序在技能池扩大10×10倍时仍保持稳健,而固定的种子-扩散流水线则退化;以及集合单调的在线编辑可在不驱逐先前命中目标的情况下扩大真实召回率。 代码和数据:https://github.com/Ericbai06/SkillDAG ## 1 引言 大型语言模型智能体越来越依赖外部技能库来扩展其超出模型权重中程序知识的能力。技能是一个自包含的包:唯一标识符、何时适用的自然语言描述,以及智能体调用时运行的指令或代码体,通常附带辅助脚本和前置条件说明\[li2026gos\]。Voyager\[wang2023voyager\]、JARVIS-1\[wang2023jarvis\]和ToolLLM\[qin2024toolbench\]报告称,一旦智能体配备精心策划的技能集合,就能获得巨大收益。随着集合增长到数千条目,瓶颈从技能创作转向技能*选择*:无法仅凭名称或嵌入决定加载哪个子集,而对大型工具集合的检索本身就是LLM智能体一个可测量的失败模式\[shi2025toolret\]。 实践中主导两种策略。拼接整个库仅在小规模下可行:令牌成本线性增长,描述在过载的提示中丢失\[liu-etal-2024-lost\]。扁平检索则将任务嵌入并按余弦相似度\[karpukhin2020dpr, reimers2019sentencebert\]或BM25\[robertson2009bm25\]拼接top-K个技能。两者都隐藏了库的关系结构:顶部匹配命名了任务,但功能必要的前置条件(解析器、转换器或设置工具)却被悄然忽略;类似的缺口出现在技能相互干扰、近乎重复浪费上下文预算,以及联合提供各自不能单独提供的能力的配对中。在小规模下,策展可以掩盖这些失败,但其成本随库增长而增长。 先前工作对技能间结构进行建模,但止步于让LLM直接推理该结构。SkillNet\[skillnet2025\]构建了一个500,000技能图,用于平台组织而非运行时路由。Graph of Skills\[GoS; li2026gos\]在推理时对类型化技能图运行个性化PageRank\[page1999pagerank, haveliwala2003topicsensitive\],并在SkillsBench和ALFWorld上报告了增益,但通过固定的种子-扩散-重排序流水线计算技能包,并将不透明的上下文交给智能体:它无法询问为何选择某个技能、撤回收回有噪声的检索,或记录离线流水线遗漏的关系。XSkill\[xskill2025\]和CUA-Skill\[cuaskill2025\]分别处理技能获取和执行,而不涉及技能间关系。 我们提出SkillDAG,基于相反的设计选择:图不是固定检索算法的底层载体,而是作为推理时、智能体可调用的结构检索接口暴露给LLM,与智能体已用于执行的工具处于同等地位。由LLM(而非图排序策略)决定结构证据应如何影响执行;而图则通过基于证据的智能体编辑在多个回合中积累结构知识。 我们的贡献总结如下: - • 我们识别出大型技能库上的扁平检索静默省略了结构上必要的技能,并拼接了冗余或干扰的技能——这是相似性匹配不可见的失败模式。 - • 我们提出SkillDAG,一个智能体可调用的结构检索接口,通过`search/show/propose-edge/edit-edge`将类型化技能关系图暴露给LLM,用结构证据替换固定图排序策略,LLM直接推理这些证据。 - • 我们设计了一个在线的提议-提交编辑协议,在三个结构不变性(无环性、无矛盾性、仅追加可逆性)下,从单次回合证据增长图,并配以双视角冷启动构造器,恢复扁平自相似性遗漏的跨功能配对。 - • 在ALFWorld\[shridhar2021alfworld\]和SkillsBench\[li2026gos\]上的实验,使用MiniMax-M2.7和gpt-5.2-codex,显示SkillDAG达到67.1%/93.6%的ALFWorld成功率和27.3%/36.8%的SkillsBench奖励,内在Ret@K为78.2,且在技能池扩大10×10倍时保持稳定。 ## 2 相关工作 #### 技能和工具库。 LLM智能体通过暴露为工具\[schick2023toolformer, qin2024toolbench, patil2024gorilla\]、技能\[wang2023voyager, wang2023jarvis\]、代码动作\[liang2023codeaspolicies, wang2024codeact\]或基础原语\[ahn2022saycan, huang2022innermonologue\]的外部能力进行增强。随着库规模扩大,选择而非创作成为瓶颈:ToolkenGPT\[hao2023toolkengpt\]学习每个工具的嵌入,AnyTool\[du2024anytool\]添加层次化API检索器,CRAFT\[yuan2024craft\]创建和检索专门化的工具集,而库学习方法将轨迹压缩为有文档记录的可重用代码\[grand2024lilo\]。SkillNet\[skillnet2025\]组织500K+技能为用于开发者导航的图,CUA-Skill\[cuaskill2025\]将技能建模为可执行DAG,GraSP\[chen2026grasp\]添加任务内排序的DAG修复;没有一种在运行时向智能体暴露技能间结构,因此扁平选择仍然遗漏先决条件和冲突。 #### 技能检索和结构化RAG。 超越扁平top-K RAG\[lewis2020rag\],近期工作注入结构:GraphRAG\[edge2024graphrag\]索引社区图用于离线摘要,HuggingGPT\[shen2023hugginggpt\]通过任务分解在扁平目录上组合模型,HippoRAG\[gutierrez2024hipporag\]通过KG记忆上的个性化PageRank进行检索,LightRAG\[guo2025lightrag\]维护增量更新的图索引,GeAR\[shen2025gear\]执行智能体驱动的图扩展。针对工具,Re-Invoke\[chen2024reinvoke\]重写查询用于零样本检索,ToolGen\[wang2025toolgen\]通过工具令牌将查找折叠到生成中。Graph of Skills\[GoS; li2026gos\]是最接近的基线,离线构建类型化技能图并通过反向感知的个性化PageRank检索一个技能包,作为不透明文本拼接进上下文。SkillDAG颠覆了两个选择:图是智能体可调用的结构检索接口,而非固定检索器的底层载体;其边在执行过程中可编辑,而非在构建时冻结。 #### 自进化智能体。 ReAct\[yao2023react\]交织推理\[wei2022cot\]和动作,通过深思熟虑的搜索扩展\[yao2023tot\];Reflexion\[shinn2023reflexion\]和Self-Refine\[madaan2023selfadd\]添加口头自我纠正;ExpeL\[zhao2024expel\]、AutoAct\[qiao2024autoact\]和Agent-Pro\[zhang2024agentpro\]将经验提炼为可重用的见解或策略。更接近技能积累,Agent Workflow Memory\[wang2024awm\]在线引发可重用工作流,ICAL\[sarch2024ical\]和STE\[wang2024ste\]将轨迹抽象为记忆,AutoGuide\[fu2024autoguide\]检索状态条件指南,OS-Copilot\[wu2024oscopilot\]在工具丰富的操作系统中积累技能;调查将其框架化为非参数自进化\[gao2025selfevolving\]。生成式智能体\[park2023generative\]和MemGPT\[packer2023memgpt\]管理自由文本记忆,XSkill\[xskill2025\]更新单个技能。近期系统还外部化或压缩智能体执行上下文:AgentOCR将交互历史渲染为紧凑视觉记忆\[feng2026agentocr\],而CaveAgent将持久运行时视为中央状态存储并集成运行时技能管理\[ran2026caveagent\]。在具身体设定中,多记忆框架同样结构化空间、时间、情节和语义经验以进行长时程交互\[lei2026robomemory\]。我们的propose/edit-edge机制则改变所有未来智能体共享的类型化关系结构,实现精确可审计的更新。 #### 智能体基准。 我们在ALFWorld\[shridhar2021alfworld\]和SkillsBench\[li2026gos\]上进行评估,在跨领域任务\[liu2024agentbench\]、Web环境\[zhou2024webarena\]、通用助手\[mialon2023gaia\]、桌面/操作系统控制\[xie2024osworld\]、API丰富应用\[trivedi2024appworld\]、工具-智能体-用户对话\[yao2024taubench\]和函数调用\[patil2025bfcl\]的背景下。所有这些都共享推动SkillDAG的压力点:对不断增长的能力表面的检索本身是一个可测量的失败模式\[shi2025toolret\]。 ## 3 方法 参照说明图2:后运行ALFWorld图中一个六节点子图,运用了所有五种类型化关系:冷启动的`specializes/similar_to`边,加上智能体注册的`depends_on`以及后续在同一对上的`conflicts_with`。### 3.1 概述 SkillDAG从一个简单的倒置开始:类型化图并不隐藏于固定检索流水线,而是作为智能体可调用的接口暴露出来,LLM可以在执行过程中查询、检查和修订。这使得图结构成为智能体决策上下文中的显式部分,而非不透明的排序启发式。类型化关系图为原本扁平的技能库提供操作结构:前置条件和特化边组织可重用的进展,组合和相似边暴露相邻技能,冲突边标记智能体应避免的组合。`search/show`接口通过将语义匹配、类型化邻居和冲突作为分开的证据渠道返回,将这种结构转化为行动,同时仅按需加载完整技能体。为了在任何回合运行前初始化这种结构,冷启动构造器从两个互补视角链接技能:技能能做什么以及它需要什么。然而,静态结构不可避免地不完整,因此在线协议让智能体提议和提交基于执行的编辑,同时通过无环性、无矛盾性和仅追加可逆性防止图漂移到不一致。形式化的图、接口、冷启动构造器和在线编辑协议在§3.2(https://arxiv.org/html/2606.03056#S3.SS2)–§3.5(https://arxiv.org/html/2606.03056#S3.SS5)中指定,完整伪代码见附录A(https://arxiv.org/html/2606.03056#A1)。 ### 3.2 技能关系图定义 前置条件、替代和冲突在默认检索基线(按自描述相似度排名技能并拼接top-K)下都坍缩为单个余弦分数,因此严格前置条件和可互换的替代都表现为“高余弦邻居”,尽管加载前者解锁任务,而加载后者浪费上下文并稀释智能体注意力。为防止这种坍缩,我们将关系*类型*本身提升为面向智能体语义的一部分,使LLM依据它看到的是*什么类型*的关系而非仅仅*有多相似*来行动。我们将这一原则实例化为类型化图。令技能库为有限集合C=\{s1,...,sn\},其中si也是唯一标识符;图G=(V,E,τ)具有V=C和类型化函数τ为每条边分配五种操作性定义的类型之一:`depends_on(A,B)` 标记A需要前置条件B;`specializes(D,A)` 标记D是更窄的变体,优先于A;`composes_with` 标记协同共用的关系;`similar_to` 标记功能冗余(选择一个);`conflicts_with` 标记不应同时选择的配对。 两个操作约束使得这个类型化图可用于面向智能体的接口。*冲突作为剪枝信号,而非导航边。*我们有意排除`conflicts_with`用于遍历,因为导航冲突边会通过展现LLM被告知要避免的技能而积极破坏检索;四个正类型由检索接口遍历,而`conflicts_with`仅用于排除共同选择(§3.3(https://arxiv.org/html/2606.03056#S3.SS3))。*主干上的无环性。*我们保留`depends_on`和`specializes`作为有向主干,其无环性赋予SkillDAG名称;该不变性在提交时强制执行(§3.5(https://arxiv.org/html/2606.03056#S3.SS5))。图2(https://arxiv.org/html/2606.03056#S3.F2)展示了后运行ALFWorld的六节点子图,运用了所有五种类型。 参照说明图3:冷启动构造:读取库,在两个视角中嵌入每个技能(`eself`表示其功能,`eneeds`表示其需求),应用自适应余弦阈值,运行LLM配对分类器,并实现初始图。`conflicts_with`保留给在线协议,因为共同使用的危害无法仅从静态文本推断。 ### 3.3 智能体可调用的结构检索接口 对边进行类型化后,我们必须决定如何在推理时向智能体暴露该图。先前图检索器的默认做法是将类型化结构坍缩回一个排名包,但这会撤销§3.2(https://arxiv.org/html/2606.03056#S3.SS2)的工作,向LLM隐藏了我们构建图所要保留的区分。因此,我们将`search`(图1(https://arxiv.org/html/2606.03056#S0.F1))设计为智能体可调用接口,将语义匹配、类型化邻居和冲突作为三个独立的证据通道返回,LLM独立推理它们。 单次`search(q,K,D)`调用返回三个字段,每个回答了LLM否则必须分别询问的问题:`matches`(“什么与`q`主题相近?”)、`neighbors`(“与匹配技能有已记录结构化关系的技能是什么?”)和`conflicts`(“哪些匹配技能不应共同选择?”)。`matches`执行标准的余弦最近邻嵌入搜索,针对技能自描述。`neighbors`遍历正向边类型(`depends_on`、`specializes`、`composes_with`、`similar_to`)超越初始搜索结果。注意到基于当前子集`matches` `M`,`neighbors`返回其类型化邻居。这种遍历是递归的:`neighbors`的邻居也包含在内,因为协作模式可能涉及链条(A与B组合,B依赖C)。这创建了非循环扩展:智能体收到展开的结构上下文,但保持对是否加载任何特定技能的控制。`conflicts`独立计算,扫描`M`中的所有配对,并报告那些通过边连接的类型化对,允许LLM在自己的计数之内排除冲突技能。冲突检查也考虑间接冲突:如果A与B冲突,而B与C组合,加载A和C仍可能引发冲突,尽管没有直接边。附录B(https://arxiv.org/html/2606.03056#A2)中的算法2提供了带有间接检查的冲突计算。 `show(s)`调用加载并返回技能`s`的完整描述(标识符、描述、体),使LLM在承诺重用之前可以检查细节。如果没有`show`,智能体只能猜测相似度分数背后隐藏的是什么代码或指令。这提供了与编程中函数签名与完整文档相同的分离:匹配用于发现,但仅在检查后使用。 结构与推理的解耦避免了常见陷阱:固定重排序器将结构证据坍缩为标量分数,遮挡为什么包含某个技能;固定预算导致在技能池增长时退化;而结构管道严格管理,智能体无法追加新经验。我们的替代方案——LLM驱动的检索,通过智能体操作的图累积结构——以增加LLM的调用开销为代价提供灵活性和适应性。 ### 3.4 冷启动构造 在没有事件历史的情况下,图必须从纯文本技能库初始化。我们通过双视角嵌入和LLM验证的组合来实现这一点,该过程以图3(https://arxiv.org/html/2606.03056#S3.F3)所示的方式工作。关键见解是从两个不同视角描述每个技能:*它做什么*(自描述)和*它需要什么*(依赖描述)。许多技能如果需要特定的数据类型或服务,则具有隐含的前置条件;仅基于自描述的余弦相似性会错过这些依赖关系,例如,`parse_json`需要`load_file`,但如果两者的描述仅关注其输出,则可能显示低相似性。 构造过程如下。第一步:为每个技能构建两个描述。`self_desc_i`直接从技能的现有描述中提取;`needs_desc_i`则来自可用的任何元数据——参数类型、所需工具、环境假设——或者通过提示LLM“基于其实现和用法预期,简要说明此技能需要什么”来合成。第二步:使用现有嵌入模型生成两个嵌入向量:`e_self(i) = embed(self_desc_i)`和`e_needs(i) = embed(needs_desc_i)`。第三步:对于每对`(i,j) with i != j`,计算`sim_self(i,j) = cosine(e_self(i), e_self(j))`和`sim_cross(i,j) = cosine(e_self(i), e_self(j))`。第四步:对于每个不对称对`(i,j)`,计算`max_sim = max(sim_self(i,j), sim_cross(i,j))`,在自适应阈值`theta_c = mu + k*sigma`(其中`mu`和`sigma`是嵌入库中所有`sim_self`值的均值和标准差)处进行阈值处理,以产生候选边。第五步:对每个候选对,向LLM查询:“给定技能A:[self_desc_A, needs_desc_A]和技能B:[self_desc_B, needs_desc_B],确定关系:`depends_on`(A需要B)、`specializes`(A是B的专门化)、`composes_with`(A与B良好协同)、`similar_to`(A和B在功能上冗余),或`none`。如果只有一个方向有效,则只指定那个方向。”只有LLM确认的关系才会被物化为边。 通过构造,此过程恢复`depends_on`、`specializes`、`composes_with`和`similar_to`边。`conflicts_with`边故意省略,因为有害的协同作用仅从描述中无法可靠推断(它们可能共享输入格式但仍会产生冲突输出)。冲突被保留为经验现象,通过§3.5(https://arxiv.org/html/2606.03056#S3.SS5)中的在线协议检测。 ### 3.5 在线图编辑协议 冷启动图是静态的,并且必然是不完整的:它从文本推断关系,但图拓扑中有效的协同作用或冲突可能仅在执行后变得明显。我们设计了一个在线协议,让智能体通过提议-提交机制更新图,并带有保证一致性的不变性。以下是运作方式。 图维护两个不可变引用——活动图`G_a`和完整编辑日志`L`,后者附加了每条成功提交边。活动图总是满足无环性和无矛盾性;日志允许任何提交边的回滚。智能体通过两个原语与图交互: - `propose-edge(type, u, v, justification)`:智能体提出添加关系`type(u,v)`,附上下游理由(“技能U使执行V成为可能”)。系统检查提议是否违背不变性:如果类型属于`depends_on`或`specializes`(有向主干),则验证无环性。插入冲突边始终允许,但只能作为无矛盾性检查的一部分。 - `edit-edge(type, u, v, new_type, justification)`:智能体请求更改现有边的类型,同样需要验证不变性。 无环性检查:对于有向边`(u,v)`,系统在暂存修改后的图上执行拓扑排序;如果无法排序,则拒绝提议并返回失败标志和违规路径,供智能体在重新提议时使用,例如通过移除中间节点。无矛盾性检查:对于类型`conflicts_with`的边,系统验证这对节点之间不超过一个冲突边。对于非冲突边,跨类型重复边是允许的(技能可以同时是依赖和特化),但系统验证没有相同类型和方向的重复边。回滚:由于每条有向边都与一个唯一的提交ID关联,智能体可以调用`rollback(commit_id)`,该调用从活动图中移除该边并将日志标记为已回滚。这种不变性系统防止了两种退化:无环性保证结构遍历终止,无矛盾性保证边类型保持语义纯净,仅追加日志保证审计跟踪。该协议在附录A(https://arxiv.org/html/2606.03056#A1)的算法1中指定。
相似文章
SkillGraph:通过动态演进的技能图增强智能体的强化学习
SkillGraph 是一个框架,将可复用技能表示为有向图中的节点,使大型语言模型智能体能够通过结构化的技能检索和持续演进,更有效地处理组合任务。
SkillMaster:迈向大语言模型智能体的自主技能掌握
本文介绍了 SkillMaster,一种训练框架,使大语言模型智能体能够通过轨迹知情审查和反事实效用评估,自主地创建、优化和选择技能。
SkillFlow:流程驱动的递归技能演化用于智能体编排
SkillFlow 提出了一种基于流程驱动的递归技能演化框架,用于基于大语言模型的智能体编排,采用 Tempered Trajectory Balance 来防止策略崩溃并提供透明的信用分配。在 14 个数据集上的实验表明,在问答、数学、代码和决策制定任务中,该框架显著优于基线方法。
技能并非通用:面向LLM智能体的模型感知技能对齐
本文提出MASA框架,该框架在不修改模型权重的情况下,通过分层进化和模型条件重写器将技能适配到每个LLM骨干网络,相比基线方法最高提升25.8个点。
SkillAdaptor: 基于轨迹的LLM智能体自适应技能
SkillAdaptor是一种无需训练的步骤级技能自适应框架,具有显式的失败归因能力,适用于LLM智能体,在WebShop、PinchBench和Claw-Eval上提升了性能。