Skip to content

共享智能体技能让你可以从 Git 仓库安装技能,或从宿主上受支持的智能体导入技能,供本地 沙箱使用。sbx 把已安装的技能保存在一个持久化存储中,该存储在沙箱被删除后依然 保留,并默认与运行受支持智能体的新沙箱共享。

NOTE

共享智能体技能是实验性功能。

从仓库添加技能 ​

添加 Git 仓库中的全部技能:

console
$ sbx skills add anthropics/skills

该仓库必须包含一个或多个有效的 SKILL.md 文件。你可以使用 GitHub 的 owner/repository 简写形式,也可以使用 Git URL,包括 HTTPS 和 SSH URL。

要添加特定技能,为每个名称使用 --skill,或传入一个以逗号分隔的列表:

console
$ sbx skills add https://github.com/anthropics/skills --skill frontend-design --skill pdf

当同名的技能已经安装时,sbx 会在替换前提示确认。使用 --force 可以不经提示直接 替换已有技能。

管理已安装的技能 ​

列出共享存储中的技能:

console
$ sbx skills ls

更新从某个仓库安装的全部技能:

console
$ sbx skills update

要更新特定技能,传入一个或多个名称:

console
$ sbx skills update frontend-design pdf

sbx skills update 只刷新通过 sbx skills add 安装的技能。要刷新从宿主导入的技能, 请重新运行 sbx skills import。要用 sbx skills update 管理它,请改为从仓库安装。

移除一个或多个已安装的技能:

console
$ sbx skills rm frontend-design pdf

移除正在被运行中的智能体使用的技能时,sbx 会要求确认。在脚本中使用 --force 可以跳过确认。

从宿主导入技能 ​

预览 sbx 找到的技能,但不复制它们:

console
$ sbx skills import --dry-run

预览会按以下顺序扫描宿主来源。下表同时显示受支持的智能体在沙箱内读取共享存储的 位置:

智能体宿主来源沙箱挂载目标
Codex and Devin~/.agents/skills/home/agent/.agents/skills
Claude Code~/.claude/skills/home/agent/.claude/skills
OpenCode~/.config/opencode/skills/home/agent/.config/opencode/skills
Copilot~/.copilot/skills/home/agent/.copilot/skills
Cursor~/.cursor/skills/home/agent/.cursor/skills
Droid~/.factory/skills/home/agent/.factory/skills

无论来源如何,所有导入的技能都会进入同一个存储。如果多个来源包含同名目录的技能, 则以表中靠前来源的技能为准,sbx 会就其余的给出警告。

把技能复制到共享存储:

console
$ sbx skills import

导入会复制每个技能目录,包括通过来源顶层符号链接访问到的目录。它会跳过技能目录 内部的符号链接,以及来源目录中的散落文件。如果某个技能依赖被链接的文件,请在导入 前把这些链接替换为实际文件。

最终输出会报告共享存储路径。默认位置如下:

平台共享存储路径
macOS~/Library/Application Support/com.docker.sandboxes/sandboxes/agent-skills
Linux~/.local/state/sandboxes/sandboxes/agent-skills
Windows%LOCALAPPDATA%\DockerSandboxes\sandboxes\state\agent-skills

在 Linux 上,当设置了 XDG_STATE_HOME 时,sbx 使用 $XDG_STATE_HOME/sandboxes/sandboxes/agent-skills。

当存储中已存在同名技能时,sbx 会在替换前提示确认。使用 --force 可以不经提示 直接替换已有技能。导入会替换整个技能目录,而不是合并文件。想从宿主导入更新时, 请再次运行导入命令。如果某次导入替换了从仓库安装的技能,sbx 就不再把该技能与其 仓库关联,因此 sbx skills update 不会刷新它。

共享存储的行为 ​

运行 sbx reset 会清空共享存储。

为受支持的智能体创建的沙箱,默认以只读方式挂载共享存储。这些沙箱每次启动时都会 挂载该存储的内容,因此你可以在创建沙箱之前或之后安装技能。

使用 sbx run 或 sbx create 配合 --skills,在创建沙箱时选择访问模式:

  • readonly:以智能体可读取技能但无法修改的方式挂载存储。
  • readwrite:以智能体可读取和修改共享技能的方式挂载存储。
  • off:不挂载共享存储。

例如,创建一个不使用共享存储的沙箱:

console
$ sbx run --skills=off claude

要改变未来沙箱的默认值,把 skills.defaultMode 设置为 off、 readonly 或 readwrite:

console
$ sbx settings set skills.defaultMode readonly

该模式仅在创建沙箱时生效。升级 sbx 或修改 skills.defaultMode 不会改变已有沙箱 的挂载。要改变某个沙箱的模式,请删除并重新创建它。未启用共享技能的沙箱同样需要 重新创建才能挂载该存储。

WARNING

拥有 readwrite 访问权限的沙箱可以修改其他沙箱加载的技能,包括以 readonly 访问权限加载的沙箱。只读访问可以阻止该沙箱写入,但并不能把它与对存储的变更隔离 开来。该存储是沙箱专用的状态,因此仅凭这一点并不会让被修改的技能在你的宿主上 执行。创建沙箱时使用 --skills=off 可以让它留在这个共享信任边界之外。

有些智能体会在会话开始时扫描技能。如果已安装的技能在已有会话中没有出现,请另开 一个智能体会话。