使用AgentSphere智能体沙箱部署OpenClaw
操作场景
随着AI Agent在企业业务中的广泛应用,开发者需要一个安全、隔离的运行环境来部署和调试AI Agent应用。OpenClaw是一款开源的AI Agent网关,支持通过即时通讯软件与大模型进行对话交互,适用于智能客服、企业内部助手等场景。然而,直接在本地或生产服务器上运行OpenClaw存在安全风险和资源管理困难——Agent应用可能执行不可预测的代码操作,与宿主环境共享资源也容易引发冲突。
AgentSphere是华为云提供的AI Agent沙箱运行平台,能够为AI Agent提供安全隔离的代码执行环境。通过将OpenClaw部署在AgentSphere的沙箱中,既可以利用OpenClaw的Agent网关能力,又能借助沙箱的隔离机制保障宿主环境安全。
本文介绍如何在AgentSphere中创建OpenClaw沙箱实例,包括制作自定义镜像、通过E2B SDK创建沙箱以及在浏览器中访问OpenClaw的完整流程。
原理说明
在AgentSphere中创建OpenClaw的整体方案架构如下,分为镜像制作、沙箱创建和访问三个阶段:
- 镜像制作阶段:以OpenClaw官方镜像为基础,注入OpenClaw配置文件,构建自定义镜像,并使用该自定义镜像创建沙箱模板。
- 沙箱模板创建阶段:AgentSphere以自定义镜像为基础,自动注入ENVD,并完成设置健康检查、挂载外部存储等操作,构建出可以快速启动的模板快照。
- 沙箱创建阶段:通过E2B SDK调用AgentSphere的沙箱服务API,指定沙箱模板创建沙箱实例。
- 访问阶段:沙箱创建成功后,通过浏览器访问模板对应的网关域名,并在Header中注入沙箱身份认证信息,即可成功访问沙箱内的OpenClaw服务,进入OpenClaw对话界面。
前提条件
准备一个AgentSphere网关实例,并获取网关的公网访问域名。详情请参见创建网关实例。
阶段一:制作自定义镜像
本阶段以OpenClaw官方镜像为基础,集成ENVD守护进程和启动脚本,构建自定义Docker镜像并推送至SWR镜像仓库。
准备OpenClaw基础镜像
OpenClaw官方提供了基础Docker镜像,自定义镜像将以此为基础进行构建。
- 在本地或构建服务器上执行以下命令,拉取OpenClaw最新镜像。
docker pull ghcr.io/openclaw/openclaw:latest
- 验证镜像拉取成功。
docker images | grep openclaw
回显结果中能看到ghcr.io/openclaw/openclaw且TAG为latest,说明镜像拉取成功。
准备OpenClaw配置文件
OpenClaw启动时需要读取openclaw.json配置文件,用于定义Agent工作空间、消息渠道等运行参数。
- 创建openclaw.json文件,示例配置如下:
{ "gateway": { "bind": "lan", "mode": "local", "port": 18789, "auth": { "mode": "token", "token": "testgatewaytoken" }, "trustedProxies": [ "127.0.0.1", "169.254.169.0/24" ], "allowRealIpFallback": true, "controlUi": { "allowedOrigins": [ "http://localhost:18789", "http://127.0.0.1:18789", "https://<your-sandbox-url>.huaweicloud-agentnetwork.com" ], "allowInsecureAuth": true, "dangerouslyDisableDeviceAuth": true, "enabled": true } }, "agents": { "defaults": { "workspace": "~/.openclaw/workspace" }, "list": [ { "id": "default", "name": "OpenClaw Assistant", "workspace": "~/.openclaw/workspace" } ] }, "cron": { "enabled": false } }配置参数说明:
参数
说明
示例值
agents.defaults.workspace
Agent工作空间目录路径,用于存储Agent运行时产生的文件和数据。
~/.openclaw/workspace
gateway.bind
设置为 lan 表示网关将监听局域网内的所有可用 IP 地址,而不仅仅是本地回环地址。这意味着也可以从沙箱外部访问OpenClaw。
lan
gateway.auth.mode
采用Token(令牌)认证方式。客户端在发起请求时,必须在请求头(如Authorization: Bearer <token>)中提供正确的令牌,否则会被拒绝。
token
gateway.auth.token
这是实际用于验证的Token(令牌)字符串。
testgatewaytoken
gateway.trustedProxies
受信任的代理列表。
[ "127.0.0.1", "169.254.169.0/24" ]
gateway.controlUi.allowedOrigins
允许的来源域名列表(CORS配置)。出于安全考虑,浏览器会限制跨域请求。这个列表指定了哪些域名可以访问OpenClaw的前端控制界面。
填写对应的AgentSphere网关实例域名
格式为:
https://<your-sandbox-url>.huaweicloud-agentnetwork.com
gateway.controlUi.allowInsecureAuth
允许在没有HTTPS加密的情况下进行认证交互。在本地开发或非信任网络中方便使用,但在公网环境下极不安全,容易被中间人攻击窃取Token。本文中的设置仅作为示例。
true
- 如需配置大模型对话能力,请在配置文件中补充模型相关参数。
详细配置方法请参考OpenClaw官方文档:https://docs.openclaw.ai/gateway/configuration
编写Dockerfile并构建镜像
自定义镜像需要在OpenClaw基础镜像上加入自定义的配置文件。
- 在构建目录下创建Dockerfile文件,内容如下:
FROM ghcr.io/openclaw/openclaw:latest RUN mkdir -p /home/node/.openclaw/workspace chown -R node:node/home/node/.openclaw/workspace COPY --chown=node:node openclaw.json /home/node/.openclaw/openclaw.json
- 执行以下命令构建自定义镜像。
docker build -t openclaw-custom:latest .
- 建议在推送前本地运行验证。
docker run --rm -p 49983:49983 openclaw-custom:latest
启动日志中出现“[gateway] ready”,OpenClaw网关正常启动。
推送镜像到SWR
构建并验证通过后,需要将镜像推送到华为云容器镜像服务(SWR),供创建沙箱模板时使用。
以基础版SWR为例,步骤如下:
- 登录SWR控制台,选择左侧导航栏的“组织管理”,单击页面右上角的“创建组织”,创建一个组织。
如已有组织可跳过此步骤。
- 在左侧导航栏选择“我的镜像”,单击右侧“客户端上传”,在弹出的页面中单击“生成登录指令”,单击
复制临时登录指令。 - 在集群节点上执行上一步复制的登录指令,登录成功会显示“Login Succeeded”。
- 给镜像打上SWR标签。
docker tag openclaw-custom:latest swr.<region>.myhuaweicloud.com/<namespace>/openclaw-custom:latest
其中,swr.<region>.myhuaweicloud.com为镜像仓库地址可在SWR控制台上查询,登录指令中末尾的域名即为镜像仓库地址;<namespace>为SWR中已创建的组织名称。
- 推送镜像到 SWR:
docker push swr.<region>.myhuaweicloud.com/<namespace>/openclaw-custom:latest
推送完成后,可在SWR控制台对应组织的镜像列表中查看到该镜像。
阶段二:创建自定义模板并实例化沙箱
本阶段在AgentSphere控制台创建自定义沙箱模板,获取API Key,然后通过E2B-SDK创建沙箱实例并注入OpenClaw配置。
创建自定义沙箱模板
本步骤基于上一步推送至SWR的自定义镜像创建AgentSphere沙箱模板。
- 登录AgentSphere控制台。
- 在左侧导航栏中选择“沙箱模板”,并单击右上角的“创建沙箱模板”。
- 填写基础配置。
参数
参数说明
示例
沙箱模板名称
自定义名称,需以小写字母开头,以小写字母或数字结尾,可以包含小写字母、数字和中划线,长度为1-48个字符。
openclaw-test
描述
您可以添加该沙箱模板的描述信息,最多1000字符。
-
选择镜像
单击选择镜像,选择SWR中的自定义镜像。
选择上一步已推送的镜像
资源规格
选择沙箱实例使用的CPU和内存配比。资源配额过小可能导致沙箱运行失败,过大则导致资源浪费。
2vCPUs
8GiB内存
启动命令
沙箱实例启动时执行的命令。此处可留空。
node /app/openclaw.mjs gateway
就绪检查命令
用于检测沙箱实例是否就绪。
curl -sf http://localhost:18789/healthz
环境变量
通过键值对为沙箱设置环境变量。
键:OPENCLAW_CONFIG_PATH
值:/home/node/.openclaw/openclaw.json
图2 基础配置示例
- 填写网络与权限配置。
参数
参数说明
示例
入站(Inbound)网关
入站网关用于接收外部请求,配置后可通过网关访问沙箱内的服务。
如果没有可选网关,请单击“新建入站网关实例”进行创建,完成创建后单击刷新按钮。
必填,浏览器可通过网关域名访问OpenClaw。
选择已有网关实例
出站(Outbound)网络配置
选择公网模式(沙箱可通过公网对外访问,适用于调用第三方API、下载依赖等场景)或VPC模式(沙箱访问VPC内其他服务)。
公网模式(OpenClaw需访问外部大模型API)
- 填写日志配置(可选)。建议开启日志对接LTS,方便后续排查问题。
- 填写高级配置,开启健康检查,探测沙箱内业务进程存活状态,以判断运行中的沙箱实例是否可用。 本文中选择使用“HTTP请求检查”,并设置openclaw的健康检查端口为18789:/healthz,协议为HTTP。图3 设置openclaw的健康检查端口18789:/healthz
- 完成上述配置后,单击“创建”。
模板创建成功后,在模板列表中记录沙箱模板ID,后续创建沙箱时需要使用。
获取API Key
API Key是调用AgentSphere API和SDK的认证凭证,所有通过API或SDK操作沙箱资源的请求均需携带API Key进行身份鉴权。
- 登录AgentSphere控制台。
- 在左侧导航栏中选择“API Key管理”,并单击右上角的“创建API Key”。
- 设置API Key参数。
参数
参数说明
有效期
根据需求设置API Key的有效期,过期后该API Key将不可用。
描述
您可以添加该API Key的描述信息。
- 单击“确定”,系统将自动为您生成API Key。
为保障安全,生成的API Key将仅显示一次,请务必保存,关闭该页面后将无法再次查看。
您可以单击“下载API Key凭证”将API Key保存至本地。
使用E2B SDK创建沙箱
完成自定义模板和API Key准备后,通过E2B SDK的Python接口创建沙箱实例,并将OpenClaw配置文件注入沙箱。
- 确保本地已安装E2B SDK和满足版本要求的Python,版本要求详见e2b-code-interpreter。若未安装SDK,请执行以下命令安装:
pip install e2b==2.42.0 pip install e2b-code-interpreter==2.9.1
- 创建Python脚本create_sandbox.py,内容如下:
import os from e2b_code_interpreter import Sandbox from time import sleep # ====== 请替换为AgentSphere控制台获取的真实值 ====== E2B_SANDBOX_URL = "https://<your-sandbox-url>.huaweicloud-agentnetwork.com" E2B_API_URL = "https://agentsandbox.<region>.myhuaweicloud.com" E2B_API_KEY = "<your_api_key>" TEMPLATE_ID = "<template_id>" # ================================================ # 创建沙箱实例,指定自定义模板和环境变量 sbx = Sandbox.create( api_key=E2B_API_KEY, api_url=E2B_API_URL, sandbox_url=E2B_SANDBOX_URL, template=TEMPLATE_ID, ) print("Sandbox created:", sbx.sandbox_id) print("Sandbox envd_access_token:",sbx._envd_access_token) print("Sandbox traffic_access_token:",sbx.traffic_access_token)
代码关键参数说明:
参数
说明
注意事项
E2B_SANDBOX_URL
沙箱服务网关地址,用于浏览器访问时的流量入口。
请替换为AgentSphere控制台中实际分配的网关地址,可在控制台“沙箱模板”详情页查看其入站网关的“公网域名”获取。
E2B_API_KEY
沙箱服务API密钥,用于API调用身份认证。
请替换为实际密钥,注意妥善保管,避免泄露。
E2B_API_URL
沙箱服务API地址,用于SDK与AgentSphere平台通信。
请替换为实际API地址,请通过《AgentSphere SDK参考》“配置本地E2B SDK执行环境”章节查询当前区域的API访问地址。
template
自定义模板ID,决定沙箱的基础镜像和运行环境。
请替换为创建沙箱模板后获取的模板ID。
- 执行脚本创建沙箱。
python create_sandbox.py
- 验证沙箱创建成功。脚本执行后,控制台将输出Sandbox ID、Traffic Access Token和Envd Access Token,后续浏览器访问时需要使用。

