Skip to Content
👋 欢迎来到 HowToUseMoltbot 快速入门
网关Sandbox vs Tool Policy vs Elevated 沙箱对比

沙箱 vs 工具策略 vs 提升权限

Moltbot 有三类相关但不同的控制:

  1. 沙箱agents.defaults.sandbox.* / agents.list[].sandbox.*)决定工具在哪运行(Docker 还是宿主机)。
  2. 工具策略tools.*tools.sandbox.tools.*agents.list[].tools.*)决定哪些工具可用/允许
  3. 提升权限tools.elevated.*agents.list[].tools.elevated.*)是仅对 exec 的逃生口,在沙箱内时可在宿主机上执行。

快速调试

用检查器查看 Moltbot 实际在做什么:

moltbot sandbox explain moltbot sandbox explain --session agent:main:main moltbot sandbox explain --agent work moltbot sandbox explain --json

会输出:

  • 当前沙箱模式/作用域/工作区访问
  • 当前会话是否在沙箱中(main 与非 main)
  • 当前沙箱工具允许/拒绝(以及来自 agent/全局/默认)
  • 提升权限门控及修复用配置路径

沙箱:工具在哪运行

沙箱由 agents.defaults.sandbox.mode 控制:

  • "off":全部在宿主机运行。
  • "non-main":仅非 main 会话进沙箱(群组/频道常见「意外」)。
  • "all":全部进沙箱。

完整矩阵(作用域、工作区挂载、镜像)见 沙箱

绑定挂载(安全速查)

  • docker.binds 穿透沙箱文件系统:你挂载的内容会按你设置的模式(:ro:rw)在容器内可见。
  • 省略模式时默认为读写;对源码/密钥建议用 :ro
  • scope: "shared" 会忽略每 agent 的 binds(仅全局 binds 生效)。
  • 挂载 /var/run/docker.sock 相当于把宿主机控制权交给沙箱;仅在有意时使用。
  • 工作区访问(workspaceAccess: "ro"/"rw")与 bind 模式无关。

工具策略:哪些工具存在/可调用

有两层:

  • 工具 profiletools.profileagents.list[].tools.profile(基础允许列表)
  • Provider 工具 profiletools.byProvider[provider].profileagents.list[].tools.byProvider[provider].profile
  • 全局/每 agent 工具策略tools.allow/tools.denyagents.list[].tools.allow/agents.list[].tools.deny
  • Provider 工具策略tools.byProvider[provider].allow/denyagents.list[].tools.byProvider[provider].allow/deny
  • 沙箱工具策略(仅沙箱内生效):tools.sandbox.tools.allow/tools.sandbox.tools.denyagents.list[].tools.sandbox.tools.*

经验法则:

  • deny 优先。
  • allow 非空,其余均视为禁止。
  • 工具策略是硬限制:/exec 无法覆盖被拒绝的 exec 工具。
  • /exec 只改变已授权发件人的会话默认;不会授予工具访问权。Provider 工具键可接受 provider(如 google-antigravity)或 provider/model(如 openai/gpt-5.2)。

工具组(简写)

工具策略(全局、agent、沙箱)支持 group:* 条目,会展开为多个工具:

{ tools: { sandbox: { tools: { allow: ["group:runtime", "group:fs", "group:sessions", "group:memory"] } } } }

可用组:

  • group:runtimeexecbashprocess
  • group:fsreadwriteeditapply_patch
  • group:sessionssessions_listsessions_historysessions_sendsessions_spawnsession_status
  • group:memorymemory_searchmemory_get
  • group:uibrowsercanvas
  • group:automationcrongateway
  • group:messagingmessage
  • group:nodesnodes
  • group:moltbot:所有内置 Moltbot 工具(不含 provider 插件)

提升权限:仅 exec 的「在宿主机运行」

提升权限不会多给工具;只影响 exec

  • 若你在沙箱中,/elevated on(或带 elevated: trueexec)会在宿主机运行(可能仍需审批)。
  • 使用 /elevated full 可跳过该会话的 exec 审批。
  • 若你本来就在宿主机直接运行,提升权限相当于无操作(仍受门控)。
  • 提升权限按 skill 作用域,不会覆盖工具的 allow/deny。
  • /exec 与提升权限是分开的;它只调整已授权发件人的每会话 exec 默认。

门控:

  • 启用:tools.elevated.enabled(及可选 agents.list[].tools.elevated.enabled
  • 发件人白名单:tools.elevated.allowFrom.<provider>(及可选 agents.list[].tools.elevated.allowFrom.<provider>

详见 提升权限模式

常见「沙箱困住」修复

「工具 X 被沙箱工具策略阻止」

修复用配置(任选其一):

  • 关闭沙箱:agents.defaults.sandbox.mode=off(或每 agent agents.list[].sandbox.mode=off
  • 在沙箱内允许该工具:
    • tools.sandbox.tools.deny(或每 agent agents.list[].tools.sandbox.tools.deny)中移除
    • 或加入 tools.sandbox.tools.allow(或每 agent allow)

「我以为是 main,为什么在沙箱里?」

"non-main" 模式下,群组/频道会话键不是 main。使用 main 会话键(由 sandbox explain 显示)或将模式改为 "off"

最后更新于: