跳转至

版本控制

客户端可以协商哪些协议版本,以及参考客户端随附的常量。

版本管理

  • PROTOCOL_VERSION、MIN_CLIENT_PROTOCOL_VERSION、MIN_NODE_PROTOCOL_VERSION 和 MIN_PROBE_PROTOCOL_VERSION 位于 packages/gateway-protocol/src/version.ts 中。
  • 客户端发送 minProtocol + maxProtocol。操作员和 UI 客户端必须在该范围内包含当前协议;当前客户端和服务器运行协议 v4。
  • 同时具有 role: "node" 和 client.mode: "node" 的已认证客户端可以使用 N-1 节点协议(v3)。轻量级重启探测使用相同的 N-1 窗口。设备认证、配对、作用域、命令策略和 exec 审批不受此兼容窗口的影响。插件拥有的节点能力和命令在节点升级到当前协议之前会被保留,因为它们托管的接口不属于 N-1 契约的一部分。
  • 模式和模型由 TypeBox 定义生成:
  • pnpm protocol:gen
  • pnpm protocol:gen:swift
  • pnpm protocol:check

客户端常量

参考客户端实现位于 packages/gateway-client/src/(OpenClaw 通过精简的 src/gateway/client.ts 门面将其包装)。这些默认值在协议 v4 中保持稳定,是第三方客户端的预期基线。

常量 默认值 来源
PROTOCOL_VERSION 4 packages/gateway-protocol/src/version.ts
MIN_CLIENT_PROTOCOL_VERSION 4 packages/gateway-protocol/src/version.ts
MIN_NODE_PROTOCOL_VERSION 3 packages/gateway-protocol/src/version.ts
MIN_PROBE_PROTOCOL_VERSION 3 packages/gateway-protocol/src/version.ts
请求超时(每次 RPC) 30_000 毫秒 packages/gateway-client/src/client.ts(requestTimeoutMs)
预认证 / 连接挑战超时 15_000 毫秒 packages/gateway-client/src/timeouts.ts(OPENCLAW_HANDSHAKE_TIMEOUT_MS 环境变量可以提高配对服务器/客户端的预算)
初始重连退避 1_000 毫秒 packages/gateway-client/src/client.ts(GATEWAY_RECONNECT_POLICY)
最大重连退避 30_000 毫秒 packages/gateway-client/src/client.ts(GATEWAY_RECONNECT_POLICY)
设备令牌关闭后的快速重试上限 250 毫秒 packages/gateway-client/src/client.ts
terminate() 之前的强制停止宽限期 250 毫秒 FORCE_STOP_TERMINATE_GRACE_MS
stopAndWait() 默认超时 1_000 毫秒 STOP_AND_WAIT_TIMEOUT_MS
默认 tick 间隔(hello-ok 之前) 30_000 毫秒 packages/gateway-client/src/client.ts
Tick 超时关闭 当静默超过 tickIntervalMs * 2 时使用代码 4000 packages/gateway-client/src/client.ts
MAX_PAYLOAD_BYTES 25 * 1024 * 1024(25 MB) src/gateway/server-constants.ts
聊天附件上限 agents.defaults.mediaMaxMb,默认解码后 20 MB src/gateway/chat-attachment-policy.ts
聊天附件图片上限 min(attachment ceiling, 6 MB) src/gateway/chat-attachment-policy.ts、packages/media-core/src/constants.ts

服务器在 hello-ok 中通告有效的 policy.tickIntervalMs、policy.maxPayload、policy.maxBufferedBytes 和 policy.attachments;客户端应遵循这些值,而不是握手前的默认值或硬编码的附件大小。

当每个待处理请求都有配置的截止时间时,参考客户端会允许有限请求拥有其配置的截止时间。没有有限 timeoutMs 的 expectFinal 请求、任何 timeoutMs: null 的请求,或有限与无限请求的混合,都会使 tick 看门狗保持活动状态。如果入站事件和响应在超过 tick 超时阈值后仍保持静默,客户端将使用代码 4000 关闭套接字,拒绝所有待处理请求,并重新连接。重新连接后,它不会重放被拒绝的请求。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw