Skip to main content
技能中心是一个 技能 的目录,用户可以在应用内浏览并安装。技能本质上是一个文件夹,其中的 SKILL.md 告诉智能体如何完成某件事,另外还可以附带脚本等文件;有了技能中心,用户无需克隆仓库,也无需知道这些文件该放在哪里。 安装并不等于装配给智能体。安装只是把该技能加入用户自己的技能资源池,装配是另一个独立步骤:
1

安装到资源池

用户在卡片上读完 SKILL.md 后直接安装,无需填写任何内容。所有中心汇入同一个资源池,装完之后就不必再关心它来自哪个来源。
2

装配给智能体的工作区

在会话中,用户从资源池里挑选,把技能解压到这个智能体的 工作区,智能体从此便可以遵照它执行。
资源池属于用户,而不属于某一次会话,因此安装一次可以装配到任意多个工作区。此外,本地文件夹也可以直接上传到工作区,无论它是否来自某个中心。

内置的技能中心

AgentScope 目前内置一个技能中心,其他来源都可以通过 自定义技能中心 接入: ClawSkillHub 不传任何参数即可使用,下列字段均有默认值:
配置 ClawSkillHub

快速上手

1

启动智能体服务

技能中心是 智能体服务 的能力之一,因此需要先跑起一个服务和一个前端。请按照 智能体服务快速上手 的步骤,同时启动仓库自带的 examples/agent_service 后端与 examples/web_ui 前端。
2

注册技能中心

通过 skill_hubs 参数把中心传给 create_app,路由、市场页面与安装流程都会随之启用:
注册一个技能中心
也可以注册多个,让用户在不同目录之间切换,各自使用独立的 hub_id
两个技能中心使用同一个 hub_id 时,服务会在启动阶段直接报错,而不是静默覆盖其中一个。
3

浏览并安装

重启服务后打开前端的 Skill 页面。侧边栏列出已注册的各个中心,以及用户自己的资源池 Installed skills。选中一个中心,搜索,点开卡片即可先阅读它的 SKILL.md 再决定。
浏览技能中心

在 Skill 页面浏览一个技能中心。

点击 Install 即刻加入用户的资源池,无需填写任何内容。安装好的技能都汇总在 Installed skills 中:
已安装的技能

用户已安装的技能。

4

装配给智能体

打开一个会话,展开 Skill 面板,点击 Add,两个标签页覆盖了两种来源:
把技能装配给智能体

从资源池或本地文件夹把技能装配给智能体。

上传有额度限制,避免单个用户占满工作区:最多 100 个文件,单文件不超过 50 MB,总计不超过 500 MB。若文件夹名称已被占用,新技能会以带数字后缀的名称安装,而不会覆盖原有内容。
装配一个已安装的技能时,其文件是在那一刻从中心拉取的,因为安装只保存技能的描述信息,而不保存文件副本。如果此时中心不可达,该技能会连同原因单独报错,同一请求中的其他技能照常装配成功。

自定义技能中心

继承 SkillHubBase 就能把任意技能目录接成一个中心。需要实现三个方法,分别用于浏览、获取单个条目,以及提供压缩包:
接入内部目录的中心
另有三点决定了中心的行为: 压缩包中应包含技能所在的文件夹,且根目录带有 SKILL.md:既可以是单个顶层目录,也可以直接是这些文件。两种结构都能识别,该文件夹会被重命名为所安装技能的名称。

按用户控制可见性

三个方法的第一个参数都是 user_id,因此同一个目录不必对所有人呈现相同的内容。基于它做筛选,即可实现按团队区分的白名单、依据计费系统的权限开放付费条目,或者让草稿技能只对作者可见:
因用户而异的目录
download 之所以也接收 user_id,正是为了这个场景,因此它同样要应用相同的筛选。仅仅让条目不出现在列表里并不构成访问控制:get_skilldownload 都可以用任意猜到的 id 直接请求。

复用同一个 HTTP 客户端

中心实例的生命周期与服务同长,因此可以持有一个连接池,而不必每次请求都新建。实现异步上下文管理器的两个方法即可,服务会在启动时进入每个中心,并在关闭时退出:
打开与关闭共享客户端

延伸阅读

MCP 中心

面向 MCP 服务的同类能力。

Skill

智能体如何发现并遵照一个技能执行。