#沙箱agent与skills的疑问

5 messages · Page 1 of 1 (latest)

mystic skiff
#

多agent配置下的沙箱agent如何禁用掉位于.openclaw/skills下的技能呢,毕竟沙箱环境只能读取自己的工作区,无法去读上级目录,不需要携带全局skills到上下文,这样会浪费token,且没有意义

near sealBOT
#

我先去源码里确认一下,别瞎猜配置名。

#

可以,但不是用“沙箱专用开关”做的,而是用 agent 级 skill 白名单

最直接的是给这个沙箱 agent 配:

{
  agents: {
    list: [
      {
        id: "sandbox-agent",
        sandbox: { enabled: true },
        skills: [], // 这个 agent 完全不暴露任何 skill
      },
    ],
  },
}
#

如果只想保留少数几个:

{
  agents: {
    list: [
      {
        id: "sandbox-agent",
        sandbox: { enabled: true },
        skills: ["docs-search"],
      },
    ],
  },
}

关键点有 4 个:

#
  1. ~/.openclaw/skills 仍然是固定扫描根之一,目前没有看到“只对某个 agent 禁扫这个目录” 的配置。
  2. agents.list[].skills 会作用到 prompt 构建、sandbox sync、skills snapshot
    也就是,不在白名单里的 skill 不会进上下文,也不会被同步进 sandbox
  3. skills.allowBundled 只限制 bundled skills不影响 ~/.openclaw/skills
  4. skills.entries.<name>.enabled: false全局禁用某个 skill,不是只禁某个沙箱 agent。

另外你担心的 token 这点,文档里写得挺明确的:默认注入的是 eligible skills 的精简列表,不是把所有 SKILL.md 内容都塞进去。所以只要你给沙箱 agent 配了 skills: [] 或精确白名单,~/.openclaw/skills 里的其他技能不会白白占上下文。

更干净的做法我会建议:

  • 共享技能不要全丢 ~/.openclaw/skills
  • 需要隔离的 agent,把技能放它自己的 workspace/skills
  • 多 agent 共用但不是全局共用的,放 ~/.agents/skills 或对应 workspace 的 .agents/skills

文档: