发现与传输
OpenClaw 有两个截然不同但在表面上看起来相似的问题:
- 操作员远程控制:macOS 菜单栏应用程序控制运行在其他地方的 Gateway。
- 节点配对:iOS/Android (及未来的节点) 查找 Gateway 并安全配对。
设计目标是将所有网络发现/广播保留在 Node Gateway (openclaw gateway) 中,并让客户端 (mac 应用, iOS) 作为消费者。
- Gateway: 单个长期运行的 Gateway 进程,拥有状态 (会话、配对、节点注册表) 并运行频道。大多数设置每台主机使用一个;隔离的多 Gateway 设置也是可能的。
- Gateway WS (控制平面): 默认位于
127.0.0.1:18789的 WebSocket 端点;可以通过gateway.bind绑定到 LAN/tailnet。 - 直接 WS 传输: 面向 LAN/tailnet 的 Gateway WS 端点 (无 SSH)。
- SSH 传输 (回退): 通过 SSH 转发
127.0.0.1:18789进行远程控制。 - 遗留 TCP 桥接 (已弃用/移除): 旧的节点传输 (见 Bridge 协议);不再广播用于发现。
协议详情:
为什么我们要同时保留“直接”和 SSH
Section titled “为什么我们要同时保留“直接”和 SSH”- 直接 WS 在同一网络和 tailnet 内提供最佳的用户体验:
- 通过 Bonjour 在 LAN 上自动发现
- 配对令牌 + ACL 由 Gateway 拥有
- 不需要 shell 访问权限;协议表面可以保持紧凑和可审计
- SSH 仍然是通用的回退方案:
- 在你有 SSH 访问权限的任何地方都有效 (即使跨越不相关的网络)
- 在多播/mDNS 问题中依然可用
- 除了 SSH 之外不需要新的入站端口
发现输入 (客户端如何得知 Gateway 在哪里)
Section titled “发现输入 (客户端如何得知 Gateway 在哪里)”1) Bonjour / mDNS (仅限 LAN)
Section titled “1) Bonjour / mDNS (仅限 LAN)”Bonjour 是尽力而为的,并且不跨越网络。它仅用于“同一 LAN”的便利性。
目标方向:
- Gateway 通过 Bonjour 广播其 WS 端点。
- 客户端浏览并显示“选择 Gateway”列表,然后存储所选端点。
故障排除和信标详情:Bonjour。
服务信标详情
Section titled “服务信标详情”- 服务类型:
_openclaw-gw._tcp(Gateway 传输信标)
- TXT 键 (非机密):
role=gatewaylanHost=<hostname>.localsshPort=22(或广播的任何端口)gatewayPort=18789(Gateway WS + HTTP)gatewayTls=1(仅当启用 TLS 时)gatewayTlsSha256=<sha256>(仅当启用 TLS 且指纹可用时)canvasPort=18793(默认 canvas 主机端口;服务于/__openclaw__/canvas/)cliPath=<path>(可选;可运行的openclaw入口点或二进制文件的绝对路径)tailnetDns=<magicdns>(可选提示;当 Tailscale 可用时自动检测)
禁用/覆盖:
OPENCLAW_DISABLE_BONJOUR=1禁用广播。~/.openclaw/openclaw.json中的gateway.bind控制 Gateway 绑定模式。OPENCLAW_SSH_PORT覆盖 TXT 中广播的 SSH 端口 (默认为 22)。OPENCLAW_TAILNET_DNS发布tailnetDns提示 (MagicDNS)。OPENCLAW_CLI_PATH覆盖广播的 CLI 路径。
2) Tailnet (跨网络)
Section titled “2) Tailnet (跨网络)”对于伦敦/维也纳风格的设置,Bonjour 帮不上忙。推荐的“直接”目标是:
- Tailscale MagicDNS 名称 (首选) 或稳定的 tailnet IP。
如果 Gateway 能检测到它在 Tailscale 下运行,它会发布 tailnetDns 作为客户端的可选提示 (包括广域信标)。
3) 手动 / SSH 目标
Section titled “3) 手动 / SSH 目标”当没有直接路由 (或直接路由被禁用) 时,客户端总是可以通过 SSH 转发回环 Gateway 端口来连接。
参见 远程访问。
传输选择 (客户端策略)
Section titled “传输选择 (客户端策略)”推荐的客户端行为:
- 如果配置了已配对的直接端点且可达,则使用它。
- 否则,如果 Bonjour 在 LAN 上找到 Gateway,提供一键“使用此 Gateway”选项并将其保存为直接端点。
- 否则,如果配置了 tailnet DNS/IP,尝试直接连接。
- 否则,回退到 SSH。
配对 + 认证 (直接传输)
Section titled “配对 + 认证 (直接传输)”Gateway 是节点/客户端准入的真理来源。
- 配对请求在 Gateway 中创建/批准/拒绝 (见 Gateway 配对)。