메인 콘텐츠로 건너뛰기

Retry policy

Goals

  • multi-step flow 전체가 아니라 HTTP request 단위로 retry
  • 현재 step만 retry해서 ordering 보존
  • non-idempotent operation 중복 실행 방지

Defaults

  • Attempts: 3
  • Max delay cap: 30000 ms
  • Jitter: 0.1 (10 percent)
  • Provider defaults:
    • Telegram min delay: 400 ms
    • Discord min delay: 500 ms

Behavior

Discord

  • rate-limit error (HTTP 429)에서만 retry
  • 가능하면 Discord의 retry_after를 사용하고, 없으면 exponential backoff 사용

Telegram

  • transient error (429, timeout, connect/reset/closed, temporarily unavailable)에서 retry
  • 가능하면 retry_after를 사용하고, 없으면 exponential backoff 사용
  • Markdown parse error는 retry하지 않고 plain text로 fallback

Configuration

provider별 retry policy는 ~/.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,
      },
    },
  },
}

Notes

  • retry는 request별로 적용됩니다 (message send, media upload, reaction, poll, sticker)
  • composite flow에서는 이미 완료된 step을 다시 retry하지 않습니다