沙箱 CLI
管理沙箱运行时,用于隔离的代理执行:Docker/Podman 容器、SSH 目标或 OpenShell 后端。
openclaw agent exec 会保留由继承的配置或 --config 选择的沙箱,包括其执行路由。在没有配置沙箱的情况下,其默认值允许在 Gateway 主机上完全执行,并将文件系统工具限制为 --cwd。--isolated 和 --auth-env-only 会跳过配置继承并使用这些默认值。
命令¶
openclaw sandbox list¶
列出沙箱运行时,包括状态、后端、配置匹配、年龄、空闲时间以及关联的会话/代理。
对于配置的插件提供的后端(如 OpenShell),CLI 会在检查实时运行时状态之前加载所属的后端插件。仅浏览器操作不需要激活后端插件。
openclaw sandbox list
openclaw sandbox list --browser # browser containers only
openclaw sandbox list --json
openclaw sandbox recreate¶
移除沙箱运行时,以强制根据当前配置重建。代理下次使用时将自动重建运行时。
openclaw sandbox recreate --all
openclaw sandbox recreate --agent mybot # includes agent:mybot:* sub-sessions
openclaw sandbox recreate --session "agent:main:main"
openclaw sandbox recreate --browser --all # only browser containers
openclaw sandbox recreate --all --force # skip confirmation
选项:
--all:重建所有沙箱容器--session <key>:使用此确切的作用域键(如sandbox list所示)重建运行时;不进行短名称扩展--agent <id>:为一个代理重建运行时(匹配agent:<id>和agent:<id>:*)--browser:仅影响浏览器容器--force:跳过确认提示
必须且只能传入 --all、--session 或 --agent 之一。
限定作用域的重建会在检查后端之前选择注册表条目。另一个 Podman 连接上的无关运行时或不可用的后端不会阻止 --session 或 --agent。所选运行时仍然要求其记录的目标处于活动状态且可访问;--force 仅跳过确认提示。仅浏览器的重建不会检查常规沙箱运行时。
当记录的 Podman 目标不同时,未限定作用域的 sandbox list 仍可能无法通过其目标检查。请恢复受影响运行时的原始连接,使用其已知的确切作用域键配合 recreate --session,并在确认前查看预览。如果你不知道确切的作用域,请保持注册表完整;不要猜测键、扩大为 --all,或重写其记录的目标以绕过验证。
对于 ssh 和 OpenShell remote,重建比 Docker 更重要:初始种子之后远程工作区即是规范工作区,recreate 会删除该所选作用域下的规范远程工作区,而下次运行会从当前本地工作区重新播种。
openclaw sandbox explain¶
检查有效的沙箱模式/作用域/工作区访问权限、沙箱工具策略,以及提权工具门槛(包含修复建议的配置键路径)。
报告将 workspaceRoot 保留为配置的沙箱根目录,并单独显示有效的主机工作区、后端运行时工作目录和 Docker 挂载表。对于 workspaceAccess: "rw",有效的主机工作区是代理工作区,而不是 workspaceRoot 下方的目录。
openclaw sandbox explain
openclaw sandbox explain --session agent:main:main
openclaw sandbox explain --agent work
openclaw sandbox explain --json
与 recreate --session 不同,此命令接受简短的会话名称(例如 main),并针对已解析的代理进行扩展。对于没有隐式所有者的多代理集群,显式的 --agent 就足够了;沙箱解释不要求也不猜测默认所有者。
为什么需要重建¶
更新沙箱配置不会影响正在运行的容器:现有运行时保留其旧设置,闲置运行时仅在 prune.idleHours(默认 24 小时)后被清理。经常使用的代理可能会让过时的运行时无限期存活。openclaw sandbox recreate 会移除旧运行时,以便下次使用时根据当前配置重建。
Tip
建议优先使用 openclaw sandbox recreate,而不是手动进行后端特定的清理。它使用 Gateway 的运行时注册表,并在作用域或会话键发生变化时避免不匹配。
常见触发条件¶
在以下任何更改之后运行 openclaw sandbox recreate --all:
- 容器沙箱镜像更新:
agents.defaults.sandbox.docker.image - 沙箱配置:
agents.defaults.sandbox.* - SSH 目标/认证:
agents.defaults.sandbox.ssh.{target,workspaceRoot,identityFile,certificateFile,knownHostsFile,identityData,certificateData,knownHostsData} - OpenShell 源/策略/模式:
plugins.entries.openshell.config.{from,mode,policy} setupCommand—--agent <id>重建一个代理,而不是全部
Note
代理下次使用时,运行时将自动重建。
注册表迁移¶
沙箱运行时元数据存储于共享的 SQLite 状态数据库中。较旧的安装可能包含遗留的注册表文件,常规读取不再重写这些文件:
~/.openclaw/sandbox/containers.json~/.openclaw/sandbox/browsers.json- 每个容器/浏览器在
~/.openclaw/sandbox/containers/或~/.openclaw/sandbox/browsers/下有一个 JSON 分片
运行 openclaw doctor --fix 可将有效的遗留条目迁移到 SQLite。无效的遗留文件会被隔离,因此损坏的旧注册表无法隐藏当前的运行时条目。
配置¶
沙箱设置位于 ~/.openclaw/openclaw.json 中的 agents.defaults.sandbox 下(按代理覆盖项位于 agents.entries.*.sandbox):
{
"agents": {
"defaults": {
"sandbox": {
"mode": "all", // off, non-main, all
"backend": "docker", // docker, podman, ssh; openshell is plugin-provided
"scope": "agent", // session, agent, shared
"docker": {
"image": "openclaw-sandbox:bookworm-slim",
"containerPrefix": "openclaw-sbx-",
// ... more Docker options
},
"prune": {
"idleHours": 24, // auto-prune after 24h idle
"maxAgeDays": 7, // auto-prune after 7 days
},
},
},
},
}
相关¶
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw