Chính sách Retry

Mục tiêu

  • Retry theo từng HTTP request, không phải theo toàn bộ luồng nhiều bước.
  • Giữ nguyên thứ tự bằng cách chỉ retry bước hiện tại.
  • Tránh lặp lại các thao tác không idempotent.

Cài đặt mặc định

  • Số lần thử: 3
  • Độ trễ tối đa: 30000 ms
  • Jitter: 0.1 (10%)
  • Cài đặt mặc định theo provider:
    • Telegram độ trễ tối thiểu: 400 ms
    • Discord độ trễ tối thiểu: 500 ms

Hành vi

Discord

  • Chỉ retry khi gặp lỗi rate-limit (HTTP 429).
  • Sử dụng giá trị retry_after của Discord nếu có, nếu không thì dùng exponential backoff.

Telegram

  • Retry khi gặp lỗi tạm thời (429, timeout, connect/reset/closed, temporarily unavailable).
  • Sử dụng giá trị retry_after nếu có, nếu không thì dùng exponential backoff.
  • Lỗi parse Markdown sẽ không retry; thay vào đó sẽ fallback về plain text.

Cấu hình

Cài đặt chính sách retry cho từng provider trong ~/.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,
      },
    },
  },
}

Lưu ý

  • Retry áp dụng cho từng request (gửi tin nhắn, upload media, reaction, poll, sticker).
  • Các luồng phức hợp không retry lại các bước đã hoàn thành.