Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
设备发现与传输协议
OpenClaw 有两个表面上相似但实际不同的问题:- 操作员远程控制:macOS 菜单栏应用控制运行在其他位置的 Gateway 网关。
- 节点配对:iOS/Android(以及未来节点)查找 Gateway 网关并安全配对。
openclaw gateway)中,并让客户端(Mac 应用、iOS)作为消费者。
术语
- Gateway 网关:单个长期运行的 Gateway 网关进程,拥有状态(会话、配对、节点注册表)并运行渠道。大多数设置每台主机使用一个;也可以使用隔离的多 Gateway 网关设置。
- Gateway 网关 WS(控制平面):默认位于
127.0.0.1:18789的 WebSocket 端点;可以通过gateway.bind绑定到 LAN/tailnet。 - Direct WS 传输协议:面向 LAN/tailnet 的 Gateway 网关 WS 端点(无 SSH)。
- SSH 传输协议(回退):通过 SSH 转发
127.0.0.1:18789进行远程控制。 - 旧版 TCP 桥接(已移除):较旧的节点传输协议(参见 Bridge protocol);不再为 设备发现做广播,也不再是当前构建的一部分。
为什么同时保留“direct”和 SSH
- Direct WS 在同一网络和 tailnet 内提供最佳用户体验:
- 通过 Bonjour 在 LAN 上自动设备发现
- 配对令牌 + ACL 由 Gateway 网关拥有
- 不需要 shell 访问;协议表面可以保持紧凑且易于审计
- SSH 仍然是通用回退:
- 只要你有 SSH 访问权限即可使用(即使跨不相关网络)
- 可避开 multicast/mDNS 问题
- 除 SSH 外不需要新的入站端口
设备发现输入(客户端如何获知 Gateway 网关位置)
1) Bonjour / DNS-SD 设备发现
多播 Bonjour 是尽力而为的,并且不会跨网络。OpenClaw 也可以通过配置的广域 DNS-SD 域浏览 同一个 Gateway 网关信标,因此设备发现可以覆盖:- 同一 LAN 上的
local. - 用于跨网络设备发现的已配置单播 DNS-SD 域
- 启用内置
bonjour插件时,Gateway 网关 会通过 Bonjour 广播其 WS 端点。该插件会在 macOS 主机上自动启动,在其他位置需要 选择启用。 - 客户端浏览并显示“选择一个 Gateway 网关”列表,然后存储所选端点。
服务信标详情
- 服务类型:
_openclaw-gw._tcp(Gateway 网关传输协议信标)
- TXT 键名(非密钥):
role=gatewaytransport=gatewaydisplayName=<friendly name>(操作员配置的显示名称)lanHost=<hostname>.localgatewayPort=18789(Gateway 网关 WS + HTTP)gatewayTls=1(仅在启用 TLS 时)gatewayTlsSha256=<sha256>(仅在启用 TLS 且指纹可用时)canvasPort=<port>(canvas 主机端口;当前在启用 canvas 主机时与gatewayPort相同)tailnetDns=<magicdns>(可选提示;当 Tailscale 可用时自动检测)sshPort=<port>(仅 mDNS 完整模式;广域 DNS-SD 可以省略它,在这种情况下 SSH 默认值保持为22)cliPath=<path>(仅 mDNS 完整模式;广域 DNS-SD 仍会将其写入为远程安装提示)
- Bonjour/mDNS TXT 记录是未经身份验证的。客户端必须仅将 TXT 值视为用户体验提示。
- 路由(主机/端口)应优先使用已解析的服务端点(SRV + A/AAAA),而不是 TXT 提供的
lanHost、tailnetDns或gatewayPort。 - TLS 固定绝不能允许广播的
gatewayTlsSha256覆盖以前存储的固定值。 - 每当所选路由基于安全/TLS 时,iOS/Android 节点应在存储首次固定值之前要求明确确认“信任此指纹”(带外验证)。
openclaw plugins enable bonjour启用 LAN 多播广播。OPENCLAW_DISABLE_BONJOUR=1禁用广播。- 当启用 Bonjour 插件且未设置
OPENCLAW_DISABLE_BONJOUR时, Bonjour 会在普通主机上广播,并在检测到的容器内自动禁用。 空配置 macOS Gateway 网关启动会自动启用该插件;Linux、 Windows 和容器化部署需要显式启用。 仅在主机、macvlan 或其他支持 mDNS 的网络上使用0;使用1强制禁用。 ~/.openclaw/openclaw.json中的gateway.bind控制 Gateway 网关绑定模式。OPENCLAW_SSH_PORT会覆盖发出sshPort时广播的 SSH 端口。OPENCLAW_TAILNET_DNS发布tailnetDns提示(MagicDNS)。OPENCLAW_CLI_PATH覆盖广播的 CLI 路径。
2) Tailnet(跨网络)
对于伦敦/维也纳式设置,Bonjour 无法提供帮助。推荐的“direct”目标是:- Tailscale MagicDNS 名称(首选)或稳定的 tailnet IP。
tailnetDns 作为客户端的可选提示(包括广域信标)。
macOS 应用现在会优先使用 MagicDNS 名称而不是原始 Tailscale IP 来进行 Gateway 网关设备发现。这会在 tailnet IP 变化时提高可靠性(例如节点重启或 CGNAT 重新分配后),因为 MagicDNS 名称会自动解析到当前 IP。
对于移动节点配对,设备发现提示不会放宽 tailnet/公共路由上的传输安全:
- iOS/Android 仍需要安全的首次 tailnet/公共连接路径(
wss://或 Tailscale Serve/Funnel)。 - 发现的原始 tailnet IP 是路由提示,而不是使用明文远程
ws://的权限。 - 私有 LAN 直连
ws://仍受支持。 - 如果你想为移动节点使用最简单的 Tailscale 路径,请使用 Tailscale Serve,这样设备发现和设置代码都会解析到相同的安全 MagicDNS 端点。
3) 手动 / SSH 目标
当没有 direct 路由(或 direct 已禁用)时,客户端始终可以通过转发 loopback Gateway 网关端口来经 SSH 连接。 参见远程访问。传输协议选择(客户端策略)
推荐的客户端行为:- 如果已配置且可达的已配对 direct 端点存在,则使用它。
- 否则,如果设备发现找到
local.或已配置广域域上的 Gateway 网关,则提供一键“使用此 Gateway 网关”选择,并将其保存为 direct 端点。 - 否则,如果配置了 tailnet DNS/IP,则尝试 direct。
对于 tailnet/公共路由上的移动节点,direct 指安全端点,而不是明文远程
ws://。 - 否则,回退到 SSH。
配对 + 身份验证(direct 传输协议)
Gateway 网关是节点/客户端准入的事实来源。- 配对请求在 Gateway 网关中创建/批准/拒绝(参见 Gateway 网关配对)。
- Gateway 网关会强制执行:
- 身份验证(令牌 / 密钥对)
- 范围/ACL(Gateway 网关不是每个方法的原始代理)
- 速率限制
按组件划分的职责
- Gateway 网关:广播设备发现信标,拥有配对决策,并托管 WS 端点。
- macOS 应用:帮助你选择 Gateway 网关,显示配对提示,并仅将 SSH 用作回退。
- iOS/Android 节点:为方便而浏览 Bonjour,并连接到已配对的 Gateway 网关 WS。