跳转到内容

重试策略

  • 针对每个 HTTP 请求进行重试,而不是针对多步骤工作流。
  • 通过仅重试当前步骤来保持顺序。
  • 避免重复非幂等操作。
  • 尝试次数:3
  • 最大延迟上限:30000 毫秒
  • 抖动:0.1(10%)
  • 提供商默认值:
    • Telegram 最小延迟:400 毫秒
    • Discord 最小延迟:500 毫秒
  • OpenClaw 允许提供商 SDK 处理正常的短期重试。
  • 对于基于 Stainless 的 SDK(例如 Anthropic 和 OpenAI),可重试的响应 (4084094295xx) 可能包含 retry-after-msretry-after。当该等待时间超过 60 秒时,OpenClaw 会注入 x-should-retry: false,以便 SDK 立即显示错误,并且模型 故障转移可以轮换到其他身份验证配置文件或回退模型。
  • 使用 OPENCLAW_SDK_RETRY_MAX_WAIT_SECONDS=<seconds> 覆盖上限。 将其设置为 0falseoffnonedisabled,以允许 SDK 在内部执行长 Retry-After 休眠。
  • 在速率限制错误(HTTP 429)、请求超时、HTTP 5xx 响应以及瞬态传输故障(如 DNS 查找失败、连接重置、套接字关闭和获取失败)时重试。
  • 如果可用,使用 Discord retry_after,否则使用指数退避。
  • 对瞬时错误进行重试(429、超时、连接/重置/关闭、暂时不可用)。
  • 如果可用,使用 retry_after,否则使用指数退避。
  • Markdown 解析错误不会重试;它们会回退到纯文本。

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

{
channels: {
telegram: {
retry: {
attempts: 3,
minDelayMs: 400,
maxDelayMs: 30000,
jitter: 0.1,
},
},
discord: {
retry: {
attempts: 3,
minDelayMs: 500,
maxDelayMs: 30000,
jitter: 0.1,
},
},
},
}
  • 重试应用于每个请求(消息发送、媒体上传、反应、投票、贴纸)。
  • 复合工作流不会重试已完成的步骤。