Перейти до основного вмісту

Політика повторних спроб

Цілі

  • Повторювати спробу для кожного HTTP-запиту, а не для всього багатокрокового процесу.
  • Зберігати порядок, повторюючи лише поточний крок.
  • Уникати дублювання неідемпотентних операцій.

Типові значення

  • Кількість спроб: 3
  • Максимальна межа затримки: 30000 ms
  • Jitter: 0.1 (10 відсотків)
  • Типові значення для провайдерів:
    • Мінімальна затримка Telegram: 400 ms
    • Мінімальна затримка Discord: 500 ms

Поведінка

Discord

  • Повторює спробу лише при помилках обмеження частоти (HTTP 429).
  • Використовує Discord retry_after, коли доступно, інакше — exponential backoff.

Telegram

  • Повторює спробу при тимчасових помилках (429, timeout, connect/reset/closed, тимчасово недоступно).
  • Використовує retry_after, коли доступно, інакше — exponential backoff.
  • Помилки парсингу Markdown не повторюються; натомість використовується plain text.

Конфігурація

Задайте політику повторних спроб для кожного провайдера в ~/.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,
      },
    },
  },
}

Примітки

  • Повторні спроби застосовуються до кожного запиту окремо (надсилання повідомлення, вивантаження медіа, реакція, poll, sticker).
  • Для складених процесів завершені кроки не повторюються.