Как проявляется
Бот Discord теряет соединение с WebSocket (коды 1005/1006), пытается восстановить сессию, но зацикливается на попытках с возрастающим интервалом, оставаясь офлайн до получаса и дольше.
Из-за чего возникает
OpenClaw не ограничивает максимальный интервал повторных попыток подключения, не сбрасывает счётчик попыток восстановления при повторных ошибках, и не переходит на новую сессию (IDENTIFY) после нескольких неудачных попыток resume. Это приводит к бесконечному циклу, так как Discord инвалидирует сессию примерно через 5 минут.
Как исправить
- В логике восстановления соединения Discord в OpenClaw реализуйте ограничение максимального времени бэкоффа, например, 60 секунд с джиттером.
- После 3 последовательных неудачных попыток resume сбрасывайте session_id и sequence, чтобы инициировать новую сессию через IDENTIFY.
- При получении кодов 1005/1006 попытайтесь resume только один раз, затем переходите на свежий connect с новой сессией.
- Добавьте circuit-breaker: если цикл переподключений длится более 5 минут, принудительно выполняйте полный reconnect с новым IDENTIFY.
Пример кода (TypeScript):
const MAX_BACKOFF_MS = 60000;
const MAX_RESUME_ATTEMPTS = 3;
const CIRCUIT_BREAKER_MS = 5 * 60 * 1000;
let resumeAttempts = 0;
let reconnectStartedAt = 0;
function getBackoff(attempt) {
return Math.min(1000 * Math.pow(2, attempt), MAX_BACKOFF_MS);
}
// При ошибке 1005/1006
if (resumeAttempts >= MAX_RESUME_ATTEMPTS || Date.now() - reconnectStartedAt > CIRCUIT_BREAKER_MS) {
// Сброс session_id и sequence
// Новый IDENTIFY
resumeAttempts = 0;
reconnectStartedAt = Date.now();
} else {
resumeAttempts++;
// Попытка resume с backoff
}
- Если используете прокси, убедитесь, что он корректно пропускает трафик Discord (см. комментарий о смене прокси).
Как не столкнуться снова
Следите за обновлениями OpenClaw — ожидается внедрение конфигурации reconnect с ограничением попыток и бэкоффа. Используйте стабильное сетевое соединение и корректно настроенный прокси для Discord.
Источник
Разбор основан на обсуждении в репозитории проекта: issue #13688.
Другие типичные проблемы — в разделе ошибок и решений, а базовая настройка разобрана в первом запуске.