🌐 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
Problemas e soluções comuns para OmniRoute.
| Problema | Solução |
|---|---|
| O primeiro login não funciona | Verifique INITIAL_PASSWORD em .env (padrão: 123456) |
| Painel abre na porta errada | Definir PORT=20128 e NEXT_PUBLIC_BASE_URL=http://localhost:20128 |
Nenhum registro de solicitação em logs/ |
Definir ENABLE_REQUEST_LOGS=true |
| EACCES: permissão negada | Defina DATA_DIR=/path/to/writable/dir para substituir ~/.omniroute |
| Estratégia de roteamento não salva | Atualização para v1.4.11+ (correção do esquema Zod para persistência de configurações) |
Causa: Cota do provedor esgotada.
Correção:
- Verifique o rastreador de cota do painel
- Use um combo com níveis alternativos
- Mude para um nível mais barato/gratuito
Causa: Cota de assinatura esgotada.
Correção:
- Adicionar substituto:
cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking - Use GLM/MiniMax como backup barato
OmniRoute atualiza automaticamente os tokens. Se os problemas persistirem:
- Painel → Provedor → Reconectar
- Exclua e adicione novamente a conexão do provedor
- Verifique
BASE_URLaponta para sua instância em execução (por exemplo,http://localhost:20128) - Verifique os pontos
CLOUD_URLpara seu endpoint de nuvem (por exemplo,https://omniroute.dev) - Mantenha os valores
NEXT_PUBLIC_*alinhados com os valores do lado do servidor
Sintoma: Unexpected token 'd'... no endpoint da nuvem para chamadas sem streaming.
Causa: O upstream retorna a carga SSE enquanto o cliente espera JSON.
Solução alternativa: use stream=true para chamadas diretas na nuvem. O tempo de execução local inclui substituto SSE→JSON.
- Crie uma nova chave no painel local (
/api/keys) - Execute a sincronização na nuvem: Habilite Nuvem → Sincronizar agora
- Chaves antigas/não sincronizadas ainda podem retornar
401na nuvem
- Verifique os campos de tempo de execução:
curl http://localhost:20128/api/cli-tools/runtime/codex | jq - Para modo portátil: use o destino de imagem
runner-cli(CLIs agrupados) - Para o modo de montagem do host: defina
CLI_EXTRA_PATHSe monte o diretório bin do host como somente leitura - Se
installed=trueerunnable=false: o binário foi encontrado, mas falhou na verificação de integridade
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}'- Verifique as estatísticas de uso em Painel → Uso
- Mude o modelo primário para GLM/MiniMax
- Use o nível gratuito (Gemini CLI, iFlow) para tarefas não críticas
- Defina orçamentos de custos por chave de API: Painel → Chaves de API → Orçamento
Defina ENABLE_REQUEST_LOGS=true em seu arquivo .env. Os logs aparecem no diretório logs/.
# Health dashboard
http://localhost:20128/dashboard/health
# API health check
curl http://localhost:20128/api/monitoring/health- Estado principal:
${DATA_DIR}/db.json(provedores, combos, aliases, chaves, configurações) - Uso:
${DATA_DIR}/usage.json,${DATA_DIR}/log.txt,${DATA_DIR}/call_logs/ - Registros de solicitação:
<repo>/logs/...(quandoENABLE_REQUEST_LOGS=true)
Quando o disjuntor de um provedor está ABERTO, as solicitações são bloqueadas até que o tempo de espera expire.
Correção:
- Vá para Painel → Configurações → Resiliência
- Verifique a placa do disjuntor do provedor afetado
- Clique em Redefinir tudo para limpar todos os disjuntores ou aguarde o tempo de espera expirar
- Verifique se o provedor está realmente disponível antes de redefinir
Se um provedor entrar repetidamente no estado OPEN:
- Verifique Dashboard → Health → Provider Health para ver o padrão de falha
- Vá para Configurações → Resiliência → Perfis do Provedor e aumente o limite de falha
- Verifique se o provedor alterou os limites da API ou requer nova autenticação
- Revise a telemetria de latência – alta latência pode causar falhas baseadas em tempo limite
- Certifique-se de usar o prefixo correto:
deepgram/nova-3ouassemblyai/best - Verifique se o provedor está conectado em Painel → Provedores
- Verifique os formatos de áudio suportados:
mp3,wav,m4a,flac,ogg,webm - Verifique se o tamanho do arquivo está dentro dos limites do provedor (normalmente <25 MB)
- Verifique a validade da chave API do provedor no cartão do provedor
Use Dashboard → Tradutor para depurar problemas de tradução de formato:
| Modo | Quando usar |
|---|---|
| Parque Infantil | Compare os formatos de entrada/saída lado a lado — cole uma solicitação com falha para ver como ela é traduzida |
| Testador de bate-papo | Envie mensagens ao vivo e inspecione a carga completa de solicitação/resposta, incluindo cabeçalhos |
| Banco de testes | Execute testes em lote em combinações de formatos para descobrir quais traduções estão quebradas |
| Monitoramento ao vivo | Observe o fluxo de solicitações em tempo real para detectar problemas intermitentes de tradução |
- Tags de pensamento não aparecem — Verifique se o provedor alvo apoia o pensamento e a configuração do orçamento de pensamento
- Queda de chamadas de ferramentas — Algumas traduções de formato podem remover campos não suportados; verificar no modo Playground
- Prompt do sistema ausente — Claude e Gemini lidam com os prompts do sistema de maneira diferente; verifique o resultado da tradução
- SDK retorna string bruta em vez de objeto — Corrigido na v1.1.0: o sanitizador de resposta agora remove campos não padrão (
x_groq,usage_breakdown, etc.) que causam falhas de validação do OpenAI SDK Pydantic - GLM/ERNIE rejeita função
system— Corrigido na v1.1.0: o normalizador de função mescla automaticamente mensagens do sistema em mensagens do usuário para modelos incompatíveis - Função
developernão reconhecida — Corrigido na v1.1.0: convertido automaticamente parasystempara provedores não-OpenAI json_schemanão funciona com Gemini — Corrigido na v1.1.0:response_formatagora é convertido pararesponseMimeType+responseSchemado Gemini
- O limite automático de taxa se aplica apenas a provedores de chaves de API (não a OAuth/assinatura)
- Verifique se Configurações → Resiliência → Perfis do Provedor tem limite de taxa automática ativado
- Verifique se o provedor retorna códigos de status
429ou cabeçalhosRetry-After
Os perfis do provedor oferecem suporte a estas configurações:
- Atraso base — Tempo de espera inicial após a primeira falha (padrão: 1s)
- Atraso máximo — Limite máximo de tempo de espera (padrão: 30s)
- Multiplicador — Quanto aumentar o atraso por falha consecutiva (padrão: 2x)
Quando muitas solicitações simultâneas atingem um provedor com taxa limitada, o OmniRoute usa mutex + limitação automática de taxa para serializar solicitações e evitar falhas em cascata. Isso é automático para provedores de chaves de API.
- Problemas do GitHub: github.com/diegosouzapw/OmniRoute/issues
- Arquitetura: Consulte link para detalhes internos
- Referência da API: Consulte link para todos os endpoints
- Painel de saúde: verifique Painel → Saúde para ver o status do sistema em tempo real
- Tradutor: Use Dashboard → Tradutor para depurar problemas de formato