Failover моделей
OpenClaw обрабатывает сбои в два этапа:- Ротация профилей аутентификации в рамках текущего провайдера.
- Fallback модели к следующей модели в
agents.defaults.model.fallbacks.
Хранилище аутентификации (ключи + OAuth)
OpenClaw использует профили аутентификации как для ключей API, так и для OAuth‑токенов.- Секреты хранятся в
~/.openclaw/agents/<agentId>/agent/auth-profiles.json(устаревшее:~/.openclaw/agent/auth-profiles.json). - Конфиги
auth.profiles/auth.orderсодержат только метаданные и маршрутизацию (без секретов). - Устаревший файл OAuth только для импорта:
~/.openclaw/credentials/oauth.json(импортируется вauth-profiles.jsonпри первом использовании).
type: "api_key"→{ provider, key }type: "oauth"→{ provider, access, refresh, expires, email? }(+projectId/enterpriseUrlдля некоторых провайдеров)
Идентификаторы профилей
Входы OAuth создают отдельные профили, чтобы несколько учетных записей могли сосуществовать.- По умолчанию:
provider:default, когда email недоступен. - OAuth с email:
provider:<email>(например,google-antigravity:[email protected]).
~/.openclaw/agents/<agentId>/agent/auth-profiles.json в разделе profiles.
Порядок ротации
Когда у провайдера есть несколько профилей, OpenClaw выбирает порядок следующим образом:- Явная конфигурация:
auth.order[provider](если задано). - Сконфигурированные профили:
auth.profiles, отфильтрованные по провайдеру. - Сохранённые профили: записи в
auth-profiles.jsonдля провайдера.
- Первичный ключ: тип профиля (OAuth перед ключами API).
- Вторичный ключ:
usageStats.lastUsed(сначала самые старые, в пределах каждого типа). - Профили в кулдауне/отключённые перемещаются в конец, упорядоченные по ближайшему времени окончания.
Привязка к сеансу (cache‑friendly)
OpenClaw закрепляет выбранный профиль аутентификации за сеансом, чтобы поддерживать тёплые кэши провайдера. Ротация не выполняется на каждый запрос. Закреплённый профиль используется повторно, пока:- сеанс не будет сброшен (
/new//reset) - уплотнение завершает (прибавление количества уплотнений)
- профиль не окажется в кулдауне/отключён
/model …@<profileId> устанавливает пользовательское переопределение для этого сеанса
и не ротируется автоматически до начала нового сеанса.
Автоматически закреплённые профили (выбранные маршрутизатором сеанса) рассматриваются как предпочтение:
они пробуются первыми, но OpenClaw может перейти к другому профилю при rate limit/таймаутах.
Пользовательски закреплённые профили остаются привязанными к этому профилю; если он не срабатывает и настроены fallback моделей,
OpenClaw переходит к следующей модели вместо переключения профилей.
Почему OAuth может «казаться потерянным»
Если у вас есть и OAuth‑профиль, и профиль с ключом API для одного и того же провайдера, round‑robin может переключаться между ними от сообщения к сообщению, если профиль не закреплён. Чтобы принудительно использовать один профиль:- Закрепите его с помощью
auth.order[provider] = ["provider:profileId"], или - Используйте переопределение на сеанс через
/model …с переопределением профиля (если поддерживается вашим UI/чат‑интерфейсом).
Перезарядки
Когда профиль терпит неудачу из‑за ошибок аутентификации/ограничений скорости (или таймаута, который выглядит как ограничение скорости), OpenClaw помечает его кулдауном и переходит к следующему профилю. Ошибки формата/некорректного запроса (например, сбои валидации ID вызова инструмента Cloud Code Assist) считаются достойными failover и используют те же кулдауны. Кулдауны используют экспоненциальную задержку:- 1 минута
- 5 минут
- 25 минут
- 1 час (предел)
auth-profiles.json в разделе usageStats:
Отключения из‑за биллинга
Сбои биллинга/кредитов (например, «недостаточно кредитов» / «слишком низкий кредитный баланс») считаются достойными failover, но обычно они не временные. Вместо короткого кулдауна OpenClaw помечает профиль как отключённый (с более длительной задержкой) и выполняет ротацию к следующему профилю/провайдеру. Состояние хранится вauth-profiles.json:
- Задержка биллинга начинается с 5 часов, удваивается при каждом сбое биллинга и ограничивается 24 часами.
- Счётчики задержки сбрасываются, если профиль не терпел неудач в течение 24 часов (настраивается).
Fallback моделей
Если все профили для провайдера не срабатывают, OpenClaw переходит к следующей модели вagents.defaults.model.fallbacks. Это применяется к сбоям аутентификации, ограничениям скорости и
таймаутам, исчерпавшим ротацию профилей (другие ошибки не продвигают fallback).
Когда запуск начинается с переопределением модели (хуки или CLI), fallback всё равно заканчиваются на
agents.defaults.model.primary после попыток всех настроенных fallback.
Связанная конфигурация
См. Конфигурация Gateway (шлюз) для:auth.profiles/auth.orderauth.cooldowns.billingBackoffHours/auth.cooldowns.billingBackoffHoursByProviderauth.cooldowns.billingMaxHours/auth.cooldowns.failureWindowHoursagents.defaults.model.primary/agents.defaults.model.fallbacks- маршрутизации
agents.defaults.imageModel