⚠️ 在开始阅读之前,如果你对 实时 Agent / 数字人 / 多模态系统 / LiveKit 架构 感兴趣,
欢迎先到 GitHub 给项目点一个 ⭐ Star,这是对开源作者最大的支持。

🚀 AlphaAvatar 项目地址(强烈建议先收藏,该项目正在持续更新维护):
👉 https://github.com/AlphaAvatar/AlphaAvatar
🚀 AIPapers 项目地址(具有更全的有关LLM/Agent/Speech/Visual/Omni论文分类):
👉 https://github.com/AlphaAvatar/AIPaperNotes

摘要

Claude Agent Skills 的快速增长引发了一个核心问题:如何有效地利用、管理和扩展智能体的 Skill 生态系统?本文提出了AgentSkillOS,这是首个用于技能选择、编排和生态系统级管理的原则性框架。AgentSkillOS 包含两个阶段:(i)Manage Skills,通过节点级递归分类将技能组织成能力树,以实现高效发现;(ii)Solve Tasks,通过基于 DAG 的流水线检索、编排和执行多个技能。为了评估智能体调用技能的能力,我们构建了一个包含 30 个丰富工件的任务的基准测试,这些任务涵盖五个类别:数据计算、文档创建、动态视频、视觉设计和 Web 交互。我们使用基于 LLM 的成对评估来评估任务输出的质量,并通过 Bradley-Terry 模型聚合结果,生成统一的质量评分。我们在三种不同规模的技能生态系统(200 到 20 万个技能)上进行的实验表明,基于树的检索能够有效地近似于 oracle 技能选择,并且基于 DAG 的编排即使在技能集相同的情况下也显著优于原生扁平调用。我们的研究结果证实,结构化组合是释放技能潜力的关键。我们的 GitHub 代码库地址为:https://github.com/ynulihao/AgentSkillOS。

1.介绍

智能体技能生态系统正在迅速扩展。技能由 Claude 于 2025 年 10 月提出,它是一个 Markdown 文件,定义了一个结构化的文件夹,其中包含声明性指令、可执行脚本和辅助资源。通过支持运行时动态加载和执行,Skill 使大语言模型(LLM)能够获取特定领域的知识并扩展其操作能力。Skill 已被多个模型服务提供商采用,并集成到 Coze 等平台中,从而实现了跨模型技能的重用和执行。截至 2026 年 2 月底,已有超过 28 万个技能公开可用,其中绝大多数由分散的第三方贡献者开发和维护。在这种规模和去中心化程度下,一个关键问题随之出现:如何有效地利用、管理和扩展智能体技能生态系统

这个问题既具有重要的实践意义,也具有重要的研究价值。从用户角度来看,可用技能的数量庞大,使得用户难以全面了解整个生态系统。用户往往缺乏对现有技能、技能所展现的能力以及技能间差异或重叠之处的清晰认知,这使得针对特定任务选择合适的技能变得极具挑战性。从平台提供商的角度来看,一个快速扩张且主要由第三方主导的生态系统带来了巨大的治理挑战,尤其是在质量和可靠性方面。更根本的是,随着生态系统规模的扩大,技能的碎片化和孤立化程度越来越高;由于缺乏明确的组合和协调机制,许多技能未能得到充分利用,生态系统也未能实现其核心价值:即整合多种技能来解决单一技能无法完成的任务

本文介绍了 AgentSkillOS,这是首个用于技能选择、编排和生态系统级管理的原则性框架。它包含两个阶段:Manage SkillsSolve Tasks

  1. 在技能管理阶段,我们构建了一个能力树,该能力树基于技能的能力将技能组织成一个层级结构。具体来说,AgentSkillOS 从根节点开始,通过递归地将每个节点的技能集划分为类别组,并将任何超过节点容量阈值的类别节点拆分,直到所有节点都符合该阈值,从而将技能组织成节点级层级结构。我们注意到,能力树的构建至关重要。它能够发现那些不明显但功能相关的技能,从而实现比纯粹语义检索更广泛、更具创造性的技能发现。
  2. 在任务解决阶段,AgentSkillOS 基于能力树来检索和编排多种技能,使特定任务的 Agent 能够解决超出任何单一技能范围的任务。该阶段包括三个步骤:(i)任务驱动的技能检索,它探索能力树以检索广泛的相关技能,然后通过过滤、去重和相关性排序对其进行筛选;(ii)基于 DAG 的技能编排,它将任务分解为子任务,并将选定的技能组合成有向无环图 (DAG) 计划,提供三种不同的编排策略;以及(iii)多技能任务执行,它执行选定的 DAG,自动管理步骤之间的执行顺序、依赖关系和数据流。

