Concepts and configuration

Резервне перемикання моделі

OpenClaw обробляє збої у два етапи:

  1. Ротація профілів автентифікації в межах поточного постачальника.
  2. Резервне перемикання моделі на наступну модель у agents.defaults.model.fallbacks.

Потік виконання

  • Визначення стану сеансу

    Визначте активну модель сеансу та бажаний профіль автентифікації.

  • Побудова ланцюжка кандидатів

    Побудуйте ланцюжок моделей-кандидатів на основі поточного вибору моделі та політики резервного перемикання для джерела цього вибору. Налаштовані типові значення, основні моделі завдань cron та автоматично вибрані резервні моделі можуть використовувати налаштовані резервні варіанти; явний вибір користувача для сеансу є строгим.

  • Спроба використати поточного постачальника

    Спробуйте поточного постачальника з урахуванням правил ротації та періоду очікування профілів автентифікації.

  • Перехід у разі помилок, що допускають резервне перемикання

    Якщо можливості цього постачальника вичерпано через помилку, що допускає резервне перемикання, перейдіть до наступної моделі-кандидата.

  • Збереження резервного перевизначення

    Збережіть вибране резервне перевизначення до початку повторної спроби, щоб інші читачі сеансу бачили того самого постачальника й модель, яких збирається використати виконавець. Збережене перевизначення моделі позначається як modelOverrideSource: "auto".

  • Вузький відкат у разі збою

    Якщо резервний кандидат зазнає невдачі, відкотіть лише належні резервному механізму поля перевизначення сеансу, якщо вони досі відповідають цьому кандидату, що зазнав невдачі.

  • Створення FallbackSummaryError після вичерпання варіантів

    Якщо всі кандидати зазнають невдачі, створіть FallbackSummaryError із відомостями про кожну спробу та найближчим часом завершення періоду очікування, якщо він відомий.

  • Це навмисно вужче, ніж «зберегти й відновити весь сеанс». Виконавець відповіді зберігає лише ті поля вибору моделі, якими він керує для резервного перемикання: providerOverride, modelOverride, modelOverrideSource, authProfileOverride, authProfileOverrideSource, authProfileOverrideCompactionCount. Це не дає невдалій повторній спробі резервного перемикання перезаписати новіші непов’язані зміни сеансу, як-от ручну зміну через /model або оновлення ротації сеансу, що відбулося під час виконання спроби.

    Політика джерела вибору

    Джерело вибору визначає, чи дозволено ланцюжок резервного перемикання:

    • Налаштоване типове значення: agents.defaults.model.primary використовує agents.defaults.model.fallbacks.
    • Основна модель агента: agents.list[].model є строгим вибором, якщо об’єкт моделі цього агента не містить власного списку fallbacks. Використовуйте fallbacks: [], щоб явно встановити строгу поведінку, або непорожній список, щоб увімкнути для цього агента резервне перемикання моделей.
    • Автоматичне резервне перевизначення: під час виконання резервний механізм записує providerOverride, modelOverride, modelOverrideSource: "auto" і вибрану початкову модель перед повторною спробою. Це перевизначення продовжує рух налаштованим ланцюжком резервного перемикання, не перевіряючи основну модель для кожного повідомлення, але OpenClaw перевіряє налаштовану початкову модель кожні 5 хвилин (це не налаштовується) та скасовує перевизначення після її відновлення. /new, /reset і sessions.reset також скасовують автоматичні перевизначення. Запуски Heartbeat без явного heartbeat.model скасовують прямі автоматичні перевизначення, коли їхня початкова модель більше не відповідає поточному налаштованому типовому значенню.
    • Користувацьке перевизначення сеансу: /model, засіб вибору моделі, session_status(model=...) і sessions.patch записують modelOverrideSource: "user". Це точний вибір для сеансу. Якщо вибраний постачальник або модель зазнає невдачі до створення відповіді, OpenClaw повідомляє про збій замість відповіді від непов’язаного налаштованого резервного варіанта.
    • Застаріле перевизначення сеансу: старіші записи сеансів можуть містити modelOverride без modelOverrideSource. OpenClaw розглядає їх як користувацькі перевизначення, щоб явний старий вибір не було непомітно перетворено на резервну поведінку.
    • Модель у корисному навантаженні Cron: payload.model / --model завдання cron є основною моделлю завдання, а не користувацьким перевизначенням сеансу. Вона використовує налаштовані резервні варіанти, якщо завдання не містить payload.fallbacks; payload.fallbacks: [] робить виконання cron строгим.

    OpenClaw запам’ятовує нещодавні перевірки основної моделі окремо для кожного сеансу та основної моделі, щоб не повторювати спробу використати несправну основну модель на кожному кроці. Він надсилає видиме сповіщення, коли сеанс переходить на резервну модель, і ще одне — коли повертається до вибраної основної моделі; сповіщення не повторюється на кожному кроці з фіксованою резервною моделлю.

    Кеш пропуску помилок автентифікації

    Типово кожен новий крок зберігає чинну поведінку повторних спроб резервного перемикання: OpenClaw знову пробує кожного налаштованого резервного кандидата, включно з неосновними кандидатами, які нещодавно завершилися помилкою auth або auth_permanent.

    Щоб уникнути повторних помилок автентифікації, увімкніть:

    bash
    OPENCLAW_FALLBACK_SKIP_TTL_MS=60000

    Коли це ввімкнено, після помилки класу автентифікації OpenClaw записує в пам’яті маркер пропуску, обмежений сеансом, для неосновного резервного кандидата. Ключ складається з ідентифікатора сеансу, постачальника та моделі. Основні кандидати ніколи не пропускаються, тому явний користувацький вибір моделі все одно показує справжню помилку автентифікації. Кеш є локальним для процесу й очищується після перезапуску Gateway.

    Значення — це TTL у мілісекундах. 0 або відсутнє значення вимикає кеш. Додатні значення обмежуються діапазоном від 1 секунди до 10 хвилин.

    Видимі користувачеві сповіщення про резервне перемикання

    Коли сеанс переходить на автоматично вибрану резервну модель, OpenClaw надсилає сповіщення про стан у тому самому інтерфейсі відповіді:

    text
    ↪️ Резервне перемикання моделі: <fallback> (вибрано <primary>; <reason>)

    Коли наступна перевірка завершується успішно й сеанс повертається до вибраної основної моделі, OpenClaw надсилає:

    text
    ↪️ Резервне перемикання моделі скасовано: <primary> (раніше <fallback>)

    Ці сповіщення є службовими повідомленнями, а не вмістом асистента. Вони надсилаються один раз для кожної зміни стану, зокрема, коли це можливо, на кроках лише з побічними ефектами, але не повторюються на кроках із фіксованою резервною моделлю. Доставлення обходить звичайне придушення відповіді джерелу, не займає перше місце для відповіді асистента в каналах із гілками та виключається з перетворення тексту на мовлення й вилучення зобов’язань.

    Зберігання даних автентифікації (ключі й OAuth)

    OpenClaw використовує профілі автентифікації як для ключів API, так і для токенів OAuth.

    • Секрети та стан маршрутизації автентифікації під час виконання зберігаються в ~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite.
    • Налаштування auth.profiles / auth.order містять лише метадані й маршрутизацію (без секретів).
    • Застарілий файл OAuth лише для імпорту: ~/.openclaw/credentials/oauth.json (імпортується до сховища автентифікації агента під час першого використання).
    • Застарілі файли auth-profiles.json, auth-state.json і файли auth.json окремих агентів імпортуються командою openclaw doctor --fix.

    Докладніше: OAuth

    Типи облікових даних:

    • type: "api_key"{ provider, key }
    • type: "oauth"{ provider, access, refresh, expires, email? } (+ projectId/enterpriseUrl для деяких постачальників)
    • type: "token" → статичний токен типу bearer, за потреби з терміном дії; OpenClaw не оновлює його (використовується для aws-sdk та інших режимів автентифікації через ланцюжок облікових даних)

    Ідентифікатори профілів

    Входи через OAuth створюють окремі профілі, щоб кілька облікових записів могли співіснувати.

    • Типово: provider:default, якщо адреса електронної пошти недоступна.
    • OAuth з адресою електронної пошти: provider:<email> (наприклад, google-antigravity:user@gmail.com).

    Профілі зберігаються у сховищі профілів автентифікації openclaw-agent.sqlite окремого агента.

    Порядок ротації

    Коли постачальник має кілька профілів, OpenClaw визначає порядок так:

  • Явні налаштування

    auth.order[provider] (якщо задано).

  • Налаштовані профілі

    auth.profiles, відфільтровані за постачальником.

  • Збережені профілі

    Записи профілів автентифікації постачальника в SQLite окремого агента.

  • Якщо явний порядок не налаштовано, OpenClaw використовує циклічний порядок:

    • Основний ключ: тип профілю (OAuth, потім статичний токен, потім ключ API).
    • Додатковий ключ: usageStats.lastUsed (спочатку найстаріші в межах кожного типу).
    • Профілі в періоді очікування або вимкнені профілі переміщуються в кінець і впорядковуються за найближчим часом завершення обмеження.

    Прив’язка до сеансу (зручна для кешування)

    OpenClaw закріплює вибраний профіль автентифікації за сеансом, щоб кеші постачальника залишалися прогрітими. Він не виконує ротацію для кожного запиту. Закріплений профіль використовується повторно, доки:

    • сеанс не буде скинуто (/new / /reset)
    • не завершиться Compaction (лічильник Compaction збільшиться)
    • профіль не опиниться в періоді очікування або не буде вимкнений

    Ручний вибір через /model …@<profileId> задає користувацьке перевизначення для цього сеансу й не підлягає автоматичній ротації до початку нового сеансу.

    Передплата OpenAI Codex із резервним ключем API

    Для агентних моделей OpenAI автентифікація та середовище виконання розділені. openai/gpt-* залишається в середовищі Codex, тоді як автентифікація може перемикатися між профілем передплати Codex і резервним ключем API OpenAI.

    Використовуйте auth.order.openai для порядку, видимого користувачеві:

    json5
    {  auth: {    order: {      openai: ["openai:user@example.com", "openai:api-key-backup"],    },  },}

    Використовуйте openai:* як для профілів OAuth ChatGPT/Codex, так і для профілів із ключами API OpenAI. Коли передплата досягає ліміту використання Codex, OpenClaw записує точний час скидання, якщо Codex його надає, випробовує наступний упорядкований профіль автентифікації та залишає запуск у середовищі Codex. Після настання часу скидання профіль передплати знову стає доступним, і наступний автоматичний вибір може повернутися до нього.

    Використовуйте профіль, закріплений користувачем, лише коли потрібно примусово використовувати один обліковий запис або ключ для цього сеансу. Профілі, закріплені користувачем, навмисно є строгими й не перемикаються непомітно на інший профіль.

    Періоди очікування

    Коли профіль зазнає невдачі через помилки автентифікації чи обмеження частоти запитів (або перевищення часу очікування, схоже на обмеження частоти), OpenClaw позначає його як такий, що перебуває в періоді очікування, і переходить до наступного профілю.

    Що потрапляє до категорії обмеження частоти запитів або перевищення часу очікування

    Ця категорія обмеження частоти ширша за звичайний 429: вона також включає повідомлення постачальників, як-от Too many concurrent requests, ThrottlingException, concurrency limit reached, workers_ai ... quota limit exceeded, throttled, resource exhausted, а також періодичні обмеження вікна використання, як-от weekly limit reached або monthly limit exhausted.

    Помилки формату або недійсного запиту зазвичай є остаточними, оскільки повторна спроба з тим самим корисним навантаженням завершилася б так само. Тому OpenClaw показує їх замість ротації профілів автентифікації. Відомі механізми виправлення під час повторної спроби можна ввімкнути явно: наприклад, помилки перевірки ідентифікатора виклику інструмента Cloud Code Assist очищуються й повторюються один раз відповідно до політики allowFormatRetry. Сумісні з OpenAI помилки причини зупинки, як-от Unhandled stop reason: error, stop reason: error і reason: error, класифікуються як сигнали перевищення часу очікування або резервного перемикання.

    Загальний текст помилки сервера також може потрапити до цієї категорії перевищення часу очікування, якщо джерело відповідає відомому шаблону тимчасової помилки. Наприклад, загальне повідомлення обгортки потоку середовища виконання моделі An unknown error occurred вважається таким, що допускає резервне перемикання, для кожного постачальника, оскільки спільне середовище виконання моделі видає його, коли потоки постачальника завершуються зі stopReason: "aborted" або stopReason: "error" без конкретних відомостей. Корисні навантаження JSON api_error із тимчасовим текстом сервера, як-от internal server error, unknown error, 520, upstream error або backend error, також розглядаються як перевищення часу очікування, що допускає резервне перемикання.

    Специфічний для OpenRouter загальний текст від вищого постачальника, як-от окреме Provider returned error, розглядається як перевищення часу очікування лише тоді, коли контекст постачальника справді є OpenRouter. Загальний внутрішній резервний текст, як-от LLM request failed with an unknown error., обробляється консервативно й сам по собі не запускає резервне перемикання.

    Обмеження retry-after у SDK

    Інакше деякі SDK провайдерів можуть надовго призупиняти виконання на період Retry-After, перш ніж повернути керування OpenClaw. Для SDK на основі Stainless, як-от Anthropic і OpenAI, OpenClaw за замовчуванням обмежує внутрішні очікування SDK за retry-after-ms / retry-after до 60 секунд і негайно передає довші повторювані відповіді, щоб цей шлях перемикання після збою міг виконатися. Налаштуйте або вимкніть це обмеження за допомогою OPENCLAW_SDK_RETRY_MAX_WAIT_SECONDS; див. Поведінка повторних спроб.

    Періоди очікування для окремих моделей

    Періоди очікування через обмеження частоти запитів також можуть застосовуватися до окремої моделі:

    • OpenClaw записує cooldownModel для збоїв через обмеження частоти запитів, коли відомий ідентифікатор моделі, що дала збій.
    • Іншу модель того самого провайдера все одно можна випробувати, якщо період очікування застосовується до іншої моделі.
    • Періоди блокування через оплату або вимкнення все одно блокують увесь профіль для всіх моделей.

    Звичайні періоди очікування (не пов’язані з оплатою чи постійним збоєм автентифікації) збільшуються залежно від кількості нещодавніх помилок профілю:

    • 1-й збій: 30 секунд
    • 2-й збій: 1 хвилина
    • 3-й і наступні збої: 5 хвилин (максимум)

    Лічильники скидаються після завершення вікна збоїв профілю (auth.cooldowns.failureWindowHours, за замовчуванням 24).

    Стан зберігається в стані автентифікації SQLite для окремого агента в usageStats:

    json
    {  "usageStats": {    "provider:profile": {      "lastUsed": 1736160000000,      "cooldownUntil": 1736160600000,      "errorCount": 2    }  }}

    Вимкнення через оплату

    Збої оплати або кредитного балансу (наприклад, "недостатньо кредитів" / "занадто низький кредитний баланс") вважаються підставою для перемикання після збою, але зазвичай вони не є тимчасовими. Замість короткого періоду очікування OpenClaw позначає профіль як вимкнений (із довшою затримкою) і переходить до наступного профілю або провайдера.

    Постійні збої автентифікації з високою достовірністю (відкликані або деактивовані ключі, деактивовані робочі простори) обробляються подібним шляхом вимкнення, але відновлюються значно швидше, ніж після збоїв оплати, оскільки під час інцидентів деякі провайдери можуть тимчасово повертати дані, схожі на помилки автентифікації.

    Стан зберігається в стані автентифікації SQLite для окремого агента:

    json
    {  "usageStats": {    "provider:profile": {      "disabledUntil": 1736178000000,      "disabledReason": "billing"    }  }}

    Значення за замовчуванням (auth.cooldowns.*):

    Ключ За замовчуванням Призначення
    billingBackoffHours 5 Базова затримка через оплату, подвоюється після кожного збою оплати
    billingMaxHours 24 Максимальна затримка через оплату
    authPermanentBackoffMinutes 10 Базова затримка для постійних збоїв автентифікації з високою достовірністю
    authPermanentMaxMinutes 60 Максимальне значення цієї затримки
    failureWindowHours 24 Лічильники збоїв скидаються, якщо протягом цього вікна не відбувається жодного збою
    overloadedProfileRotations 1 Кількість дозволених перемикань профілів того самого провайдера до резервної моделі в разі перевантаження
    overloadedBackoffMs 0 Фіксована затримка перед повторною спробою перемикання через перевантаження
    rateLimitedProfileRotations 1 Кількість дозволених перемикань профілів того самого провайдера до резервної моделі в разі обмеження частоти запитів

    Помилки перевантаження та обмеження частоти запитів обробляються активніше, ніж періоди очікування через оплату: за замовчуванням OpenClaw дозволяє одну повторну спробу з профілем автентифікації того самого провайдера, а потім без очікування переходить до наступної налаштованої резервної моделі.

    Перехід на резервну модель

    Якщо всі профілі провайдера завершуються помилкою, OpenClaw переходить до наступної моделі в agents.defaults.model.fallbacks. Це стосується збоїв автентифікації, обмежень частоти запитів і тайм-аутів, після яких вичерпано перемикання профілів (інші помилки не спричиняють переходу до резервної моделі). Помилки провайдера, що не містять достатньо подробиць, усе одно точно позначаються в стані резервного переходу: empty_response означає, що провайдер не повернув придатного повідомлення або стану, no_error_details означає, що провайдер явно повернув Unknown error (no error details in response), а unclassified означає, що OpenClaw зберіг необроблений попередній перегляд, але жоден класифікатор іще не знайшов відповідності.

    Сигнали зайнятості провайдера, як-от ModelNotReadyException, потрапляють до категорії перевантаження та дотримуються тієї самої політики: одне перемикання профілю, а потім перехід до резервної моделі, як і для обмежень частоти запитів (див. таблицю значень за замовчуванням вище).

    Коли запуск починається з налаштованої основної моделі за замовчуванням, основної моделі завдання Cron, основної моделі агента з явно заданими резервними моделями або автоматично вибраного перевизначення резервної моделі, OpenClaw може пройти відповідний налаштований ланцюжок резервних моделей. Основні моделі агентів без явно заданих резервних моделей і явні вибори користувача (наприклад, /model ollama/qwen3.5:27b, засіб вибору моделі, sessions.patch або одноразові перевизначення провайдера чи моделі в CLI) є суворими: якщо цей провайдер або модель недоступні чи завершуються помилкою до створення відповіді, OpenClaw повідомляє про збій замість відповіді від не пов’язаної резервної моделі.

    Правила ланцюжка кандидатів

    OpenClaw формує список кандидатів із поточного запитаного provider/model і налаштованих резервних моделей.

    Правила
    • Запитана модель завжди перша.
    • Явно налаштовані резервні моделі дедуплікуються, але не фільтруються за списком дозволених моделей. Вони вважаються явним наміром оператора.
    • Якщо поточний запуск уже використовує налаштовану резервну модель із тієї самої родини провайдерів, OpenClaw продовжує використовувати повний налаштований ланцюжок.
    • Якщо явне перевизначення резервних моделей не передано, налаштовані резервні моделі випробовуються перед налаштованою основною моделлю, навіть якщо запитана модель використовує іншого провайдера.
    • Якщо засобу виконання резервних моделей не передано явне перевизначення, налаштована основна модель додається в кінці, щоб після вичерпання попередніх кандидатів ланцюжок міг повернутися до звичайної моделі за замовчуванням.
    • Коли виклик передає fallbacksOverride, засіб виконання використовує лише запитану модель і цей список перевизначення. Порожній список вимикає перехід на резервну модель та не дозволяє приховано додати налаштовану основну модель як ціль повторної спроби.

    Які помилки спричиняють перехід до наступної резервної моделі

    Продовжує в разі

    • збоїв автентифікації
    • обмежень частоти запитів і вичерпання періоду очікування
    • помилок перевантаження або зайнятості провайдера
    • помилок перемикання після збою, схожих на тайм-аут
    • вимкнення через оплату
    • LiveSessionModelSwitchError, що нормалізується в шлях перемикання після збою, щоб застаріла збережена модель не створювала зовнішній цикл повторних спроб
    • інших нерозпізнаних помилок, якщо ще залишаються кандидати

    Не продовжує в разі

    • явних переривань, що не схожі на тайм-аут або перемикання після збою
    • помилок переповнення контексту, які мають оброблятися логікою Compaction або повторних спроб (наприклад, request_too_large, input token count exceeds the maximum number of input tokens, input exceeds the maximum number of tokens, input too long for the model або ollama error: context length exceeded)
    • останньої невідомої помилки, коли кандидатів більше немає
    • відмов Claude Fable 5 з міркувань безпеки; запити безпосередньо з ключем API обробляють їх на рівні провайдера через серверний резервний перехід Anthropic до claude-opus-4-8 (див. Anthropic)

    Пропуск періоду очікування та поведінка перевірки

    Коли всі профілі автентифікації провайдера вже перебувають у періоді очікування, OpenClaw не пропускає цього провайдера автоматично назавжди. Рішення приймається окремо для кожного кандидата:

    Рішення для кожного кандидата
    • Постійні збої автентифікації спричиняють негайний пропуск усього провайдера.
    • Вимкнення через оплату зазвичай спричиняє пропуск, але основного кандидата все одно можна періодично перевіряти, щоб відновлення було можливим без перезапуску.
    • Основного кандидата можна перевіряти незадовго до завершення періоду очікування з окремим обмеженням частоти для кожного провайдера.
    • Резервні моделі того самого провайдера можна випробувати попри період очікування, якщо збій виглядає тимчасовим (rate_limit, overloaded або невідомий). Це особливо важливо, коли обмеження частоти запитів застосовується до окремої моделі й інша модель може відновитися негайно.
    • Тимчасові перевірки під час періоду очікування обмежені однією на провайдера за один запуск резервного переходу, щоб окремий провайдер не затримував перехід між провайдерами.

    Перевизначення сеансу та перемикання моделі в реальному часі

    Зміни моделі сеансу є спільним станом. Активний засіб виконання, команда /model, оновлення Compaction або сеансу та узгодження активного сеансу читають або записують частини одного запису сеансу.

    Це означає, що повторні спроби з резервними моделями мають узгоджуватися з перемиканням моделі в реальному часі:

    • Лише явні зміни моделі, ініційовані користувачем, позначають очікуване перемикання в реальному часі. До них належать /model, session_status(model=...) і sessions.patch.
    • Системні зміни моделі, як-от ротація резервних моделей, перевизначення Heartbeat або Compaction, самі по собі ніколи не позначають очікуване перемикання в реальному часі.
    • Ініційовані користувачем перевизначення моделі вважаються точним вибором для політики резервного переходу, тому недоступність вибраного провайдера відображається як збій, а не приховується за допомогою agents.defaults.model.fallbacks.
    • Перед початком повторної спроби з резервною моделлю засіб формування відповіді зберігає вибрані поля перевизначення резервної моделі в записі сеансу.
    • Автоматичні перевизначення резервної моделі залишаються вибраними в наступних взаємодіях, щоб OpenClaw не перевіряв завідомо несправну основну модель для кожного повідомлення. OpenClaw періодично знову перевіряє налаштоване джерело й очищає автоматичне перевизначення після його відновлення; /new, /reset і sessions.reset негайно очищають автоматично створені перевизначення.
    • Відповіді користувачеві повідомляють про переходи на резервну модель і відновлення з очищенням резервного переходу один раз для кожної зміни стану. Подальші взаємодії зі сталою резервною моделлю не повторюють це повідомлення.
    • /status показує вибрану модель, а якщо стан резервного переходу відрізняється — активну резервну модель і причину.
    • Узгодження активного сеансу надає перевагу збереженим перевизначенням сеансу над застарілими полями моделі середовища виконання.
    • Якщо помилка перемикання в реальному часі вказує на пізнішого кандидата в активному ланцюжку резервних моделей, OpenClaw переходить безпосередньо до цієї вибраної моделі, не перебираючи спочатку не пов’язаних кандидатів.
    • Якщо спроба з резервною моделлю завершується помилкою, засіб виконання відкочує лише записані ним поля перевизначення і лише тоді, коли вони досі відповідають кандидату, що завершився помилкою.

    Це запобігає класичному стану гонитви:

  • Основна модель завершується помилкою

    Вибрана основна модель завершується помилкою.

  • Резервну модель вибрано в пам’яті

    Кандидата резервної моделі вибрано в пам’яті.

  • Сховище сеансу все ще містить стару основну модель

    Сховище сеансу все ще відображає стару основну модель.

  • Узгодження в реальному часі читає застарілий стан

    Узгодження активного сеансу читає застарілий стан сеансу.

  • Повторна спроба повертається назад

    Перед початком спроби з резервною моделлю повторна спроба повертається до старої моделі.

  • Збережене перевизначення резервної моделі закриває це вікно, а вузький відкат зберігає новіші ручні зміни сеансу або зміни середовища виконання.

    Спостережуваність і підсумки збоїв

    runWithModelFallback(...) записує відомості про кожну спробу, які використовуються в журналах і повідомленнях користувачеві про період очікування:

    • випробуваний постачальник/модель
    • причина (rate_limit, overloaded, billing, auth, model_not_found та подібні причини перемикання на резервний варіант)
    • необов’язковий статус/код
    • зрозумілий для людини опис помилки

    Структуровані журнали model_fallback_decision також містять плоскі поля fallbackStep*, коли кандидат завершується помилкою, пропускається або пізніший резервний варіант спрацьовує успішно. Ці поля явно описують виконаний перехід (fallbackStepFromModel, fallbackStepToModel, fallbackStepFromFailureReason, fallbackStepFromFailureDetail, fallbackStepFinalOutcome), щоб експортери журналів і діагностичних даних могли відтворити первинну помилку, навіть якщо кінцевий резервний варіант також завершується помилкою.

    Коли всі кандидати завершуються помилкою, OpenClaw створює виняток FallbackSummaryError. Зовнішній засіб виконання відповіді може використати його, щоб сформувати точніше повідомлення, наприклад «для всіх моделей тимчасово перевищено ліміт запитів», і вказати найближчий час завершення періоду очікування, якщо він відомий.

    Це зведення про період очікування враховує модель:

    • непов’язані обмеження частоти запитів на рівні моделі ігноруються для випробуваного ланцюжка постачальників/моделей
    • якщо активне блокування, що залишилося, є відповідним обмеженням частоти запитів на рівні моделі, OpenClaw повідомляє останній відповідний час завершення, до якого ця модель усе ще заблокована

    Пов’язана конфігурація

    Див. конфігурацію Gateway, щоб дізнатися про:

    • auth.profiles / auth.order
    • auth.cooldowns.billingBackoffHours / auth.cooldowns.billingBackoffHoursByProvider
    • auth.cooldowns.billingMaxHours / auth.cooldowns.failureWindowHours
    • auth.cooldowns.authPermanentBackoffMinutes / auth.cooldowns.authPermanentMaxMinutes
    • auth.cooldowns.overloadedProfileRotations / auth.cooldowns.overloadedBackoffMs
    • auth.cooldowns.rateLimitedProfileRotations
    • agents.defaults.model.primary / agents.defaults.model.fallbacks
    • маршрутизацію agents.defaults.imageModel

    Див. Моделі, щоб отримати ширший огляд вибору моделей і перемикання на резервні варіанти.

    Was this useful?
    On this page

    On this page