Política de reintentos

Objetivos

  • Reintentar por solicitud HTTP, no por flujo multi-paso.
  • Preservar el orden reintentando solo el paso actual.
  • Evitar duplicar operaciones no idempotentes.

Valores por defecto

  • Intentos: 3
  • Tope máximo de delay: 30000 ms
  • Jitter: 0.1 (10 por ciento)
  • Valores por defecto por proveedor:
    • Delay mínimo de Telegram: 400 ms
    • Delay mínimo de Discord: 500 ms

Comportamiento

Discord

  • Solo reintenta en errores de límite de tasa (HTTP 429).
  • Usa retry_after de Discord cuando está disponible, de lo contrario backoff exponencial.

Telegram

  • Reintenta en errores transitorios (429, timeout, connect/reset/closed, temporalmente no disponible).
  • Usa retry_after cuando está disponible, de lo contrario backoff exponencial.
  • Los errores de parseo de Markdown no se reintentan; recurren a texto plano.

Configuración

Configura la política de reintentos por proveedor en ~/.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,
      },
    },
  },
}

Notas

  • Los reintentos aplican por solicitud (envío de mensaje, subida de media, reacción, encuesta, sticker).
  • Los flujos compuestos no reintentan pasos ya completados.