使用 Docker、Discord、SSH 和 Tailscale 搭建多智能体沙箱基础设施。适用于以下场景:(1) 为跨网关协作创建沙箱化智能体……
多代理 Sandbox. 设置沙箱代理,通过Discord和共享的VPS与其他OpenClaw网关的代理合作,而不暴露私人数据.
功能概述
多代理 Sandbox. 设置沙箱代理,通过Discord和共享的VPS与其他OpenClaw网关的代理合作,而不暴露私人数据.是一项面向实际任务的技能,主要用于Architecture.;Three piction: so。
核心要点
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
使用与执行
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
结果检查与注意事项
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
多智能体沙箱(Multi-Agent Sandbox)
部署隔离的沙箱智能体,通过 Discord 和共享 VPS 与其他 OpenClaw 网关中的智能体协作,同时不暴露私有数据。
架构
网关 A(服务器 A) 网关 B(服务器 B)
├── 主智能体(完全访问权限) ├── 主智能体(完全访问权限)
│ agentToAgent.allow: ["*"] │ agentToAgent.allow: ["*"]
└── 沙箱智能体(Docker) └── 沙箱智能体(Docker)
agentToAgent.allow: ["main"] agentToAgent.allow: ["main"]
├── Discord ←── 共享服务器 ──→ Discord
│ requireMention: true
└── SSH ─→ socat ─→ Tailscale ─→ 共享 VPS ←── SSH
100.y.y.y
三大支柱:socat 桥接(容器 → 宿主机 → VPS)、Tailscale 网状 VPN(私有网络通信)、Discord + sessions_send(智能体间通信)。
前提条件
- OpenClaw 已运行,并启用 Docker 沙箱支持
- 所有机器(服务器 A + VPS + 服务器 B)均已安装 Tailscale
- 每个沙箱智能体需配置独立的 Discord Bot Token(https://discord.com/developers/applications)
- 存在一台可通过 Tailscale 访问的共享 VPS
步骤 1 — 创建沙箱智能体
在 openclaw.json 的 agents.list 下添加如下配置:
{
"id": "sandbox",
"workspace": "/path/to/workspace-sandbox",
"model": {
"primary": "anthropic/claude-sonnet-4-6",
"fallbacks": ["openai/gpt-4o"]
},
"identity": {
"name": "Sandbox",
"emoji": "📦"
},
"sandbox": {
"mode": "all",
"workspaceAccess": "rw",
"sessionToolsVisibility": "all",
"scope": "agent",
"docker": {
"image": "openclaw-sandbox:bookworm-slim",
"readOnlyRoot": true,
"network": "bridge",
"memory": "1536m",
"cpus": 2
},
"browser": { "enabled": true }
},
"tools": {
"agentToAgent": {
"allow": ["your-main-agent-id"]
},
"alsoAllow": ["message", "sessions_send", "sessions_list", "sessions_history"],
"deny": ["gateway", "process", "whatsapp_login", "cron"],
"sandbox": {
"tools": {
"allow": [
"exec", "process", "read", "write", "edit", "apply_patch",
"image", "web_search", "web_fetch",
"sessions_list", "sessions_history", "sessions_send", "sessions_spawn",
"subagents", "session_status", "message", "browser"
],
"deny": [
"canvas", "nodes", "gateway", "telegram", "irc", "googlechat",
"slack", "signal", "imessage", "whatsapp_login", "cron"
]
}
}
}
}
关键约束说明:
sandbox.mode: "all"— 所有 exec 均在 Docker 容器内执行,永不直接运行于宿主机readOnlyRoot: true— 容器根文件系统为只读,仅 workspace 目录可写tools.deny— 禁用 gateway(无法修改配置)、禁用 cron(无法在宿主机上调度任务)scope: "agent"— 每个智能体独占一个隔离容器(合法值:session | agent | shared)
步骤 2 — 智能体到智能体(A2A)权限配置(中心-辐条模式)
使用按智能体配置的出站白名单实现双向通信(PR #39102):
{
"tools": {
"agentToAgent": { "enabled": true, "allow": ["*"] }
},
"agents": {
"list": [
{
"id": "main-agent",
"tools": { "agentToAgent": { "allow": ["*"] } }
},
{
"id": "sandbox",
"tools": { "agentToAgent": { "allow": ["main-agent"] } }
}
]
}
}
效果:sandbox → main-agent ✅ | sandbox → other-sandbox ❌ | main-agent → anyone ✅
两个智能体还需配置 subagents.allowAgents 以支持 sessions_spawn:
// 主智能体
"subagents": { "allowAgents": ["sandbox"] }
// 沙箱智能体
"subagents": { "allowAgents": ["main-agent"] }
必须在两个智能体上均设置。 遗漏任一方向将导致静默的“访问被拒绝”错误。
步骤 3 — 向 Docker 镜像添加 SSH 支持
默认沙箱镜像不含 SSH。编辑 Dockerfile.sandbox:
RUN apt-get update
&& apt-get install -y --no-install-recommends
bash ca-certificates curl git jq
openssh-client
python3 ripgrep
&& rm -rf /var/lib/apt/lists/*
重建并强制重新创建容器:
docker build -f Dockerfile.sandbox -t openclaw-sandbox:bookworm-slim .
docker ps --format "{{.ID}} {{.Image}}" | grep sandbox | awk '{print $1}' | xargs -r docker rm -f
步骤 4 — socat 桥接
每台宿主机需部署两个桥接服务。始终绑定至 172.17.0.1(docker0 接口),切勿 使用 0.0.0.0。
桥接 1:容器 → 网关(本地)
# /etc/systemd/system/socat-bridge-docker0-gateway.service [Unit] Description=Socat bridge: docker0 → Gateway After=network.target docker.service [Service] Type=simple ExecStart=/usr/bin/socat TCP-LISTEN:18789,bind=172.17.0.1,reuseaddr,fork TCP:127.0.0.1:18789 Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
桥接 2:容器 → VPS SSH(经 Tailscale)
# /etc/systemd/system/socat-bridge-docker0-vps-ssh.service [Unit] Description=Socat bridge: docker0:2222 → VPS Tailscale SSH After=network.target docker.service tailscaled.service Wants=tailscaled.service [Service] Type=simple ExecStart=/usr/bin/socat TCP-LISTEN:2222,bind=172.17.0.1,reuseaddr,fork TCP:100.y.y.y:22 Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
启用、启动服务并开放防火墙规则:
sudo systemctl daemon-reload sudo systemctl enable --now socat-bridge-docker0-gateway socat-bridge-docker0-vps-ssh sudo ufw allow in on docker0 to 172.17.0.1 port 18789 proto tcp comment "socat-gateway" sudo ufw allow in on docker0 to 172.17.0.1 port 2222 proto tcp comment "socat-vps-ssh"
VPS 桥接依赖 Tailscale(Wants=tailscaled.service)。若缺失该依赖,socat 将在 Tailscale 网络接口就绪前尝试连接,导致静默失败。
步骤 5 — Discord 多机器人配置
创建 Discord 机器人
- 访问 https://discord.com/developers/applications → 创建新应用
- 进入 Bot 页面 → 重置 Token → 复制新 Token
- 启用全部三项 特权网关意图(Privileged Gateway Intents):MESSAGE CONTENT、SERVER MEMBERS、PRESENCE
- 邀请链接:
https://discord.com/oauth2/authorize?client_id=&permissions=274878024704&scope=bot
在 openclaw.json 中配置
"discord": {
"enabled": true,
"accounts": {
"default": {
"enabled": true,
"name": "Main Bot",
"token": "$DISCORD_TOKEN_MAIN",
"groupPolicy": "allowlist",
"dmPolicy": "allowlist",
"allowFrom": [""],
"guilds": {
"": {
"slug": "private",
"requireMention": false
}
}
},
"sandbox": {
"enabled": true,
"name": "Sandbox Bot",
"token": "$DISCORD_TOKEN_SANDBOX",
"groupPolicy": "allowlist",
"dmPolicy": "deny",
"guilds": {
"": {
"slug": "shared",
"requireMention": true
}
}
}
}
}
智能体路由绑定
"mappings": [
{
"agentId": "main-agent",
"match": { "channel": "discord", "accountId": "default", "guildId": "" }
},
{
"agentId": "sandbox",
"match": { "channel": "discord", "accountId": "sandbox", "guildId": "" }
}
]
requireMention: true 在共享服务器中为强制要求。 若未启用,两个机器人将相互响应,引发无限循环及巨额 Token 消耗。
步骤 6 — Tailscale 配置
在所有机器上安装 Tailscale:
curl -fsSL https://tailscale.com/install.sh | sh sudo tailscale up --ssh
--ssh 参数启用 Tailscale SSH(基于身份认证,无需管理密钥)。对于无法交互式认证的机器:
# 在 https://login.tailscale.com → Settings → Keys 生成授权密钥 sudo tailscale up --authkey=tskey-auth-xxxxx --ssh
切勿在容器内安装 Tailscale。 其需 NET_ADMIN 权限,违背沙箱设计初衷。请改用 socat 桥接方案。
步骤 7 — 沙箱工作区初始化
创建最小化工作区目录:
mkdir -p /path/to/workspace-sandbox
SOUL.md — 定义智能体身份与约束条件。
TOOLS.md — 记录 SSH 访问方式:ssh -o StrictHostKeyChecking=no root@172.17.0.1 -p 2222
通信模式
# 主智能体 → 沙箱智能体(同一网关) sessions_send(label="sandbox", message="...") # 沙箱智能体 → 主智能体(同一网关) sessions_send(label="main-agent", message="...") # 智能体 A → 智能体 B(不同网关) # 仅可通过 Discord @mention 实现。跨网关不可使用 sessions_send。 # 异步协作 # 双方智能体均通过 SSH 连接到 VPS 的 /workspace 目录,以文件为媒介协同。
注意事项
- 容器未使用新镜像 — 重建 Docker 镜像后,需手动停止并删除旧容器。OpenClaw 默认复用正在运行的容器。
- 跨上下文消息传递 — 由 WhatsApp 触发生成的智能体无法向 Discord 发送消息。首次触发必须来自目标通道。
- MESSAGE CONTENT 意图 — 必须在 Discord 开发者门户中启用,否则机器人将收到空消息。
- socat 静默超时 — 若
ssh -p 2222卡住且无报错,请检查 docker0 接口上的 UFW 规则。 - 智能体 ID 重命名 — 更改智能体 ID(如
sandbox→spoke)将导致引用旧 ID 的活跃会话失效。应在agentToAgent.allow中临时保留旧 ID,直至相关会话过期。 - sessions_send 超时设置 —
timeoutSeconds: 0表示即发即弃;timeoutSeconds: 60表示等待响应。超时 ≠ 消息未送达。 - 机器人 Token 泄露 — 切勿在 Discord 频道中发布 Token。一旦泄露,须立即通过开发者门户重置。
热门AI工具
相关专题
本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。
0
2026.11.06
围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。
0
2026.11.06
详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。
0
2026.11.06
DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。
0
2026.11.05
DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。
0
2026.11.05
本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。
0
2026.11.04
本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
热门下载
相关下载
精品课程
最新文章