- Rotacja profilu uwierzytelniania w ramach bieżącego dostawcy.
- Fallback modelu do następnego modelu w
agents.defaults.model.fallbacks.
Przepływ w czasie wykonania
Dla zwykłego uruchomienia tekstowego OpenClaw ocenia kandydatów w tej kolejności:Zbuduj łańcuch kandydatów
Zbuduj łańcuch kandydatów modeli na podstawie bieżącego wyboru modelu i zasad fallback dla źródła tego wyboru. Skonfigurowane wartości domyślne, modele główne zadań cron i automatycznie wybrane modele fallback mogą używać skonfigurowanych fallbacków; jawne wybory sesji użytkownika są ścisłe.
Wypróbuj bieżącego dostawcę
Wypróbuj bieżącego dostawcę z regułami rotacji/ochłodzenia profili uwierzytelniania.
Przejdź dalej przy błędach kwalifikujących się do przełączenia awaryjnego
Jeśli ten dostawca zostanie wyczerpany z błędem kwalifikującym się do przełączenia awaryjnego, przejdź do następnego kandydata modelu.
Utrwal nadpisanie fallback
Utrwal wybrane nadpisanie fallback przed rozpoczęciem ponownej próby, aby inni czytelnicy sesji widzieli tego samego dostawcę/model, którego runner zaraz użyje. Utrwalone nadpisanie modelu jest oznaczone jako
modelOverrideSource: "auto".Wycofaj wąsko przy niepowodzeniu
Jeśli kandydat fallback zawiedzie, wycofaj tylko pola nadpisania sesji należące do fallback, gdy nadal odpowiadają temu nieudanemu kandydatowi.
providerOverridemodelOverridemodelOverrideSourceauthProfileOverrideauthProfileOverrideSourceauthProfileOverrideCompactionCount
/model lub aktualizacje rotacji sesji, które nastąpiły w trakcie działania próby.
Zasady źródła wyboru
OpenClaw oddziela wybranego dostawcę/model od powodu, dla którego został wybrany. To źródło kontroluje, czy łańcuch fallback jest dozwolony:- Skonfigurowana wartość domyślna:
agents.defaults.model.primaryużywaagents.defaults.model.fallbacks. - Model główny agenta:
agents.list[].modeljest ścisły, chyba że obiekt modelu tego agenta zawiera własnefallbacks. Użyjfallbacks: [], aby jawnie wskazać ścisłe zachowanie, albo podaj niepustą listę, aby włączyć fallback modelu dla tego agenta. - Automatyczne nadpisanie fallback: fallback w czasie wykonania zapisuje
providerOverride,modelOverride,modelOverrideSource: "auto"i wybrany model źródłowy przed ponowną próbą. To automatyczne nadpisanie może dalej przechodzić przez skonfigurowany łańcuch fallback bez sprawdzania modelu głównego przy każdej wiadomości, ale OpenClaw okresowo ponownie sprawdza skonfigurowane źródło i czyści automatyczne nadpisanie, gdy ono się odtworzy./new,/resetisessions.resetrównież czyszczą nadpisania pochodzące z automatycznego źródła. Uruchomienia Heartbeat bez jawnegoheartbeat.modelczyszczą bezpośrednie automatyczne nadpisania, gdy ich źródło nie odpowiada już bieżącej skonfigurowanej wartości domyślnej. - Nadpisanie sesji użytkownika:
/model, selektor modelu,session_status(model=...)isessions.patchzapisująmodelOverrideSource: "user". To jest dokładny wybór sesji. Jeśli wybrany dostawca/model zawiedzie przed wygenerowaniem odpowiedzi, OpenClaw zgłasza awarię zamiast odpowiadać z niepowiązanego skonfigurowanego fallback. - Starsze nadpisanie sesji: starsze wpisy sesji mogą mieć
modelOverridebezmodelOverrideSource. OpenClaw traktuje je jako nadpisania użytkownika, aby jawny stary wybór nie został po cichu przekształcony w zachowanie fallback. - Model ładunku Cron:
payload.model/--modelzadania cron jest modelem głównym zadania, a nie nadpisaniem sesji użytkownika. Używa skonfigurowanych fallbacków, chyba że zadanie podajepayload.fallbacks;payload.fallbacks: []sprawia, że uruchomienie cron jest ścisłe.
Pamięć podręczna pomijania awarii uwierzytelniania
Domyślnie każda nowa tura zachowuje istniejące zachowanie ponawiania fallback: OpenClaw ponownie wypróbuje każdego skonfigurowanego kandydata fallback, w tym kandydatów innych niż główny, którzy niedawno zawiedli zauth lub auth_permanent.
Operatorzy, którzy wolą tłumić te powtarzające się awarie uwierzytelniania, mogą włączyć:
0 lub wartość nieustawiona wyłącza pamięć podręczną.
Wartości dodatnie są ograniczane do zakresu od 1 sekundy do 10 minut.
Powiadomienia fallback widoczne dla użytkownika
Gdy sesja przechodzi na automatycznie wybrany fallback, OpenClaw wysyła powiadomienie statusu w tej samej powierzchni odpowiedzi:Przechowywanie uwierzytelniania (klucze + OAuth)
OpenClaw używa profili uwierzytelniania zarówno dla kluczy API, jak i tokenów OAuth.- Sekrety i stan routingu uwierzytelniania w czasie wykonania znajdują się w
~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite. - Konfiguracja
auth.profiles/auth.orderto tylko metadane + routing (bez sekretów). - Starszy plik OAuth tylko do importu:
~/.openclaw/credentials/oauth.json(importowany do magazynu uwierzytelniania danego agenta przy pierwszym użyciu). - Starsze pliki
auth-profiles.json,auth-state.jsoni plikiauth.jsondla poszczególnych agentów są importowane przezopenclaw doctor --fix.
type: "api_key"→{ provider, key }type: "oauth"→{ provider, access, refresh, expires, email? }(+projectId/enterpriseUrldla niektórych dostawców)
Identyfikatory profili
Logowania OAuth tworzą odrębne profile, aby wiele kont mogło współistnieć.- Domyślnie:
provider:default, gdy adres e-mail nie jest dostępny. - OAuth z adresem e-mail:
provider:<email>(na przykładgoogle-antigravity:user@gmail.com).
openclaw-agent.sqlite danego agenta.
Kolejność rotacji
Gdy dostawca ma wiele profili, OpenClaw wybiera kolejność w taki sposób:
Jeśli nie skonfigurowano jawnej kolejności, OpenClaw używa kolejności round-robin:
- Klucz główny: typ profilu (OAuth przed kluczami API).
- Klucz pomocniczy:
usageStats.lastUsed(najstarsze najpierw, w ramach każdego typu). - Profile w ochłodzeniu/wyłączone są przenoszone na koniec, uporządkowane według najbliższego wygaśnięcia.
Lepkość sesji (przyjazna dla pamięci podręcznych)
OpenClaw przypina wybrany profil uwierzytelniania do sesji, aby utrzymywać ciepłe pamięci podręczne dostawcy. Nie rotuje przy każdym żądaniu. Przypięty profil jest używany ponownie do czasu, gdy:- sesja zostanie zresetowana (
/new//reset) - zakończy się compaction (licznik compaction wzrośnie)
- profil jest w ochłodzeniu/wyłączony
/model …@<profileId> ustawia nadpisanie użytkownika dla tej sesji i nie jest automatycznie rotowany do rozpoczęcia nowej sesji.
Automatycznie przypięte profile (wybrane przez router sesji) są traktowane jako preferencja: są próbowane jako pierwsze, ale OpenClaw może rotować do innego profilu przy limitach szybkości/przekroczeniach czasu. Gdy pierwotny profil znów stanie się dostępny, nowe uruchomienia mogą ponownie go preferować bez zmiany wybranego modelu lub runtime. Profile przypięte przez użytkownika pozostają zablokowane na tym profilu; jeśli zawiedzie, a fallbacki modeli są skonfigurowane, OpenClaw przechodzi do następnego modelu zamiast przełączać profile.
Subskrypcja OpenAI Codex plus zapasowy klucz API
Dla modeli agentów OpenAI uwierzytelnianie i runtime są oddzielne.openai/gpt-* pozostaje w
harnessie Codex, podczas gdy uwierzytelnianie może rotować między profilem subskrypcji Codex a
zapasowym kluczem API OpenAI.
Użyj auth.order.openai dla kolejności widocznej dla użytkownika:
openai:* zarówno dla profili OAuth ChatGPT/Codex, jak i profili
kluczy API OpenAI. Gdy subskrypcja osiągnie limit użycia Codex,
OpenClaw zapisuje dokładny czas resetu, gdy Codex go podaje, wypróbowuje następny
uporządkowany profil uwierzytelniania i utrzymuje uruchomienie w harnessie Codex. Po upływie czasu
resetu profil subskrypcji znów kwalifikuje się do użycia, a następny automatyczny
wybór może do niego wrócić.
Używaj profilu przypiętego przez użytkownika tylko wtedy, gdy chcesz wymusić jedno konto/klucz dla tej
sesji. Profile przypięte przez użytkownika są celowo ścisłe i nie przeskakują po cichu
do innego profilu.
Ochłodzenia
Gdy profil zawiedzie z powodu błędów uwierzytelniania/limitu szybkości (lub przekroczenia czasu, które wygląda jak limit szybkości), OpenClaw oznacza go jako będący w ochłodzeniu i przechodzi do następnego profilu.Co trafia do koszyka limitu szybkości / przekroczenia czasu
Co trafia do koszyka limitu szybkości / przekroczenia czasu
Ten koszyk limitu szybkości jest szerszy niż zwykłe
429: obejmuje również komunikaty dostawców, takie jak Too many concurrent requests, ThrottlingException, concurrency limit reached, workers_ai ... quota limit exceeded, throttled, resource exhausted, oraz okresowe limity okna użycia, takie jak weekly/monthly limit reached.Błędy formatu/nieprawidłowego żądania są zwykle terminalne, ponieważ ponowienie tego samego ładunku zawiodłoby w ten sam sposób, więc OpenClaw je ujawnia zamiast rotować profile uwierzytelniania. Znane ścieżki naprawy przez ponowienie mogą włączyć się jawnie: na przykład awarie walidacji identyfikatora wywołania narzędzia Cloud Code Assist są oczyszczane i ponawiane raz przez zasadę allowFormatRetry. Błędy powodów zatrzymania zgodne z OpenAI, takie jak Unhandled stop reason: error, stop reason: error i reason: error, są klasyfikowane jako sygnały przekroczenia czasu/przełączenia awaryjnego.Ogólny tekst serwera może również trafić do tego koszyka przekroczenia czasu, gdy źródło pasuje do znanego wzorca przejściowego. Na przykład goły komunikat wrappera strumienia runtime modelu An unknown error occurred jest traktowany jako kwalifikujący się do przełączenia awaryjnego dla każdego dostawcy, ponieważ współdzielony runtime modelu emituje go, gdy strumienie dostawcy kończą się z stopReason: "aborted" lub stopReason: "error" bez konkretnych szczegółów. Ładunki JSON api_error z przejściowym tekstem serwera, takim jak internal server error, unknown error, 520, upstream error lub backend error, również są traktowane jako kwalifikujące się do przełączenia awaryjnego przekroczenia czasu.Ogólny tekst upstream specyficzny dla OpenRouter, taki jak gołe Provider returned error, jest traktowany jako przekroczenie czasu tylko wtedy, gdy kontekst dostawcy faktycznie jest OpenRouter. Ogólny wewnętrzny tekst fallback, taki jak LLM request failed with an unknown error., pozostaje konserwatywny i samodzielnie nie wyzwala przełączenia awaryjnego.SDK retry-after caps
SDK retry-after caps
Niektóre SDK dostawców mogłyby w przeciwnym razie czekać przez długie okno
Retry-After, zanim zwrócą sterowanie do OpenClaw. W przypadku SDK opartych na Stainless, takich jak Anthropic i OpenAI, OpenClaw domyślnie ogranicza wewnętrzne oczekiwania SDK retry-after-ms / retry-after do 60 sekund i natychmiast ujawnia dłuższe odpowiedzi nadające się do ponowienia, aby ta ścieżka przełączenia awaryjnego mogła się wykonać. Dostosuj lub wyłącz limit za pomocą OPENCLAW_SDK_RETRY_MAX_WAIT_SECONDS; zobacz Zachowanie ponowień.Model-scoped cooldowns
Model-scoped cooldowns
Okresy wyciszenia po limitach szybkości mogą być także ograniczone do modelu:
- OpenClaw zapisuje
cooldownModeldla błędów limitu szybkości, gdy identyfikator modelu, który zawiódł, jest znany. - Model równorzędny u tego samego dostawcy nadal może zostać wypróbowany, gdy wyciszenie dotyczy innego modelu.
- Okna rozliczeń/wyłączeń nadal blokują cały profil we wszystkich modelach.
- 1 minuta
- 5 minut
- 25 minut
- 1 godzina (limit)
usageStats:
Wyłączenia rozliczeniowe
Błędy rozliczeń/kredytów (na przykład „insufficient credits” / „credit balance too low”) są traktowane jako kwalifikujące się do przełączenia awaryjnego, ale zwykle nie są przejściowe. Zamiast krótkiego wyciszenia OpenClaw oznacza profil jako wyłączony (z dłuższym opóźnieniem) i przechodzi do następnego profilu/dostawcy.Nie każda odpowiedź o charakterze rozliczeniowym ma kod
402 i nie każde HTTP 402 trafia tutaj. OpenClaw utrzymuje jawny tekst rozliczeniowy na ścieżce rozliczeń nawet wtedy, gdy dostawca zwraca zamiast tego 401 lub 403, ale dopasowania specyficzne dla dostawcy pozostają ograniczone do dostawcy, który jest ich właścicielem (na przykład OpenRouter 403 Key limit exceeded).Tymczasowe błędy 402 związane z oknem użycia oraz limitami wydatków organizacji/przestrzeni roboczej są natomiast klasyfikowane jako rate_limit, gdy komunikat wygląda na możliwy do ponowienia (na przykład weekly usage limit exhausted, daily limit reached, resets tomorrow albo organization spending limit exceeded). Pozostają one na krótkiej ścieżce wyciszenia/przełączenia awaryjnego zamiast na długiej ścieżce wyłączenia rozliczeniowego.- Opóźnienie rozliczeniowe zaczyna się od 5 godzin, podwaja się przy każdym błędzie rozliczeniowym i ma limit 24 godzin.
- Liczniki opóźnień resetują się, jeśli profil nie zawiódł przez 24 godziny (konfigurowalne).
- Ponowienia przy przeciążeniu pozwalają na 1 rotację profilu tego samego dostawcy przed awaryjnym przełączeniem modelu.
- Ponowienia przy przeciążeniu domyślnie używają opóźnienia 0 ms.
Awaryjne przełączenie modelu
Jeśli wszystkie profile dostawcy zawiodą, OpenClaw przechodzi do następnego modelu wagents.defaults.model.fallbacks. Dotyczy to błędów uwierzytelniania, limitów szybkości i przekroczeń czasu, które wyczerpały rotację profili (inne błędy nie uruchamiają awaryjnego przełączenia). Błędy dostawcy, które nie ujawniają wystarczających szczegółów, nadal są precyzyjnie oznaczane w stanie przełączenia awaryjnego: empty_response oznacza, że dostawca nie zwrócił użytecznej wiadomości ani statusu, no_error_details oznacza, że dostawca jawnie zwrócił Unknown error (no error details in response), a unclassified oznacza, że OpenClaw zachował surowy podgląd, ale żaden klasyfikator jeszcze go nie dopasował.
Błędy przeciążenia i limitów szybkości są obsługiwane bardziej agresywnie niż wyciszenia rozliczeniowe. Domyślnie OpenClaw pozwala na jedno ponowienie profilu uwierzytelniania u tego samego dostawcy, a następnie przełącza się na następny skonfigurowany model awaryjny bez czekania. Sygnały zajętości dostawcy, takie jak ModelNotReadyException, trafiają do tego koszyka przeciążenia. Dostosuj to za pomocą auth.cooldowns.overloadedProfileRotations, auth.cooldowns.overloadedBackoffMs i auth.cooldowns.rateLimitedProfileRotations.
Gdy uruchomienie zaczyna się od skonfigurowanego domyślnego modelu podstawowego, modelu podstawowego zadania Cron, modelu podstawowego agenta z jawnymi modelami awaryjnymi albo automatycznie wybranego zastąpienia awaryjnego, OpenClaw może przejść przez pasujący skonfigurowany łańcuch awaryjny. Modele podstawowe agentów bez jawnych modeli awaryjnych oraz jawne wybory użytkownika (na przykład /model ollama/qwen3.5:27b, selektor modelu, sessions.patch albo jednorazowe nadpisania dostawcy/modelu w CLI) są ścisłe: jeśli ten dostawca/model jest nieosiągalny albo zawiedzie przed wygenerowaniem odpowiedzi, OpenClaw zgłasza błąd zamiast odpowiadać z niepowiązanego modelu awaryjnego.
Reguły łańcucha kandydatów
OpenClaw buduje listę kandydatów z aktualnie żądanegoprovider/model oraz skonfigurowanych modeli awaryjnych.
Rules
Rules
- Żądany model jest zawsze pierwszy.
- Jawnie skonfigurowane modele awaryjne są deduplikowane, ale nie są filtrowane przez listę dozwolonych modeli. Są traktowane jako jawna intencja operatora.
- Jeśli bieżące uruchomienie jest już na skonfigurowanym modelu awaryjnym w tej samej rodzinie dostawcy, OpenClaw nadal używa pełnego skonfigurowanego łańcucha.
- Gdy nie podano jawnego zastąpienia awaryjnego, skonfigurowane modele awaryjne są próbowane przed skonfigurowanym modelem podstawowym, nawet jeśli żądany model używa innego dostawcy.
- Gdy do modułu uruchamiającego przełączenie awaryjne nie podano jawnego zastąpienia awaryjnego, skonfigurowany model podstawowy jest dopisywany na końcu, aby łańcuch mógł wrócić do normalnej wartości domyślnej po wyczerpaniu wcześniejszych kandydatów.
- Gdy wywołujący podaje
fallbacksOverride, moduł uruchamiający używa dokładnie żądanego modelu oraz tej listy zastąpień. Pusta lista wyłącza awaryjne przełączanie modelu i zapobiega dopisaniu skonfigurowanego modelu podstawowego jako ukrytego celu ponowienia.
Które błędy uruchamiają przełączenie awaryjne
- Continues on
- Does not continue on
- błędy uwierzytelniania
- limity szybkości i wyczerpanie wyciszenia
- błędy przeciążenia/zajętości dostawcy
- błędy przełączenia awaryjnego o kształcie przekroczenia czasu
- wyłączenia rozliczeniowe
LiveSessionModelSwitchError, który jest normalizowany do ścieżki przełączenia awaryjnego, aby przestarzały utrwalony model nie tworzył zewnętrznej pętli ponowień- inne nierozpoznane błędy, gdy nadal pozostają kandydaci
Pomijanie wyciszenia a zachowanie sondowania
Gdy każdy profil uwierzytelniania dostawcy jest już w wyciszeniu, OpenClaw nie pomija automatycznie tego dostawcy na zawsze. Podejmuje decyzję dla każdego kandydata:Per-candidate decisions
Per-candidate decisions
- Trwałe błędy uwierzytelniania natychmiast pomijają całego dostawcę.
- Wyłączenia rozliczeniowe zwykle są pomijane, ale kandydat podstawowy nadal może być sondowany z ograniczeniem częstotliwości, aby odzyskanie było możliwe bez ponownego uruchamiania.
- Kandydat podstawowy może być sondowany blisko wygaśnięcia wyciszenia, z ograniczeniem częstotliwości dla danego dostawcy.
- Równorzędne modele awaryjne tego samego dostawcy mogą być próbowane mimo wyciszenia, gdy błąd wygląda na przejściowy (
rate_limit,overloadedalbo nieznany). Jest to szczególnie istotne, gdy limit szybkości jest ograniczony do modelu, a model równorzędny może nadal natychmiast odzyskać działanie. - Sondowania przejściowego wyciszenia są ograniczone do jednego na dostawcę na jedno uruchomienie przełączenia awaryjnego, aby pojedynczy dostawca nie blokował przełączenia awaryjnego między dostawcami.
Zastąpienia sesji i przełączanie modelu na żywo
Zmiany modelu sesji są stanem współdzielonym. Aktywny moduł uruchamiający, polecenie/model, aktualizacje Compaction/sesji oraz uzgadnianie sesji na żywo odczytują lub zapisują części tego samego wpisu sesji.
Oznacza to, że ponowienia przełączenia awaryjnego muszą koordynować się z przełączaniem modelu na żywo:
- Tylko jawne zmiany modelu inicjowane przez użytkownika oznaczają oczekujące przełączenie na żywo. Obejmuje to
/model,session_status(model=...)isessions.patch. - Zmiany modelu inicjowane przez system, takie jak rotacja awaryjna, zastąpienia Heartbeat albo Compaction, nigdy same nie oznaczają oczekującego przełączenia na żywo.
- Zastąpienia modelu inicjowane przez użytkownika są traktowane jako dokładne wybory dla polityki przełączeń awaryjnych, więc nieosiągalny wybrany dostawca ujawnia się jako błąd zamiast być maskowany przez
agents.defaults.model.fallbacks. - Zanim rozpocznie się ponowienie przełączenia awaryjnego, moduł uruchamiający odpowiedź utrwala wybrane pola zastąpienia awaryjnego we wpisie sesji.
- Automatyczne zastąpienia awaryjne pozostają wybrane w kolejnych turach, aby OpenClaw nie sondował znanego wadliwego modelu podstawowego przy każdej wiadomości. OpenClaw okresowo ponownie sonduje skonfigurowane źródło i czyści automatyczne zastąpienie, gdy odzyska ono działanie;
/new,/resetisessions.resetnatychmiast czyszczą zastąpienia pochodzące automatycznie. - Odpowiedzi użytkownika ogłaszają przejścia awaryjne i przywrócenie po wyczyszczeniu przełączenia awaryjnego raz na zmianę stanu. Tury z utrwalonym przełączeniem awaryjnym nie powtarzają powiadomienia.
/statuspokazuje wybrany model oraz, gdy stan przełączenia awaryjnego się różni, aktywny model awaryjny i powód.- Uzgadnianie sesji na żywo preferuje utrwalone zastąpienia sesji zamiast przestarzałych pól modelu środowiska uruchomieniowego.
- Jeśli błąd przełączenia na żywo wskazuje późniejszego kandydata w aktywnym łańcuchu awaryjnym, OpenClaw przechodzi bezpośrednio do tego wybranego modelu zamiast najpierw przechodzić przez niepowiązanych kandydatów.
- Jeśli próba przełączenia awaryjnego zawiedzie, moduł uruchamiający wycofuje tylko pola zastąpienia, które zapisał, i tylko jeśli nadal pasują do tego nieudanego kandydata.
Utrwalone zastąpienie awaryjne zamyka to okno, a wąskie wycofanie pozostawia nowsze ręczne lub uruchomieniowe zmiany sesji nienaruszone.
Obserwowalność i podsumowania błędów
runWithModelFallback(...) zapisuje szczegóły każdej próby, które zasilają logi i komunikaty wyciszenia widoczne dla użytkownika:
- próbowany dostawca/model
- powód (
rate_limit,overloaded,billing,auth,model_not_foundi podobne powody przełączenia awaryjnego) - opcjonalny status/kod
- czytelne dla człowieka podsumowanie błędu
model_fallback_decision zawierają także płaskie pola fallbackStep*, gdy kandydat zawodzi, jest pomijany albo późniejsze przełączenie awaryjne się udaje. Te pola czynią próbę przejścia jawną (fallbackStepFromModel, fallbackStepToModel, fallbackStepFromFailureReason, fallbackStepFromFailureDetail, fallbackStepFinalOutcome), aby eksportery logów i diagnostyki mogły odtworzyć pierwotną awarię nawet wtedy, gdy końcowy model awaryjny także zawiedzie.
Gdy każdy kandydat zawiedzie, OpenClaw zgłasza FallbackSummaryError. Zewnętrzny moduł uruchamiający odpowiedź może użyć tego do zbudowania bardziej szczegółowego komunikatu, takiego jak „wszystkie modele są tymczasowo objęte limitem szybkości”, i uwzględnić najbliższy czas wygaśnięcia wyciszenia, gdy jest znany.
To podsumowanie wyciszenia uwzględnia model:
- niepowiązane limity szybkości ograniczone do modelu są ignorowane dla próbowanego łańcucha dostawca/model
- jeśli pozostała blokada jest pasującym limitem szybkości ograniczonym do modelu, OpenClaw zgłasza ostatni pasujący czas wygaśnięcia, który nadal blokuje ten model
Powiązana konfiguracja
Zobacz Konfiguracja Gateway, aby uzyskać informacje o:auth.profiles/auth.orderauth.cooldowns.billingBackoffHours/auth.cooldowns.billingBackoffHoursByProviderauth.cooldowns.billingMaxHours/auth.cooldowns.failureWindowHoursauth.cooldowns.overloadedProfileRotations/auth.cooldowns.overloadedBackoffMsauth.cooldowns.rateLimitedProfileRotationsagents.defaults.model.primary/agents.defaults.model.fallbacks- routowanie
agents.defaults.imageModel