Перейти к основному содержанию

Политика повторных попыток

Цели

  • Повторять попытки на уровне отдельного HTTP‑запроса, а не многошагового потока.
  • Сохранять порядок, повторяя только текущий шаг.
  • Избегать дублирования неидемпотентных операций.

Значения по умолчанию

  • Попытки: 3
  • Максимальный предел задержки: 30000 мс
  • Jitter: 0.1 (10 процентов)
  • Значения по умолчанию провайдеров:
    • Минимальная задержка Telegram: 400 мс
    • Минимальная задержка Discord: 500 мс

Поведение

Discord

  • Повторные попытки выполняются только при ошибках ограничения по частоте (HTTP 429).
  • Используется retry_after при наличии, иначе — экспоненциальная задержка.

Telegram

  • Повторные попытки выполняются при временных ошибках (429, тайм-аут, connect/reset/closed, временно недоступно).
  • Используется 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,
      },
    },
  },
}

Примечания

  • Повторные попытки применяются к каждому запросу (отправка сообщения, загрузка медиа, реакция, опрос, стикер).
  • Составные потоки не повторяют уже завершённые шаги.