为了系统地评估 AgentSkillOS,我们构建了一个包含 30 项任务的基准测试,涵盖五大类:数据计算、文档创建、动态视频、视觉设计和 Web 交互。所有任务均由专家构建,他们首先从公共市场和 GitHub 代码库中筛选高质量技能,然后基于这些技能和真实用户需求,制定任务描述和交付物要求,这些要求既可以基于单一技能,也可以通过交叉组合多个技能来实现。该基准测试具有三个针对技能评估的关键属性:(i)Multi-format Creative Tasks:每项任务都需要交付完整的、面向最终用户的成果,超越代码生成或问答等简单测试,以检验实际交付质量;(ii)Pairwise Comparison with Position-bias Mitigation:我们采用基于 LLM 的成对评判方法进行评估,在两种排序方式下进行评判以消除位置偏差,并通过 Bradley-Terry 模型汇总偏好,实现更精细的排名; (三)High Skill-discriminability:通过将任务与特定技能联系起来,任务质量严重取决于智能体是否正确选择和调用相关技能,从而清晰地展现技能配置的差异。

我们针对三种不同规模的技能生态系统(200、1K 和 200K)评估了不同的配置。结果表明,我们的 AgentSkillOS 在所有规模的生态系统中均始终取得最高分,显著优于传统的 Claude Code 技能调用方式和无技能基线系统。值得注意的是,我们的消融实验表明,基于 DAG 的技能编排是提升性能的关键因素:即使拥有相同的技能集,以扁平化、非结构化方式调用技能的传统 Claude Code Agent 的性能也明显逊于采用 DAG 编排的 AgentSkillOS。这表明,结构化的技能组合(而不仅仅是技能的可用性)才是释放技能生态系统全部潜力的关键。

本文的主要贡献总结如下:

  • 我们提出了 AgentSkillOS,这是第一个基于能力树的技能组织和基于 DAG 的多技能编排的原则性框架,用于高效地利用、管理和扩展代理技能生态系统。
  • 我们构建了一个包含 30 个涵盖五大类的、富含人工制品的任务的基准,并采用基于 LLM 的成对评估协议,通过 Bradley-Terry 模型进行细粒度的质量评估。
  • 通过在三个生态系统规模(200 到 200K 个技能)上进行的全面实验,我们证明基于树的检索有效地近似了oracle 技能选择,并且即使给定 oracle 技能集,基于 DAG 的编排也明显优于原生扁平技能调用。

2.Method

在这里插入图片描述

本节介绍 AgentSkillOS,它是首个用于高效地从大规模 Skill 生态系统中选择、协调和管理技能以解决用户指定任务的原则性框架。AgentSkillOS 包含两个阶段:(i)Manage Skills,将大规模技能生态系统组织成能力树,以便在任务执行前高效利用可用技能;(ii)Solve Tasks,在任务执行期间自动选择、协调和执行多个技能。图 1 展示了 AgentSkillOS 的整体工作流程。

2.1 Manage Skills: Capability Tree Construction

