リトライポリシー

目標

  • リトライはHTTPリクエスト単位で行い、マルチステップフロー単位ではない。
  • 現在のステップだけをリトライすることで順序を保つ。
  • 冪等でない操作の重複実行を避ける。

デフォルト値

  • 試行回数:3
  • 最大遅延上限:30000 ms
  • ジッター:0.1(10パーセント)
  • プロバイダ別のデフォルト:
    • Telegram 最小遅延:400 ms
    • Discord 最小遅延:500 ms

動作

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,
      },
    },
  },
}

補足

  • リトライはリクエスト単位(メッセージ送信、メディアアップロード、リアクション、投票、スタンプ)で適用される。
  • 複合フローでは完了済みステップのリトライは行われない。