本页内容
本页内容
网关
配置——代理沙箱
agents.defaults.sandbox 完整:嵌入式代理的图像选择、工作区模式、安装和网络策略。
agents.defaults.sandbox
嵌入式代理的可选沙箱。完整指南请参见 沙箱。
上面显示的默认值 (off/docker/agent/none/bookworm-slim image/none network/etc.) 是实际的 OpenClaw 默认值,而不仅仅是说明性值。
沙盒详情
后端:
docker:本地 Docker 运行时(默认)openshell:OpenShell-托管本地或远程运行时podman:使用 Docker- 兼容设置的本地 Podman 运行时ssh:通用SSH-支持的远程运行时
插件管理的后端在其插件条目下保留运行时特定的设置:
- OpenShell:
plugins.entries.openshell.config;参见 OpenShell
SSH 后端配置:
target: 形如user@host[:port]的 SSH 目标command: SSH 客户端命令(默认:ssh)workspaceRoot: 用于每个作用域工作区的绝对远程根目录(默认:/tmp/openclaw-sandboxes)identityFile/certificateFile/knownHostsFile: 传递给 OpenSSH 的现有本地文件identityData/certificateData/knownHostsData:内联内容或 OpenClaw 在运行时具体化到临时文件中的 SecretRefsstrictHostKeyChecking/updateHostKeys: OpenSSH 主机密钥策略选项(两者默认均为true)
SSH 认证优先级:
identityData优先于identityFilecertificateData优先于certificateFileknownHostsData优先于knownHostsFile- 基于 SecretRef 的
*Data值会在沙箱会话开始前从活动 secrets 运行时快照中解析
SSH 后端行为:
- 在创建或重新创建后会先播种一次远程工作区
- 然后使用远程 SSH 工作区作为事实来源
- 通过 SSH 路由
exec、文件工具和媒体路径 - 不会自动把远程更改同步回宿主机
- 不支持沙箱浏览器容器
工作区访问:
none: 每个作用域的沙箱工作区位于~/.openclaw/sandboxes下(默认)ro: 沙箱工作区位于/workspace,代理工作区以只读方式挂载到/agentrw:代理工作区安装在/workspace处的 read/write
作用域:
session:每会话一个容器 + 工作区agent:每个代理一个容器 + 工作区(默认)shared:共享容器和工作区(无跨会话隔离)
OpenShell 插件配置:
OpenShell 模式:
mirror:执行前从本地远程播种,执行后同步回;本地工作空间仍然是事实的来源remote:创建沙箱时远程播种一次,然后使用远程工作区作为事实来源
在 remote 模式下,在 OpenClaw 外部进行的主机本地编辑不会在种子步骤后自动同步到沙箱中。将 SSH 传输到 OpenShell 沙箱中,但该插件拥有沙箱生命周期和可选的镜像同步。 workspace 为整个插件选择现有的 OpenShell 控制平面工作区;它与代理的文件系统工作区分开。 policy 必须指向 OpenClaw 网关可读的 YAML 文件,而不是命名策略 ID。请参阅 OpenShell 了解设置、先决条件和故障排除。
setupCommand 在容器创建后运行一次(通过 sh -lc)。需要网络外联、可写 root、root 用户。
Containers 默认为 network: "none" — 如果代理需要出站访问,则设置为 "bridge"(或自定义桥接网络)。 "host" 已被阻止。默认情况下,"container:<id>" 会被阻止,除非您明确设置 sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true (break-glass)。 Codex 应用程序服务器打开活动的 OpenClaw 沙箱,使用相同的出口设置进行本机代码模式网络访问。
入站附件 会被暂存到当前工作区中的 media/inbound/*。
docker.binds 会挂载额外的宿主目录;全局和逐代理的 binds 会合并。
沙盒浏览器(sandbox.browser.enabled,默认false):容器中的Chromium + CDP。 openclaw.json 中不需要 browser.enabled。 noVNC 观察者访问受密码保护,并通过一次性、经过身份验证的引导程序 URL 进行代理。观察者 URL 被故意从模型可见的系统提示上下文中省略。
allowHostControl: false(默认)会阻止沙箱会话定位宿主机浏览器。network默认为openclaw-sandbox-browser(专用 bridge 网络)。仅当你明确需要全局 bridge 连接时才设置为bridge。由于 CDP 端口必须发布到宿主机,因此不支持"none";"host"同样被阻止。升级时,openclaw doctor --fix会禁用受持久化"none"值影响的 sidecar,并恢复专用网络,而不会在不知情的情况下启用出站访问。cdpSourceRange可选地将容器边缘的 CDP 入站连接限制为某个 CIDR 范围(例如172.21.0.1/32)。sandbox.browser.binds仅将额外的宿主目录挂载到沙箱浏览器容器中。设置后(包括[]),它会替换浏览器容器的docker.binds。- 沙箱浏览器容器中的 Chromium 始终以
--no-sandbox --disable-setuid-sandbox启动(容器不具备 Chrome 自有沙箱所需的内核原语);没有用于此设置的配置开关。 - 启动默认值在
scripts/sandbox-browser-entrypoint.sh中定义,并针对容器主机进行了调整: --remote-debugging-address=127.0.0.1--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>--user-data-dir=${HOME}/.chrome--no-first-run--no-default-browser-check--disable-dev-shm-usage--disable-background-networking--disable-breakpad--disable-crash-reporter--no-zygote--metrics-recording-only--password-store=basic--use-mock-keychain--disable-3d-apis、--disable-gpu和--disable-software-rasterizer默认启用;如果 WebGL/3D 使用需要,可通过OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0禁用它们。--disable-extensions(默认启用);如果你的工作流依赖扩展,可通过OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0重新启用扩展。--renderer-process-limit=2默认启用;可通过OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>更改,设为0可使用 Chromium 的默认进程限制。--headless=new仅当headless使能时。- 默认值为容器镜像基线;如需更改容器默认值,请使用带自定义入口点的自定义浏览器镜像。
沙箱浏览器需要 Docker 引擎。sandbox.docker.binds 同时适用于 Docker 和 Podman 后端。
构建镜像(从源码检出构建):
对于没有源签出的 npm 安装,请参阅 沙箱§图像和设置 以了解内联 docker build 命令。