跳到主要内容

重试策略 (Retry Policy)

目标

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

默认值

  • 尝试次数 (Attempts):3
  • 最大延迟上限 (Max delay cap):30000 ms
  • 抖动 (Jitter):0.1 (10%)
  • 提供商默认设置:
    • Telegram 最小延迟:400 ms
    • Discord 最小延迟:500 ms

行为

Discord

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

Telegram

  • 在暂时性错误(429、超时、连接重置/关闭、暂时不可用)时重试。
  • 如果可用,使用 retry_after,否则使用指数退避。
  • Markdown 解析错误不会重试;它们会回退到纯文本。

配置

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

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

注意事项

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