Вопрос

OpenClaw: как собрать цепочку запасных моделей

Настройка agents.defaults.model.fallbacks и проверка переключения, когда основной провайдер упал.

· 3 мин чтения

Коротко

  • В OpenClaw 2026.10.1 фолбэк задаётся списком в agents.defaults.model.fallbacks: сначала ротация auth-профилей у текущего провайдера, затем переход к следующей модели.
  • Цепочка работает для настроенной модели по умолчанию, крон-задач и авто-выбора. Пользовательский выбор модели остаётся строгим, фолбэк не используется.
  • Проверяйте маршруты командой openclaw models status с флагом --check или --probe.
  • Когда все кандидаты исчерпаны, OpenClaw сообщает о терминальной ошибке с детализацией попыток и временем ближайшей паузы.

Сверено с документацией OpenClaw 2026.10.1, 11 октября 2026.

В OpenClaw 2026.10.1 есть встроенный фолбэк моделей. Ниже минимальный конфиг, проверка статуса и подводные камни.

Как устроен фолбэк в OpenClaw

Перед сменой модели исполнитель запросов делает ограниченные повторы на текущей: временное превышение лимита запросов и сбой провайдера обрабатываются в одном запуске, частичный ответ и завершённые шаги сохраняются. Если эти попытки исчерпаны, OpenClaw берёт следующего кандидата из цепочки. Транскрипт при этом продолжается, а агенту передают указание проверить прерванные действия перед повтором.

Сессия не меняет выбранную модель: фолбэк действует только на текущий ход, и /status помечает, что ответил другой провайдер. На следующий ход OpenClaw снова пробует основной маршрут. Когда все кандидаты исчерпаны, OpenClaw сообщает о терминальной ошибке с детализацией попыток и временем ближайшей паузы.

Конфиг цепочки

{
  agents: {
    defaults: {
      model: {
        primary: "anthropic/claude-opus-4-6",
        fallbacks: ["minimax/MiniMax-M2.7"],
      },
    },
  },
}

У одного агента можно переопределить только цепочку и оставить общий основной маршрут. Для этого задайте model: { fallbacks: [...] } без своего primary: он унаследуется. Пустой массив fallbacks: [] явно отключает фолбэк для агента.

Проверка переключения

Перед боевым тестом посмотрите, что маршруты рабочие и фолбэк в конфиге не пустой:

openclaw models status
openclaw models status --json

Код возврата появляется с флагом --check: 0, если проблем с аутентификацией и рантаймом не найдено (успешный запрос это не гарантирует), 1, если есть проблемы с аутентификацией или рантаймом либо готовность не удалось подтвердить, 2, если срок действия выбранных учётных данных скоро истечёт. --probe делает живые запросы и тратит токены: запускайте эту проверку, только когда готовы за неё платить. Прямой --probe требует монопольного доступа к каталогу состояния, поэтому сначала остановите Gateway: openclaw gateway stop.

Когда фолбэк не сработает

  • Пользователь выбрал модель через /model для сессии. Это строгий выбор: при сбое этого маршрута OpenClaw сообщит об ошибке, а не пойдёт по общей цепочке.
  • Крон-задача задала свой payload.model и payload.fallbacks: []. Запуск становится строгим и не использует общую цепочку.
  • В fallbacks указана модель, которой нет в локальном каталоге (свежий релиз или своё размещение). Для основной модели models set сохранит такой реф с предупреждением, а config set его отклонит. Цепочку правьте через openclaw models fallbacks add, а реф заранее сверьте с openclaw models list --all.

Когда не включать фолбэк

  • Запасная модель сильно слабее основной и регулярно подменяет её на важных задачах. Проверьте качество на собственных сценариях, а не на демонстрационном наборе данных.

Частые ошибки

  • Вписали в fallbacks модель без провайдера, например MiniMax-M2.7 вместо minimax/MiniMax-M2.7. OpenClaw попробует алиас, затем единственное совпадение среди настроенных провайдеров, затем провайдера по умолчанию (устаревший путь совместимости), а если у него такой модели нет — первую настроенную модель. В итоге выбор может оказаться не тем.
  • Проверили models status, даже с --check, и решили, что всё работает. Код 0 значит лишь, что проблем с аутентификацией и рантаймом не найдено, — успешный запрос он не гарантирует. Реально модель вызывает только --probe.