Modelowe przechwytywanie awarii
OpenClaw obsługuje awarie w dwóch etapach:- Rotacja profili uwierzytelniania w ramach bieżącego dostawcy.
- Przełączanie awaryjne modelu do następnego modelu w
agents.defaults.model.fallbacks.
Przechowywanie uwierzytelniania (klucze + OAuth)
OpenClaw używa profili uwierzytelniania zarówno dla kluczy API, jak i tokenów OAuth.- Sekrety są przechowywane w
~/.openclaw/agents/<agentId>/agent/auth-profiles.json(legacy:~/.openclaw/agent/auth-profiles.json). - Konfiguracje
auth.profiles/auth.orderto wyłącznie metadane i routowanie (bez sekretów). - Plik OAuth tylko do importu (legacy):
~/.openclaw/credentials/oauth.json(importowany doauth-profiles.jsonprzy pierwszym użyciu).
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, dzięki czemu może współistnieć wiele kont.- Domyślnie:
provider:default, gdy nie ma dostępnego adresu e-mail. - OAuth z e-mailem:
provider:<email>(na przykładgoogle-antigravity:[email protected]).
~/.openclaw/agents/<agentId>/agent/auth-profiles.json pod profiles.
Kolejność rotacji
Gdy dostawca ma wiele profili, OpenClaw wybiera kolejność w następujący sposób:- Jawna konfiguracja:
auth.order[provider](jeśli ustawiona). - Profile skonfigurowane:
auth.profilesprzefiltrowane według dostawcy. - Profile zapisane: wpisy w
auth-profiles.jsondla dostawcy.
- Klucz główny: typ profilu (OAuth przed kluczami API).
- Klucz pomocniczy:
usageStats.lastUsed(najstarsze najpierw, w obrębie każdego typu). - Profile w cooldown/wyłączone są przenoszone na koniec, uporządkowane według najszybszego wygaśnięcia.
Przywiązanie do sesji (przyjazne dla cache)
OpenClaw przypina wybrany profil uwierzytelniania do sesji, aby utrzymać ciepłe cache dostawcy. Nie wykonuje rotacji przy każdym żądaniu. Przypięty profil jest używany ponownie do momentu, gdy:- sesja zostanie zresetowana (
/new//reset) - zakończy się kompaktowanie (inkrementuje się licznik kompaktowania)
- profil trafi do cooldown lub zostanie wyłączony
/model …@<profileId> ustawia nadpisanie użytkownika dla tej sesji
i nie podlega automatycznej rotacji do rozpoczęcia nowej sesji.
Profile przypięte automatycznie (wybrane przez router sesji) są traktowane jako preferencja:
są próbowane w pierwszej kolejności, ale OpenClaw może przełączyć się na inny profil
przy limitach szybkości lub timeoutach.
Profile przypięte przez użytkownika pozostają
zablokowane na tym profilu; jeśli zawiedzie i skonfigurowano przełączanie awaryjne modeli,
OpenClaw przechodzi do następnego modelu zamiast zmieniać profil.
Dlaczego OAuth może „wyglądać na zagubiony”
Jeśli masz zarówno profil OAuth, jak i profil klucza API dla tego samego dostawcy, round‑robin może przełączać się między nimi pomiędzy wiadomościami, o ile nie są przypięte. Aby wymusić pojedynczy profil:- Przypnij za pomocą
auth.order[provider] = ["provider:profileId"], lub - Użyj nadpisania per sesja przez
/model …z nadpisaniem profilu (jeśli jest obsługiwane przez Twoje UI/powierzchnię czatu).
Cooldowny
Gdy profil zawiedzie z powodu błędów uwierzytelniania/limitów szybkości (lub timeoutu, który wygląda jak limit szybkości), OpenClaw oznacza go jako będący w cooldown i przechodzi do następnego profilu. Błędy formatu/nieprawidłowych żądań (na przykład błędy walidacji identyfikatora wywołania narzędzia Cloud Code Assist) są traktowane jako kwalifikujące się do przełączania awaryjnego i używają tych samych cooldownów. Cooldowny używają wykładniczego backoffu:- 1 minuta
- 5 minut
- 25 minut
- 1 godzina (limit)
auth-profiles.json pod usageStats:
Wyłączenia rozliczeń
Awarie rozliczeń/kredytów (na przykład „niewystarczające kredyty” / „zbyt niski stan kredytów”) są traktowane jako kwalifikujące się do przełączania awaryjnego, ale zwykle nie są przejściowe. Zamiast krótkiego cooldownu OpenClaw oznacza profil jako wyłączony (z dłuższym backoffem) i przełącza się na następny profil/dostawcę. Stan jest przechowywany wauth-profiles.json:
- Backoff rozliczeń zaczyna się od 5 godzin, podwaja się przy każdej awarii rozliczeń i ma limit 24 godzin.
- Liczniki backoffu resetują się, jeśli profil nie zawiódł przez 24 godziny (konfigurowalne).
Model rezerwowy
Jeśli wszystkie profile dla dostawcy zawiodą, OpenClaw przechodzi do następnego modelu wagents.defaults.model.fallbacks. Dotyczy to awarii uwierzytelniania, limitów szybkości oraz
timeoutów, które wyczerpały rotację profili (inne błędy nie powodują przejścia dalej).
Gdy uruchomienie zaczyna się z nadpisaniem modelu (hooki lub CLI), przełączanie awaryjne
i tak kończy się na agents.defaults.model.primary po wypróbowaniu wszystkich skonfigurowanych fallbacków.
Powiązana konfiguracja
Zobacz Konfiguracja Gateway w zakresie:auth.profiles/auth.orderauth.cooldowns.billingBackoffHours/auth.cooldowns.billingBackoffHoursByProviderauth.cooldowns.billingMaxHours/auth.cooldowns.failureWindowHoursagents.defaults.model.primary/agents.defaults.model.fallbacks- routowanie
agents.defaults.imageModel