重试策略

重试策略

目标

  • 每个 HTTP 请求重试,不是每个多步流程。
  • 通过仅重试当前步骤保持排序。
  • 避免复制非幂等操作。

默认

  • 尝试:3
  • 最大延迟上限:30000 毫秒
  • 抖动:0.1(10 百分比)
  • 提供者默认:
    • Telegram 最小延迟:400 毫秒
    • Discord 最小延迟:500 毫秒

行为

Discord

  • 仅在速率限制错误(HTTP 429)时重试。
  • 可用时使用 Discord retry_after,否则指数退避。

Telegram

  • 在瞬态错误时重试(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,
      },
    },
  },
}

注意

  • 重试适用于每个请求(消息发送、媒体上传、反应、投票、贴纸)。
  • 复合流程不重试完成的步骤。