节点连接诊断 是做什么的?
目标:修复一个特定客户端与一个特定Gateway之间的连接,并验证该客户端的新建连接。
1. 锁定目标
在进行任何更改之前,记录目标环境/配置文件、OpenClaw二进制文件、配置/状态根目录、Gateway URL/端口和服务。
- 对每个配置、日志、服务、设备和节点命令,使用指定的部署包装/配置文件。
- 切勿偏离到裸露的
openclaw、验证环境或类似命名的部署。 - 如果全局可执行文件已过时,则通过其所有者调用目标。
- 验证状态、配置、日志和进程标识描述的是同一个Gateway。
在更改配对或认证之前,先识别目标Gateway。
2. 对客户端进行分类
在选择命令之前,根据请求和Gateway日志进行分类:
- Control UI浏览器: 用户提到浏览器、仪表板、Control UI或webchat;日志显示
client=openclaw-control-ui或mode=webchat。 - 原生移动端/节点: 官方应用显示连接、扫描二维码或设置码;日志/请求元数据显示原生客户端或
role=node。
手机可以是任一客户端。不要对手机浏览器使用 openclaw qr 或 openclaw nodes status;这些属于原生移动端/节点配对。
3. 观察失败尝试
通过已锁定的目标运行以下命令:
openclaw gateway status --deep
openclaw logs --follow --json
openclaw devices list
openclaw config get gateway.mode
openclaw config get gateway.bind
openclaw config get gateway.remote.url
openclaw config get gateway.auth.mode
openclaw config get gateway.auth.allowTailscale
openclaw config get gateway.tailscale.mode
让客户端在日志实时输出时重试一次。关联其客户端ID、模式、平台、地址、认证结果、设备ID、用户和关闭代码。忽略其他已配对的设备。
解释第一个失败的转换:
- 没有匹配的Gateway尝试:路由、DNS、TLS、来源或代理问题。
token_missing、password_missing、不匹配或Tailscale身份失败:认证在配对之前失败,因此空的待处理列表是预期的。pairing required:路由和认证成功;批准准确的待处理请求。authenticated user connected/webchat connected:匹配确切的客户端;如果后跟1006,则保留认证/配对并检查生命周期、传输、代理或重连。- 没有应用层连接日志的
1006不能证明认证/配对;检查之前的握手转换。
4. 验证路由
选择一种拓扑结构:同一台机器、局域网、Tailnet或公共反向代理。不要混合使用。
- 浏览器Control UI需要HTTPS或localhost用于浏览器设备身份。远程明文HTTP Tailnet/局域网URL不是有效的替代品。
gateway.tailscale.mode=off表示OpenClaw未管理Serve/Funnel。这并不能证明Tailscale或外部管理的Serve路由不存在。- 当涉及Tailscale时,检查实时状态,而不是从OpenClaw配置推断:
tailscale status --json
tailscale serve status --json
将客户端的URL与到达已锁定Gateway的监听器/代理路由匹配。
5A. Control UI浏览器通道
在查找配对请求之前,先恢复浏览器认证:
- 对于令牌/密码认证,在Control UI设置中输入凭证。切勿将永久机密放在聊天、日志或URL中。
- 首选在Gateway主机上使用
openclaw dashboard进行一次性签名交接。仅当操作员能够检索该主机的剪贴板时才使用--no-open,并将主机浏览器/剪贴板置于代理工具之外。切勿捕获dashboard --json:它可能暴露交接信息和共享凭证。切勿转发、重写或向远程手机发送环回交接URL。 - 对于Tailscale Serve,验证实时路由和转发身份。仅针对预期的信任边界启用
gateway.auth.allowTailscale。经过验证的Tailscale Control UI认证与浏览器设备身份可以跳过配对。
认证成功后:
- 重试;切勿从预认证尝试推断配对。令牌/密码认证可能揭示
pairing required;经过验证的Tailscale身份可以跳过它。 - 如果日志显示
pairing required,则重新列出设备并批准准确的请求ID。 - 成功的已验证Tailscale连接可能不会创建待处理或已配对设备行,这是正确的。
- 在重复出现
1006后,保留认证/配对并检查重连证据。
5B. 原生移动端/节点通道
通过已锁定的目标检查原生路由,同时不暴露设置凭证:
openclaw qr --json | jq '{gatewayUrl, gatewayUrls, auth, access, accessDowngraded, urlSource}'
对于控制远程Gateway的CLI,在 --json 之前添加 --remote;它将选择 gateway.remote.url 和远程凭证。如果不可用脱敏过滤器,则不要在代理可见的输出中运行原始QR JSON。
验证 gatewayUrl 和 urlSource。设置码等同于密码:让操作员从 Control UI → 设备 → 配对设备 复制它,或在代理工具外部的终端中运行 openclaw qr --setup-code-only 并直接粘贴到官方应用中。切勿通过代理/聊天/工具输出中继它。在URL/认证修复或过期后生成新的码。
如果应用报告 pairing required:
openclaw devices list
openclaw devices approve --latest # 仅预览;退出时不批准
openclaw devices approve <requestId>
openclaw nodes status
--latest 仅预览当前请求;切勿将其视为批准。在确切的ID命令之前立即重新列出,因为重试可能取代先前的请求。切勿按位置、时间或相似性批准。
6. 关联并完成
在批准之前,匹配可用的请求、设备/公钥、客户端、模式/角色、平台、地址、用户和重试时间事实。
仅在最终更改后的新尝试证明所有适用检查后,才能声明成功:
- 确切的客户端到达已锁定的Gateway;
- 预期的认证成功;
- 浏览器完成初始请求,或原生节点出现在
openclaw nodes status中; - 批准使用了确切的请求ID;以及
- 没有立即发生认证、配对或重连失败。
二维码/设置码、启动的浏览器、空的待处理列表、批准、配对设备计数或Tailscale ping仅证明了一个转换。
报告诊断结果、选择的路由/认证通道、确切的客户端证据以及任何剩余的失败转换。