阶段三:在浏览器中访问OpenClaw
沙箱创建成功后,通过浏览器访问OpenClaw对话界面。由于沙箱通过入站网关对外提供服务,浏览器需要通过Modify Header插件注入沙箱身份认证信息才能访问。
- 在浏览器中安装请求头注入插件,用于在请求中注入沙箱身份认证信息。本文使用Modify Header插件。
- 在Modify Header插件中添加以下四个请求头:
Header名称
Header值
说明
E2b-Sandbox-Id
阶段二输出的Sandbox ID
标识目标沙箱实例
E2b-Sandbox-Port
18789
OpenClaw监听端口
E2b-Traffic-Access-Token
阶段二输出的Traffic Access Token
沙箱流量认证令牌
X-Access-Token
阶段二输出的Envd Access Token
沙箱操作认证令牌

- 在浏览器地址栏中输入沙箱网关域名(即E2B_SANDBOX_URL的值),按Enter键访问。
- 在OpenClaw登录页面中输入网关令牌(配置文件中的gateway.auth.token值),单击连接。
- 验证访问成功。若页面显示OpenClaw对话界面,说明已成功访问。若在openclaw.json中配置了大模型,即可在界面中进行对话交互。

常见问题
- Q:浏览器访问OpenClaw提示连接失败怎么办?
A:请依次检查以下内容。
- Modify Header插件中的三个请求头是否填写正确。
- 沙箱是否仍在运行(沙箱有生命周期限制,超时后会自动销毁)。
- 网关令牌是否与Dockerfile中设置的OPENCLAW_GATEWAY_TOKEN一致。
- Q:沙箱创建后ENVD启动失败怎么办?
A:请检查自定义镜像中的envd和envd-healthcheck.sh文件是否正确复制,以及sudoers配置是否允许node用户执行envd命令。可通过docker run本地启动镜像查看entrypoint.sh的输出日志进行排查。
- Q:如何在OpenClaw中配置大模型对话?
A:在openclaw.json配置文件中添加模型相关参数(如API Key、模型名称等),具体配置方法请参考OpenClaw官方文档。配置完成后,重新执行阶段二中的E2B SDK脚本将更新后的配置文件写入沙箱即可。
相关文档
- OpenClaw官方文档:了解OpenClaw网关的完整配置项和功能说明,请参见https://docs.openclaw.ai/gateway/configuration。
- AgentSphere用户指南:了解沙箱模板、沙箱实例、API Key管理等详细操作,请参见沙箱概述。
- E2B SDK文档:了解沙箱API的完整接口说明,包括代码执行、文件操作等能力,请参见E2B SDK官方文档。