消息与投递

重试策略

目标

  • 按每个 HTTP 请求重试,而不是按多步骤流程重试。
  • 仅重试当前步骤,以保持顺序。
  • 避免重复执行非幂等操作。

默认值

设置 默认值
尝试次数 3
最大延迟上限 30000 ms
抖动 0.1 (10%)
Telegram 最小延迟 400 ms
Discord 最小延迟 500 ms

行为

模型提供商

  • OpenClaw 让提供商 SDK 处理常规的短时重试。
  • 对于 Anthropic 和 OpenAI 等基于 Stainless 的 SDK,可重试响应(4084094295xx)可能包含 retry-after-msretry-after。当等待时间超过 60 秒时,OpenClaw 会注入 x-should-retry: false,让 SDK 立即返回错误,以便模型故障转移能够切换到另一个身份验证配置文件或备用模型。
  • 使用 OPENCLAW_SDK_RETRY_MAX_WAIT_SECONDS=<seconds> 覆盖上限。将其设置为 0falseoffnonedisabled,可让 SDK 在内部遵循较长的 Retry-After 等待时间。

Discord

  • 遇到速率限制错误(HTTP 429)、请求超时、HTTP 5xx 响应,以及 DNS 查询失败、连接重置、套接字关闭和获取失败等临时传输故障时进行重试。
  • 如果有 Discord retry_after,则使用该值;否则使用指数退避。

Telegram

  • 遇到临时错误(429、超时、连接失败/重置/关闭、暂时不可用)时进行重试。
  • 如果有 retry_after,则使用该值;否则使用指数退避。
  • HTML/Markdown 解析错误不会重试;首次尝试失败后会回退到纯文本。

配置

~/.openclaw/openclaw.json 中按提供商设置重试策略:

json5
{  channels: {    telegram: {      retry: {        attempts: 3,        minDelayMs: 400,        maxDelayMs: 30000,        jitter: 0.1,      },    },    discord: {      retry: {        attempts: 3,        minDelayMs: 500,        maxDelayMs: 30000,        jitter: 0.1,      },    },  },}

注意事项

  • 重试按每个请求应用(发送消息、上传媒体、表情回应、投票、贴纸)。
  • 组合流程不会重试已完成的步骤。

相关内容

Was this useful?
On this page

On this page