为了能够从大规模 Skill 生态系统中高效检索所需技能,我们使用树状结构组织 Skill 生态系统。我们将这棵树称为能力树 (capability tree),它独立于任务执行过程,离线构建和更新。形式上,我们将待管理的 Skill 生态系统记为 S \mathcal S S ,能力树记为 T T T。每个节点 n ∈ T n∈T nT 对应于一个技能划分,并被分配一个特定的技能子集 S n ⊆ S T \mathcal S_n⊆\mathcal S_T SnST,其中 S T \mathcal S_T ST 是用于构建能力树 T T T 的所有技能的集合。因此,对于根节点 r r r,有 S r = S T \mathcal S_r=\mathcal S_T Sr=ST。对于具有子节点 c h ( n ) ch(n) ch(n) 的节点 n n n,其子节点 c ∈ c h ( n ) c∈ch(n) cch(n) 构成 S n \mathcal S_n Sn 的一个划分,满足 S n = ⋃ c ∈ c h ( n ) S c \mathcal S_n=\bigcup_{c∈ch(n)}\mathcal S_c Sn=cch(n)Sc 且对于任意 c ≠ c ′ c≠c′ c=c,有 S c ∩ S c ′ = ∅ \mathcal S_c∩\mathcal S_{c′}=∅ ScSc=。从能力树的高层节点到低层节点,每一层节点的技能数量近似呈指数级递减。最终,能力树中的每个叶节点都对应于一个技能分区,该分区恰好包含一项技能。这种能力树结构支持由粗到精、逐级定位:Agent 可以首先识别相关的顶层能力域,然后在相应的节点分区内进行搜索,从而避免在 S T \mathcal S_T ST 上进行无引导检索。值得注意的是, S T \mathcal S_T ST 不一定等于整个 Skill 生态系统 S \mathcal S S 。在接下来的小节中,我们首先描述如何通过对 S T \mathcal S_T ST 进行节点级递归分类来构建和更新能力树。此外,我们引入了一个使用频率队列,用于从 S \mathcal S S 中选择 S T \mathcal S_T ST,以控制树的大小,并在 S \mathcal S S 过大时减少低质量技能的包含。

2.1.1 Node-Level Recursive Categorization

在构建能力树之前,AgentSkillOS 会扫描 S T \mathcal S_T ST,提取每项技能的名称和描述,作为后续划分的基础。然后,从根节点开始,AgentSkillOS 采用广度优先策略,为每个节点生成子节点,从而逐层构建能力树 T T T。子节点的生成是通过划分当前节点的技能集来实现的,该过程包含两个步骤:类别发现和技能分配。给定当前节点 n n n 及其分配的技能集 S n \mathcal S_n Sn,(1)在类别发现阶段,AgentSkillOS 使用 LLM 为 S n \mathcal S_n Sn 生成特定数量的类别组,包括每个类别的名称和描述。目标类别组数量由分支因子 B B B 决定。(2)在技能分配阶段,AgentSkillOS 使用 LLM 将 S n \mathcal S_n Sn 中的每个技能分配到生成的类别组之一。通过将子节点生成分为两个步骤,AgentSkillOS 大大降低了在构建能力树过程中遗漏技能的概率。

AgentSkillOS 针对三种特殊情况进行额外处理:

  1. 如果当前节点是根节点,为确保分类的稳定性和可靠性,会在类别发现中手动指定五个固定类别组:内容创作、数据处理、软件开发、自动化和领域特定。
  2. 如果在技能分配后生成的任何类别中的技能数量等于 1,则该类别及其所有技能将被合并到最相关的目标类别中,并更新目标类别的名称和描述。如果某个类别中的技能数量低于每个节点的容量阈值 C C C 但大于或等于 2,则该类别中的所有技能将被转换为叶节点,并且不再生成其子节点。通过确保每个节点都被分配足够数量的技能,AgentSkillOS 可以降低能力树的深度并加快技能检索速度。
  3. 如果由于 LLM 幻觉或其他错误导致某些技能未被分配到任何类别,则会重新分配这些技能。如果在第二次技能分配后他们仍然没有所属类别,则会被分配到技能数量最多的类别。最终,能力树中的每个节点对应一个技能类别,而每个叶节点代表一项具体的技能。

