Bascule de modele¶
OpenClaw gere les eÌchecs en deux etapes :
- Rotation des profils dâauthentification au sein du fournisseur courant.
- Bascule de modele vers le modele suivant dans
agents.defaults.model.fallbacks.
Ce document explique les regles dâexecution et les donnees qui les sousâtendent.
Stockage des identifiants (cles + OAuth)¶
OpenClaw utilise des profils dâauthentification a la fois pour les cles API et les jetons OAuth.
- Les secrets se trouvent dans
~/.openclaw/agents/<agentId>/agent/auth-profiles.json(heritage :~/.openclaw/agent/auth-profiles.json). - Les configurations
auth.profiles/auth.ordersont uniquement des metadonnees et du routage (aucun secret). - Fichier OAuth historique uniquement pour lâimport :
~/.openclaw/credentials/oauth.json(importe dansauth-profiles.jsona la premiere utilisation).
Plus de details : /concepts/oauth
Types dâidentifiants :
type: "api_key"â{ provider, key }type: "oauth"â{ provider, access, refresh, expires, email? }(+projectId/enterpriseUrlpour certains fournisseurs)
Identifiants de profil¶
Les connexions OAuth creent des profils distincts afin que plusieurs comptes puissent coexister.
- Par defaut :
provider:defaultlorsquâaucun eâmail nâest disponible. - OAuth avec eâmail :
provider:<email>(par exemplegoogle-antigravity:user@gmail.com).
Les profils se trouvent dans ~/.openclaw/agents/<agentId>/agent/auth-profiles.json sous profiles.
Ordre de rotation¶
Lorsquâun fournisseur possede plusieurs profils, OpenClaw choisit un ordre comme suit :
- Configuration explicite :
auth.order[provider](si defini). - Profils configures :
auth.profilesfiltres par fournisseur. - Profils stockes : entrees dans
auth-profiles.jsonpour le fournisseur.
Si aucun ordre explicite nâest configure, OpenClaw utilise un ordre en roundârobin :
- Cle primaire : type de profil (OAuth avant les cles API).
- Cle secondaire :
usageStats.lastUsed(le plus ancien en premier, au sein de chaque type). - Les profils en cooldown ou desactives sont deplaces a la fin, classes par date dâexpiration la plus proche.
Adhesion de session (favorable au cache)¶
OpenClaw epingle le profil dâauthentification choisi par session afin de maintenir les caches du fournisseur. Il ne fait pas de rotation a chaque requete. Le profil epingle est reutilise jusquâa ce que :
- la session soit reinitialisee (
/new//reset) - une compaction se termine (le compteur de compaction incremente)
- le profil passe en cooldown ou est desactive
La selection manuelle via /model âŠ@<profileId> definit une priorite utilisateur pour cette session
et nâest pas soumise a une rotation automatique jusquâau demarrage dâune nouvelle session.
Les profils autoâepingles (selectionnes par le routeur de session) sont traites comme une preference : ils sont essayes en premier, mais OpenClaw peut basculer vers un autre profil en cas de limites de debit ou de timeouts. Les profils epingles par lâutilisateur restent verrouilles sur ce profil ; sâil echoue et que des bascules de modele sont configurees, OpenClaw passe au modele suivant au lieu de changer de profil.
Pourquoi OAuth peut «âŻsembler perduâŻÂ»Â¶
Si vous disposez a la fois dâun profil OAuth et dâun profil a cle API pour le meme fournisseur, le roundârobin peut alterner entre eux dâun message a lâautre, sauf sâils sont epingles. Pour forcer un profil unique :
- Epinglezâle avec
auth.order[provider] = ["provider:profileId"], ou - Utilisez une priorite par session via
/model âŠavec une priorite de profil (lorsque votre interface UI/canal de chat le prend en charge).
Temps de recharge¶
Lorsquâun profil echoue en raison dâerreurs dâauthentification ou de limites de debit (ou dâun timeout qui ressemble a une limitation de debit), OpenClaw le place en cooldown et passe au profil suivant. Les erreurs de format ou de requete invalide (par exemple des eÌchecs de validation dâidentifiant dâappel dâoutil Cloud Code Assist) sont considerees comme justifiant une bascule et utilisent les memes cooldowns.
Les cooldowns utilisent un backoff exponentiel :
- 1 minute
- 5 minutes
- 25 minutes
- 1 heure (plafond)
Lâetat est stocke dans auth-profiles.json sous usageStats :
{
"usageStats": {
"provider:profile": {
"lastUsed": 1736160000000,
"cooldownUntil": 1736160600000,
"errorCount": 2
}
}
}
Desactivations de facturation¶
Les eÌchecs de facturation ou de credit (par exemple «âŻcredits insuffisantsâŻÂ» / «âŻsolde de credit trop basâŻÂ») sont consideres comme justifiant une bascule, mais ils ne sont generalement pas transitoires. Au lieu dâun court cooldown, OpenClaw marque le profil comme desactive (avec un backoff plus long) et passe au profil ou au fournisseur suivant.
Lâetat est stocke dans auth-profiles.json :
{
"usageStats": {
"provider:profile": {
"disabledUntil": 1736178000000,
"disabledReason": "billing"
}
}
}
Ăquivalent en variable dâenvironnementâŻ:
- Le backoff de facturation commence a 5 heures, double a chaque echec de facturation et est plafonne a 24 heures.
- Les compteurs de backoff sont reinitialises si le profil nâa pas echoue pendant 24 heures (configurable).
Bascule de modele¶
Si tous les profils dâun fournisseur echouent, OpenClaw passe au modele suivant dans
agents.defaults.model.fallbacks. Cela sâapplique aux eÌchecs dâauthentification, aux limites de debit et
aux timeouts ayant epuise la rotation des profils (les autres erreurs nâavancent pas la bascule).
Lorsquâune execution demarre avec une priorite de modele (hooks ou CLI), les bascules se terminent tout de meme a
agents.defaults.model.primary apres avoir essaye toutes les bascules configurees.
Configuration associee¶
Voir la Configuration du Gateway (passerelle) pour :
auth.profiles/auth.orderauth.cooldowns.billingBackoffHours/auth.cooldowns.billingBackoffHoursByProviderauth.cooldowns.billingMaxHours/auth.cooldowns.failureWindowHoursagents.defaults.model.primary/agents.defaults.model.fallbacks- Routage
agents.defaults.imageModel
Voir Modeles pour une vue dâensemble plus large de la selection des modeles et de la bascule.