踩坑实录:OpenClaw 首次 WS 配对被 gateway status 打断,我是怎么定位并解决的

在基于 OpenClaw 进一步扩建鼎道 DingOS 生态服务,以及在自身研发工作中做能力接入、辅助提效的过程中,我们发现一个关键问题:WebSocket 首次连接 OpenClaw 触发设备授权流程时,若在执行授权命令前调用 openclaw gateway status,会导致原有待授权请求被覆盖,最终使初始 WebSocket 连接的授权流程失效。该问题在本地调试中可稳定复现,且因鼎道业务侧的状态轮询逻辑被进一步放大,严重影响设备首次配对的稳定性。
现象描述
首次通过 WebSocket 连接 OpenClaw 时,会收到类似下面的配对提示:
{
"type": "pairing",
"value": {
"message": "Device pairing required",
"requestId": "<REQUEST_ID>",
"deviceId": "<DEVICE_ID>",
"approveCommand": "openclaw devices approve <REQUEST_ID>"
}
}
如果这时还没有执行 approveCommand,而是先执行:
openclaw gateway status --json
则 ~/.openclaw/devices/pending.json 中原本等待授权的请求会被替换成新的 pending 记录,导致原来的 WebSocket 配对流程失效。
复现步骤
- 清理设备授权状态,确保当前设备尚未完成配对。
- 通过 WebSocket 首次连接 OpenClaw。
- 收到
Device pairing required,记录返回的requestId和approveCommand。 - 在不执行授权命令的前提下,执行:
openclaw gateway status --json
- 再次查看
~/.openclaw/devices/pending.json。 - 会发现 pending 中的记录发生变化,原本 WS 连接对应的授权请求被新的请求替换。
- 此时再执行最初返回的
approveCommand,通常无法让最初那条 WebSocket 连接继续完成授权。
观察到的关键点
- WebSocket 客户端发起连接时使用的客户端标识是:
clientId = webchat-uiclientMode = ui
- 但在问题发生后,
pending.json中出现的新记录往往是:clientId = cliclientMode = probe
这说明替换原 pending 请求的,并不是原始 WebSocket 连接本身,而更像是一次 CLI 层的状态探测行为。
实际影响
- 首次设备授权流程不稳定。
- 用户在看到授权提示后,如果系统内部或手动又执行了
openclaw gateway status,可能会导致当前授权流程失效。 - 前端看起来会表现为“明明已经拿到授权命令,但执行后当前 WS 连接仍然无法建立”。
初步判断
从现象上看,openclaw gateway status 不只是只读状态检查,它在未授权场景下可能会触发新的设备探测或新的配对请求。
如果网关内部只保留一个 pending 配对请求,或者新的 probe 请求会覆盖旧请求,就会出现:
- WS 首次连接生成一个待授权请求。
gateway status再生成一个新的待授权请求。- 新请求覆盖旧请求。
- 原来的
approveCommand失效。
如果 OpenClaw 的预期是 gateway status 只做状态检查,那么这个行为更像是一个 bug,或者至少是一个不符合直觉的设计问题。
本地项目中放大的原因
当前本地项目里存在一个后台状态轮询,会每 2 秒执行一次状态查询:
openclaw gateway status --json
因此在首次授权尚未完成时,这个轮询会持续触发,从而明显放大上述问题。
临时规避建议
- 在首次设备授权成功之前,不要执行
openclaw gateway status。 - 如果应用内部存在状态轮询,建议在未配对完成前暂停轮询。
- 完成设备授权后,再恢复状态查询或其他探测逻辑。
这个问题本质是 OpenClaw 在“首次设备授权”与“gateway 状态探测”之间存在冲突:
- WS 首次连接会创建待授权请求
gateway status也可能创建新的待授权请求- 新请求会替换原请求
- 最终导致首次 WS 授权流程被打断
对我们正在做的 DingOS 生态扩展、本地研发提效场景来说,这个小坑会直接影响接入稳定性,短期通过调整轮询策略、增加状态判断可快速规避;长期需推动 OpenClaw 底层逻辑优化,并结合鼎道业务特性重构设备授权与状态查询的交互流程。后续我们会基于这份复现步骤和现象,向 OpenClaw 官方反馈,也会在自己的工程里做更健壮的状态保护逻辑,把首次接入体验做稳。
更多推荐



所有评论(0)