如果 S S S 发生变化,能力树将会更新。新引入的技能将按如下方式整合到能力树中:从根节点开始,每个新技能在每一层级都被逐步分配到最合适的类别,形成一条向下延伸的路径,最终作为新的叶节点插入到合适的位置。插入后,我们沿着构建的路径进行自底向上的更新,以完善受影响节点的类别名称和描述。总体而言,我们的树构建和更新方法在技能分类准确率和检索效率之间取得了平衡。

2.1.2 Usage-Frequency Queue for Skill Selection for Tree-construction

当技能集合 S \mathcal S S 中的技能数量超过阈值 K K K 时,我们通过从 S \mathcal S S 中选择满足特定条件的技能来构建能力树,从而控制树的深度。为了选择 S T \mathcal S_T ST,AgentSkillOS 维护一个使用频率队列 Q Q Q,该队列根据频率得分 f ( s ) f(s) f(s) s ∈ S s ∈ \mathcal S sS 进行排序,我们将 f ( s ) f(s) f(s) 设置为技能 s s s 在市场上的安装次数(https://www.skills.sh/)。然后,通过 S T = T o p K ( Q , K ) ∪ S u s e r \mathcal S_T = TopK(Q, K) ∪ \mathcal S^{user} ST=TopK(Q,K)Suser 选择 S T \mathcal S_T ST 来构建树,其中 S u s e r \mathcal S^{user} Suser 表示用户从 S \mathcal S S 中手动选择的技能。这种设计使用户能够方便地集成他们自定义的私有技能。我们将剩余的技能 S \ S T \mathcal S \backslash \mathcal S_T S\ST 放入一个支持语义建议的休眠索引中。具体来说,我们构建一个基于休眠技能元数据(名称和描述)的向量索引,并通过嵌入相似性来检索建议。如果建议的休眠技能在任务解决过程中被证明有用,AgentSkillOS 允许用户将其添加到 S u s e r S^{user} Suser 中并触发树的更新。

2.2 Solve Tasks: a Task-Specific Agent with Multiple Skills

AgentSkillOS 基于 Skill 能力树,检索并协调多种技能,为特定任务的智能体配备相应能力,使其能够解决任何单一技能无法完成的任务,并提高整体技能利用率。构建特定任务智能体的关键在于为给定任务生成并执行技能编排图,该图以有向无环图 (DAG) 的形式表示。我们将其表示为 G = ( V , E ) G = (V, E) G=(V,E),其中每个节点 v ∈ V v ∈ V vV 表示能力树中的一个技能,并被选中用于解决该任务;每条有向边 ( u , v ) ∈ E (u, v) ∈ E (u,v)E 表示技能 v v v 依赖于技能 u u u 的输出或效果。在实践中,不同的节点通常对应于任务执行的不同阶段。通过在任务的特定阶段启用相关技能,AgentSkillOS 使智能体能够更准确地调用技能。任务解决过程分为三个阶段:(i) 任务驱动的技能检索,检索作为技能编排图中节点的技能;(ii)基于 DAG 的技能编排,通过组织检索到的技能来构建 DAG;以及(iii)多技能任务执行,基于 DAG 完成任务。我们将在以下章节中介绍这三个阶段。此外,AgentSkillOS引入了一种基于任务描述向量相似性的技能编排重用机制,以提高运行效率。对于相似的用户任务,该机制允许系统在获得用户许可的情况下直接重用配方池中的技能编排计划,从而跳过阶段 1和阶段 2。

2.2.1 Task-driven Skill Retrieval

AgentSkillOS 分两个阶段为用户指定的任务选择技能:检索和剪枝。利用能力树,AgentSkillOS引导 LLM 遍历层级结构,并根据用户的任务逐层选择相关的类别节点,最终将所有到达的叶节点视为候选技能。在此过程中,系统明确鼓励 LLM 包含任何有助于用户实现目标的技能。对于能力树中未包含的技能(如有),AgentSkillOS 使用向量相似性搜索来检索与任务最相关的技能,并将其添加到候选技能集中。与关键词搜索或纯粹基于嵌入的检索相比,这种基于树的方法使 LLM 能够利用推理和创造力来发现互补的、非显而易见的技能。在剪枝阶段,AgentSkillOS 指示 LLM 对检索到的技能进行去重和排序,并根据其与用户任务的相关性进行排序,丢弃那些明显不相关或冗余的技能。随后,AgentSkillOS 生成一个包含排名前 M M M 个技能的精简列表。这些技能随后会呈现给用户,用户可以进一步选择技能,从而确定用于构建技能编排图 G G G 的最终节点集 V V V

2.2.2 DAG-based Skill Orchestration

一旦确定了 V V V,AgentSkillOS 就会根据不同的预定义编排策略,生成可供选择的技能编排方案供用户选择。这些策略定义了将技能组织成可执行图的不同结构模式,反映了延迟、风险和解决方案多样性之间的权衡。本文定义了三种这样的策略:(i)质量优先策略,它通过充分利用每项技能的优势,并在需要改进结果的地方添加准备或优化阶段,来最大化每个交付物的输出质量;(ii)效率优先策略,它通过减少顺序跳转并构建 DAG 来最大化并行性,使独立的子任务尽可能并发运行;(iii)简洁优先策略,它生成一个最小的 DAG,其中每个节点都至关重要——移除任何节点都会影响任务的完成。

在技​​能编排生成过程中,AgentSkillOS 向 LLM 提供用户任务 t t t、选定的技能集 V V V 以及编排策略,以将任务分解为子任务。每个子任务都可以由相应的技能处理,从而提升其性能。对于每个子任务,AgentSkillOS 指定两个方面:(i) 其对其他子任务的依赖关系(即,其输入依赖于其他子任务的输出)和 (ii) 其目标输出和预期输出。基于这些信息,AgentSkillOS 将子任务及其对应的技能组织成三个具有不同策略的技能编排图,其中节点之间的依赖关系定义了有向边。形式上,令 ℓ ( v ) ℓ(v) (v) 表示任意节点 v ∈ V v ∈ V vV 的层索引,并且每个依赖关系满足 ( u , v ) ∈ E ⇒ ℓ ( u ) < ℓ ( v ) (u, v) ∈ E ⇒ ℓ(u) < ℓ(v) (u,v)E(u)<(v)

2.2.3 Multi-skill Task Execution

用户选定特定策略的编排方案后,配备相应技能的任务特定 Agent 会根据有向无环图(DAG)的分层依赖关系执行各个节点:同一层内的节点互不依赖,可以并行执行;不同层的节点则必须按顺序执行。对于每个节点,AgentSkillOS 会构建一个执行提示,重述用户任务,指定要调用的技能,并阐明子任务。它还会列出上游工件(即先前节点生成的文件),并提供简要的使用提示,说明预期输出,以及下游节点如何使用这些输出。然后,Agent 执行指定的技能,将所有生成的文件保存为工件,并生成结构化的执行状态和输出摘要,以便进行检查。此外,每个任务的技能编排图也会被存储,以便在将来类似的任务中重用

3.Benchmark

在这里插入图片描述

我们构建了一个包含 30 项任务的基准测试,用于评估智能体发现和运用技能生成各种类型产物的能力(见图 2)。我们的基准测试遵循三个关键设计原则:(i)Multi-format Creative Tasks。这些任务不仅限于代码生成或问答:它们要求智能体生成面向最终用户的、格式多样的作品(PDF、PPTX、DOCX、HTML 页面、视频和生成的图像)​​,其中布局、设计和美观性都至关重要。(ii)Pairwise Comparison with Position-bias Mitigation。评估并非给出绝对分数,而是要求 LLM 评委从两个系统中选出更优的输出。每次比较都以两种顺序进行;一致的偏好被接受,而相互冲突的偏好则被记录为平局,从而直接抵消位置偏差。(iii)High Skill-discriminability。任务质量很大程度上取决于智能体是否正确选择和调用相应的技能——拥有正确技能的智能体能够产生高质量的输出,而缺乏正确技能的智能体则会失败或产生严重下降的结果——确保评估能够清晰地揭示技能配置的差异。

3.1 Task

在这里插入图片描述

我们的基准测试任务涵盖五大类:数据计算、文档创建、动态视频、视觉设计和网页交互。

  1. 数据计算任务涉及数值分析和统计建模;
  2. 文档创建任务需要生成专业格式的文档和演示文稿;
  3. 动态视频任务侧重于制作解释数学和技术概念的教育动画;
  4. 视觉设计任务的核心是设计静态视觉作品;
  5. 网页交互任务则包括构建交互式网页或自动化网页数据采集。

每项任务都需要交付一个完整的、面向最终用户的成果,该成果应尽可能贴近真实用户的工作流程。所有任务均由专家按照以下步骤构建。我们首先从公开 Skill 市场和 GitHub 代码库中手动选择高质量的技能。然后,基于这些技能的目标场景和真实用户的潜在需求,我们编写任务描述并明确所需的交付成果,这些成果既可以来自单一技能,也可以通过交叉组合多个技能来实现。图 3 (a) 列出了按类别组织的全部 30 项任务,(b) 则展示了每项任务所需的技能数量、输出文件数量和输出格式,以此来衡量每类任务的复杂程度。

3.2 Evaluation

为了评估任务成果,我们采用成对比较评估作为主要指标。给定两个系统针对同一任务的输出,LLM 评判员会检查双方的所有成果,并根据正确性、完整性、质量和美观性等维度判断哪个系统产生了更好的结果。为了支持多模态比较,非文本格式的成果会被转换为 LLM 评判员可以使用的表示形式:文档和幻灯片会被渲染成页面图像,HTML 页面会被截取成全页屏幕截图,视频会被表示为带有元数据(时长、分辨率、帧速率)的均匀采样帧,图像会被调整到标准化分辨率。文本文件会被原样包含,但长度会有限制。为了减轻基于 LLM 的评判中固有的位置偏差,每次比较都会在两种不同的顺序下进行。然后,将两种评判结果合并为一个单一的结论:如果两种顺序的结果一致,则采用一致的偏好;如果只有一种顺序的结果出现错误,则采用正确的评判结果。如果两种排序结果产生相互冲突的偏好(即,每种排序结果偏好不同的系统),则记录为平局。在对 N N N 个系统进行排序时,我们对每个共享任务执行所有 ( N 2 ) \binom{N}{2} (2N) 次成对比较。成对比较结果被汇总到一个胜负矩阵 W ∈ R N × N W ∈ \mathbb R^{N×N} WRN×N 中,其中 W i j W_{ij} Wij 记录系统 i i i 优于系统 j j j 的次数。平局对 W i j W_{ij} Wij W j i W_{ji} Wji 的贡献均为 0.5。然后,我们拟合 Bradley-Terry 模型以从胜负矩阵中得出排名。Bradley-Terry 模型为每个系统 i i i 分配一个潜在强度参数 β i ∈ R β_i ∈ \mathbb R βiR,并将系统 i i i 优于系统 j j j 的概率建模为:

P ( i ≻ j ) = e β i e β i + e β j (1) P(i\succ j)=\frac{e^{\beta_i}}{e^{\beta_i}+e^{\beta_j}}\tag{1} P(ij)=eβi+eβjeβi(1)

我们使用 MM 算法通过最大似然法拟合模型,并采用拉普拉斯平滑( α = 1 α = 1 α=1),得到均值为零的中心化强度参数 { β i } \{β_i\} {βi}。将得到的强度参数线性缩放到 [0, 100] 范围内,以获得每个系统的最终排名得分:

S i = β i − β m i n β m a x − β m i n × 100 (2) S_i=\frac{\beta_i-\beta_{min}}{\beta_{max}-\beta_{min}}\times 100 \tag{2} Si=βmaxβminβiβmin×100(2)

总体而言,该基准测试对智能体交付高质量成果以完成复杂、真实世界任务的能力进行了系统且可复现的评估。我们在以下实验中使用该基准测试来评估不同的设置。

4.Experiments

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