Skip to main content
Gateway 网关实施多项彼此独立的速率限制。它们保护不同的 边界、基于不同的身份确定键值,并以不同的错误形式失败。 本页是所有这些限制的参考。 概览:

身份验证尝试(身份验证前)

在处理任何请求之前,系统会按客户端 IP 限制失败的身份验证尝试。 这是针对暴露的 Gateway 网关的暴力破解防护机制。
  • 只有_错误的_凭据才会计数。缺少凭据(客户端从未 发送令牌)和身份验证成功不会消耗配额;身份验证成功会重置该 IP 的计数器。
  • 默认值:每 60 秒允许失败 10 次,之后该 IP 将被锁定 5 分钟。
  • 默认豁免 local loopback(127.0.0.1 / ::1),因此本地 CLI 会话 不会被锁定。
  • 计数器按凭据类别划分范围,因此针对一个表面的请求洪泛 不会挤占另一个表面的配额。范围包括共享的 Gateway 网关 令牌/密码、设备令牌、节点配对、已配对节点重新审批、 设备引导令牌以及 watchOS 质询签发。
锁定期间,连接尝试将失败并返回:
锁定期间,来自其他 IP(包括 local loopback)的尝试不受影响。 openclaw.jsongateway.auth.rateLimit 下调整此限制:
Gateway 网关日志中反复出现 AUTH_RATE_LIMITED 条目,意味着有人正在 猜测凭据;请参阅暴露运行手册

浏览器来源的连接

携带浏览器 Origin 标头的 WebSocket 连接使用相同的 限制,但 local loopback 豁免始终关闭——本地浏览器中的恶意页面 仍是不受信任的客户端,因此 localhost 在该路径上不会获得豁免。 当此类连接_来自_回环地址时,其失败次数按规范化后的页面来源确定键值 (例如 browser-origin:https://evil.example),而不是按共享的回环 IP, 因此每个来源都有自己的桶;来自非回环地址时,键值仍为客户端 IP。 此行为不可配置。

Webhooks

HTTP /hooks 入口有自己的失败限制器:每个客户端 IP 每 60 秒允许 20 次身份验证失败,之后锁定 60 秒。 local loopback 不豁免。Hook 身份验证成功会重置计数器。受到限流的 请求会收到纯 HTTP 429 Too Many Requests 响应,其中包含 Retry-After 标头(秒)。限制固定;如果合法集成触发了此限制, 应修复其凭据,而不是更频繁地重试。

控制平面写入(身份验证后的后备保护)

写入侧管理 RPC(config.applyconfig.patchplugins.installplugins.setEnabledplugins.uninstallupdate.runworktrees.*gateway.restart.request、……)在授权之后还会受到额外的速率限制: 按每个 deviceId+clientIp、每种方法计算,每 60 秒 30 个请求。 这并非安全边界——调用方已持有 operator.admin——而是一项 后备保护,用于限制失控的客户端或智能体循环反复调用高成本操作。 交互式使用永远不会触发此限制;每种方法都有自己的桶,因此切换插件 不会消耗配置写入的配额。 超过限制时,请求将失败并返回可重试错误:
客户端应遵循 retryAfterMs。此限制固定(不可配置); 桶会自行过期,并由 Gateway 网关维护任务清理。

ACP 会话创建

ACP 转换器将每个转换器实例的会话创建限制为每 10 秒最多 120 个 新会话。超过限制时,请求将失败,错误消息中会包含等待时间 (此路径上没有结构化的 retryAfterMs 字段):
这可以限制循环创建会话的失控客户端;正常的 IDE 和 智能体使用量远低于此限制。

重启冷却

Gateway 网关重启请求会先合并,然后在重启周期之间实施 30 秒的冷却。 在冷却期间发出的重启请求不会被拒绝,而是安排在冷却结束后执行。 这与上述控制平面限制器相互独立:gateway.restart.request 会消耗一个 控制平面配额槽,_并且_由此产生的重启也必须遵守冷却时间。

运维说明

  • 所有限制器均位于内存中且按进程隔离,多个 Gateway 网关不会 共享状态。替换 Gateway 网关进程会清除由 Gateway 网关拥有的 计数器(身份验证锁定、Webhook 限流和控制平面桶)。重启冷却会 特意跨进程内重启周期保留——这正是它要限制的对象——并且仅随进程 重置。ACP 会话上限属于其转换器实例,并在该实例重新创建时重置, 而不是在 Gateway 网关重启时重置。
  • 桶映射有界(硬性条目上限加定期清理),因此 唯一键洪泛不会导致内存无限增长。
  • 当客户端位于反向代理之后时,有效 IP 是解析出的 客户端 IP;请参阅受信任代理身份验证,了解 代理标头在能够影响该 IP 之前如何经过验证。
  • 不同表面的重试信号有所不同:Gateway 网关 RPC 限制器返回 retryable: trueretryAfterMs,Webhook 入口使用 HTTP 429 并附带 Retry-After 标头,ACP 则将等待时间嵌入错误消息。 在所有情况下,都应按指示的时长退避,而不是立即重试。