OpenClaw 网关与子节点配对指南:构建分布式 AI 助手网络
前言:从单机到分布式
在单机运行 AI 助手时,我们常遇到算力瓶颈。比如语音合成占满 GPU 时,浏览器自动化就会卡顿;或者需要在不同地点的设备上同步控制,但独立实例导致数据碎片化。
OpenClaw 的子节点(Node)机制允许我们将多台设备组织成分布式 AI 助手网络。在这个架构中,网关(Gateway)是中央大脑,负责指令分发和协调;子节点则是执行单元,承担特定任务。这种设计带来了算力扩展、功能分布和统一管理等优势。
本文将详细记录为 OpenClaw 网关添加第一个子节点的完整过程,包括架构设计、配置步骤及优化经验。
概念解析:网关与子节点
网关(Gateway)
网关是整个系统的核心,不仅是 WebSocket 服务器,更是协调中心。它负责消息路由、任务编排、状态管理和安全控制。
在我的部署中,网关运行环境如下:
- 主机:Ubuntu 22.04 / 24.04
- IP 地址:172.23.1.13
- 端口:18789(默认 WebSocket 端口)
- 绑定模式:loopback(本地绑定)
子节点(Node)
子节点是连接到网关的外部设备,可以是树莓派、旧电脑或高性能工作站。每个节点暴露不同的能力(Capabilities),例如:
- browser:浏览器控制
- system:系统命令执行
- camera:摄像头捕获
通信与安全
网关与子节点基于 WebSocket 建立持久双向通道,用于心跳检测、任务分发和结果回传。安全方面采用多层模型:身份认证(Token)、配对审批、命令过滤和执行审批。
准备工作:环境与工具
硬件与网络
确保网关和子节点在同一局域网内。需要记录以下信息以便配置:
| 项目 | 网关 | 节点 |
|---|---|---|
| IP 地址 | 172.23.1.13 | 172.23.1.27 |
| 用户名 | xxx | robot01 |
| Gateway Token | xxxx | - |
软件依赖
网关端需已安装 OpenClaw CLI。节点端需要 Node.js 环境和 OpenClaw CLI。
# 检查 Node.js 版本
node --version
# 全局安装 OpenClaw(如果未安装)
npm install -g openclaw
网络配置
确保防火墙开放必要端口。网关的 WebSocket 端口(18789)和 SSH 隧道端口(如 18790)需在局域网内可访问。
# 检查并开放端口
sudo ufw allow 18789/tcp
sudo ufw allow 18790/tcp
网关配置详解
OpenClaw 的配置文件位于 ~/.openclaw/openclaw.json。关键配置项如下:
{
"gateway": {
"port": 18789,
"mode": "local",
"bind": "loopback",
"auth": {
"mode": "token",
"token": "xxxxxxx"
},
"nodes": {
"denyCommands": ["camera.snap", "screen.record"]
}
}
}
注意:当 bind 设置为 loopback 时,外部节点无法直接连接,必须通过 SSH 隧道转发流量。这是出于安全考虑,防止公网直接暴露 WebSocket 服务。
查看网关状态和节点列表:
openclaw gateway status
openclaw nodes status
子节点配置与连接
SSH 隧道建立
由于网关使用 loopback 绑定,子节点需要通过 SSH 反向隧道连接到网关。
在子节点设备上执行:
# 建立 SSH 反向隧道(后台运行)
ssh -N -L 18790:127.0.0.1:18789 [email protected] &
# 验证隧道是否建立
netstat -tln | grep 18790
这里 -L 参数表示将本地的 18790 端口转发到远程网关的 127.0.0.1:18789。这样节点连接本地 18790 实际上就是连到了网关。
启动节点
隧道建立后,设置环境变量并启动节点:
export OPENCLAW_GATEWAY_TOKEN="xxxxx"
openclaw node run --host 127.0.0.1 --port 18790 --display-name "Robot01"
启动成功后会看到类似提示:Node connected and awaiting approval。
生产环境中建议将其注册为系统服务,实现开机自启:
sudo openclaw node install --host 127.0.0.1 --port 18790 --display-name "Robot01"
sudo openclaw node start
审批与配对:安全机制
新节点连接后不会立即生效,需要经过网关管理员审批。
查看待批准请求
在网关上执行:
openclaw nodes pending
输出示例:
Pending nodes:
- requestId: abcxxx (Robot01)
Platform: linux
Version: 2026.2.14
批准或拒绝
确认无误后批准节点:
openclaw nodes approve abcxxx
批准后,节点状态变为 Paired: true。若发现异常请求,可使用 reject 命令拒绝。
执行授权:exec-approvals
默认情况下,节点上的命令执行需要人工审批。为了提升自动化效率,可以配置 exec-approvals 文件来设定自动执行策略。
配置文件位置
该文件位于节点设备的 ~/.openclaw/exec-approvals.json。
配置格式
最简单的配置是允许所有执行(仅适用于受信任的内网环境):
{
"version": 1,
"defaults": {
"security": "full",
"ask": "off"
}
}
更安全的做法是使用白名单模式,只允许特定命令:
{
"version": 1,
"defaults": {
"security": "allowlist",
"ask": "on-miss"
},
"allowlist": [
{ "id": "1", "pattern": "curl*" },
{ "id": "2", "pattern": "wget*" }
]
}
配置修改后需重启节点服务才能生效。
实战演练:完整配对流程
让我们快速回顾一下 Robot01 节点的完整接入步骤:
- 环境检查:确认网络连通性,测试 SSH 端口。
- SSH 隧道:在节点上建立反向隧道至网关。
- 启动节点:设置 Token 并运行
openclaw node run。 - 网关审批:在网关查看
pending列表并批准。 - 权限配置:在节点创建
exec-approvals.json。 - 验证执行:通过网关远程运行命令测试。
测试命令执行:
openclaw nodes run --node Robot01 uname -a
节点操作与扩展
远程控制
使用 nodes 工具可以在网关上管理子节点:
# 查看状态
openclaw nodes status
# 执行命令
openclaw nodes run --node Robot01 ls -la
# 文件传输
openclaw nodes download --node Robot01 /remote/file /local/path
最自然的交互方式是直接通过 AI 助手发出指令,例如'让 Robot01 执行 curl --version',AI 会自动调用节点接口。
多节点扩展规划
未来可以进一步扩展网络规模:
- 功能扩展:增加专门的文件处理节点或视觉识别节点。
- 地理分布:利用 Tailscale 等工具实现跨互联网连接。
- 命名规范:建议按功能命名,如
Robot-Cam01、Robot-Remote。
故障排除
常见问题及解决方案:
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 连接被拒绝 | SSH 隧道未建立 | 检查 SSH 隧道状态 |
| 超时 | 网络不通 | 检查防火墙和路由 |
| 认证失败 | Token 错误 | 核对 Gateway Token |
| 执行被拒绝 | exec-approvals 未配置 | 配置自动执行策略 |
深度优化建议
- 安全性:定期更换 Token,限制 SSH 密码登录,使用密钥认证。
- 性能:尽量使用有线网络连接节点以减少延迟,批量合并命令执行。
- 可维护性:标准化配置文件,使用 Ansible 等工具批量部署节点。
通过上述步骤,我们成功构建了基于 OpenClaw 的分布式 AI 助手网络。这不仅解决了单机算力瓶颈,还为未来的复杂自动化场景打下了坚实基础。

