🌐 Languages: 🇺🇸 English | 🇧🇷 Português (Brasil) | 🇪🇸 Español | 🇫🇷 Français | 🇮🇹 Italiano | 🇷🇺 Русский | 🇨🇳 中文 (简体) | 🇩🇪 Deutsch | 🇮🇳 हिन्दी | 🇹🇭 ไทย | 🇺🇦 Українська | 🇸🇦 العربية | 🇯🇵 日本語 | 🇻🇳 Tiếng Việt | 🇧🇬 Български | 🇩🇰 Dansk | 🇫🇮 Suomi | 🇮🇱 עברית | 🇭🇺 Magyar | 🇮🇩 Bahasa Indonesia | 🇰🇷 한국어 | 🇲🇾 Bahasa Melayu | 🇳🇱 Nederlands | 🇳🇴 Norsk | 🇵🇹 Português (Portugal) | 🇷🇴 Română | 🇵🇱 Polski | 🇸🇰 Slovenčina | 🇸🇪 Svenska | 🇵🇭 Filipino
Problèmes courants et solutions pour OmniRoute.
| Problème | Solutions |
|---|---|
| La première connexion ne fonctionne pas | Vérifiez INITIAL_PASSWORD dans .env (par défaut : 123456) |
| Le tableau de bord s'ouvre sur le mauvais port | Définir PORT=20128 et NEXT_PUBLIC_BASE_URL=http://localhost:20128 |
Aucun journal de requête sous logs/ |
Définir ENABLE_REQUEST_LOGS=true |
| EACCES : autorisation refusée | Définissez DATA_DIR=/path/to/writable/dir pour remplacer ~/.omniroute |
| La stratégie de routage ne sauvegarde pas | Mise à jour vers v1.4.11+ (correctif du schéma Zod pour la persistance des paramètres) |
Cause : Quota de fournisseur épuisé.
Correction :
- Vérifiez le suivi des quotas du tableau de bord
- Utilisez un combo avec des niveaux de secours
- Passez au niveau moins cher/gratuit
Cause : Quota d'abonnement épuisé.
Correction :
- Ajouter une solution de secours :
cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking - Utilisez GLM/MiniMax comme sauvegarde bon marché
OmniRoute actualise automatiquement les jetons. Si les problèmes persistent :
- Tableau de bord → Fournisseur → Reconnecter
- Supprimez et rajoutez la connexion du fournisseur
- Vérifiez que
BASE_URLpointe vers votre instance en cours d'exécution (par exemple,http://localhost:20128) - Vérifiez que
CLOUD_URLpointe vers votre point de terminaison cloud (par exemple,https://omniroute.dev) - Gardez les valeurs
NEXT_PUBLIC_*alignées avec les valeurs côté serveur
Symptôme : Unexpected token 'd'... sur le point de terminaison cloud pour les appels sans streaming.
Cause : Upstream renvoie la charge utile SSE alors que le client attend du JSON.
Solution : Utilisez stream=true pour les appels directs vers le cloud. Le runtime local inclut le repli SSE → JSON.
- Créez une nouvelle clé à partir du tableau de bord local (
/api/keys) - Exécutez la synchronisation cloud : Activer le cloud → Synchroniser maintenant
- Les clés anciennes/non synchronisées peuvent toujours renvoyer
401sur le cloud
- Vérifiez les champs d'exécution :
curl http://localhost:20128/api/cli-tools/runtime/codex | jq - Pour le mode portable : utilisez la cible d'image
runner-cli(CLI fournies) - Pour le mode de montage de l'hôte : définissez
CLI_EXTRA_PATHSet montez le répertoire bin de l'hôte en lecture seule. - Si
installed=trueetrunnable=false: le binaire a été trouvé mais le contrôle de santé a échoué
curl -s http://localhost:20128/api/cli-tools/codex-settings | jq '{installed,runnable,commandPath,runtimeMode,reason}'
curl -s http://localhost:20128/api/cli-tools/claude-settings | jq '{installed,runnable,commandPath,runtimeMode,reason}'
curl -s http://localhost:20128/api/cli-tools/openclaw-settings | jq '{installed,runnable,commandPath,runtimeMode,reason}'- Vérifiez les statistiques d'utilisation dans le tableau de bord → Utilisation
- Basculez le modèle principal vers GLM/MiniMax
- Utilisez l'offre gratuite (Gemini CLI, iFlow) pour les tâches non critiques
- Définissez les budgets de coûts par clé API : Tableau de bord → Clés API → Budget
Définissez ENABLE_REQUEST_LOGS=true dans votre fichier .env. Les journaux apparaissent sous le répertoire logs/.
# Health dashboard
http://localhost:20128/dashboard/health
# API health check
curl http://localhost:20128/api/monitoring/health- État principal :
${DATA_DIR}/db.json(fournisseurs, combos, alias, clés, paramètres) - Utilisation :
${DATA_DIR}/usage.json,${DATA_DIR}/log.txt,${DATA_DIR}/call_logs/ - Journaux de demande :
<repo>/logs/...(quandENABLE_REQUEST_LOGS=true)
Lorsque le disjoncteur d'un fournisseur est OUVERT, les demandes sont bloquées jusqu'à l'expiration du temps de recharge.
Correction :
- Accédez à Tableau de bord → Paramètres → Résilience
- Vérifiez la carte de disjoncteur du fournisseur concerné
- Cliquez sur Réinitialiser tout pour effacer tous les disjoncteurs ou attendez l'expiration du temps de recharge.
- Vérifiez que le fournisseur est réellement disponible avant de réinitialiser
Si un fournisseur entre à plusieurs reprises dans l’état OPEN :
- Vérifiez Tableau de bord → Santé → Santé du fournisseur pour connaître le modèle d'échec.
- Accédez à Paramètres → Résilience → Profils de fournisseur et augmentez le seuil d'échec.
- Vérifiez si le fournisseur a modifié les limites de l'API ou nécessite une ré-authentification
- Examinez la télémétrie de latence : une latence élevée peut provoquer des échecs liés au délai d'attente.
- Assurez-vous d'utiliser le préfixe correct :
deepgram/nova-3ouassemblyai/best - Vérifiez que le fournisseur est connecté dans Tableau de bord → Fournisseurs
- Vérifiez les formats audio pris en charge :
mp3,wav,m4a,flac,ogg,webm - Vérifiez que la taille du fichier est dans les limites du fournisseur (généralement < 25 Mo)
- Vérifier la validité de la clé API du fournisseur dans la carte du fournisseur
Utilisez Tableau de bord → Traducteur pour déboguer les problèmes de traduction de format :
| Mode | Quand utiliser |
|---|---|
| Aire de jeux | Comparez les formats d'entrée/sortie côte à côte : collez une requête qui a échoué pour voir comment elle se traduit |
| Testeur de chat | Envoyez des messages en direct et inspectez la charge utile complète de la demande/réponse, y compris les en-têtes |
| Banc d'essai | Exécutez des tests par lots sur les combinaisons de formats pour identifier les traductions défectueuses |
| Moniteur en direct | Observez le flux de requêtes en temps réel pour détecter les problèmes de traduction intermittents |
- Les balises de réflexion n'apparaissent pas — Vérifiez si le fournisseur cible prend en charge la réflexion et le paramètre de budget de réflexion
- Abandon des appels d'outils — Certaines traductions de format peuvent supprimer des champs non pris en charge ; vérifier en mode Playground
- Invite système manquante — Claude et Gemini gèrent les invites système différemment ; vérifier le résultat de la traduction
- Le SDK renvoie une chaîne brute au lieu d'un objet — Corrigé dans la version 1.1.0 : le désinfectant de réponse supprime désormais les champs non standard (
x_groq,usage_breakdown, etc.) qui provoquent des échecs de validation OpenAI SDK Pydantic - GLM/ERNIE rejette le rôle
system— Corrigé dans la version 1.1.0 : le normalisateur de rôle fusionne automatiquement les messages système dans les messages utilisateur pour les modèles incompatibles - Rôle
developernon reconnu — Corrigé dans la v1.1.0 : automatiquement converti ensystempour les fournisseurs non OpenAI json_schemane fonctionne pas avec Gemini — Corrigé dans la version 1.1.0 :response_formatest maintenant converti enresponseMimeType+responseSchemade Gemini
- La limite de débit automatique s'applique uniquement aux fournisseurs de clés API (pas à OAuth/abonnement)
- Vérifiez que Paramètres → Résilience → Profils de fournisseur a activé la limite de débit automatique.
- Vérifiez si le fournisseur renvoie les codes d'état
429ou les en-têtesRetry-After
Les profils de fournisseur prennent en charge ces paramètres :
- Délai de base — Temps d'attente initial après le premier échec (par défaut : 1 s)
- Délai maximum — Limite maximale du temps d'attente (par défaut : 30 s)
- Multiplicateur — De combien augmenter le délai par échec consécutif (par défaut : 2x)
Lorsque de nombreuses requêtes simultanées atteignent un fournisseur à débit limité, OmniRoute utilise mutex + limitation de débit automatique pour sérialiser les requêtes et éviter les échecs en cascade. Ceci est automatique pour les fournisseurs de clés API.
- Problèmes GitHub : github.com/diegosouzapw/OmniRoute/issues
- Architecture : voir OMNI_TOKEN_55 pour les détails internes
- Référence API : voir OMNI_TOKEN_56 pour tous les points de terminaison
- Tableau de bord de santé : consultez Tableau de bord → Santé pour connaître l'état du système en temps réel
- Traducteur : utilisez Tableau de bord → Traducteur pour déboguer les problèmes de format