Skip to content

Latest commit

 

History

History
802 lines (542 loc) · 55.9 KB

TROUBLESHOOTING.md

File metadata and controls

802 lines (542 loc) · 55.9 KB

Troubleshooting (Bosanski)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


Za korisnike: Tražite brza rješenja? Pogledajte Brzi pregled u nastavku.

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW

Uobičajeni problemi i rješenja za OmniRoute.


Brzi pregled

Novi ste u OmniRouteu? Počnite ovdje — ovo rješava 90% problema:

Vidim ovo Šta to znači Šta uraditi
"Nije moguće povezivanje" OmniRoute nije pokrenut Pokrenite omniroute ili docker restart omniroute
"Nevažeći API ključ" Vaš ključ je pogrešan ili je istekao Ponovo kopirajte ključ s web-stranice pružaoca usluge
"Ograničenje brzine premašeno" Šaljete previše zahtjeva Sačekajte 1 minutu ili koristite model: "auto" za automatski prelazak na rezervnu opciju
"Kvota premašena" Iskoristili ste svoju besplatnu/plaćenu kvotu Povežite više pružalaca usluga ili koristite besplatne pružaoce (Kiro, Pollinations)
"Spori odgovori" Pružalac usluge je zauzet ili geografski udaljen Koristite model: "auto/fast" ili povežite bržeg pružaoca usluge (Groq, Cerebras)
"Korišten je pogrešan pružalac usluge" auto je odabrao drugog pružaoca usluge To je normalno! auto bira najboljeg. Nametnite određenog pružaoca pomoću model: "openai/gpt-4o"
"502 Bad Gateway" Pružalac usluge nije dostupan Sačekajte i pokušajte ponovo ili koristite model: "auto" za promjenu pružaoca usluge
"401 Unauthorized" Vaši pristupni podaci su pogrešni Provjerite svoj API ključ ili se ponovo autentificirajte putem OAutha
"omniroute nije prepoznat" U Windows PATH-u nedostaju globalni node moduli Dodajte svoj npm globalni prefiks u Windows PATH. Pronađite ga pomoću npm config get prefix.
"429 Too Many Requests" Brzina zahtjeva je ograničena Sačekajte 1 minutu ili povežite više pružalaca usluga

I dalje imate problem? Pogledajte detaljno otklanjanje poteškoća u nastavku ili pitajte na Discordu.


Detaljno otklanjanje poteškoća


Ograničavanje brzine kod besplatnih pružalaca usluga (429 / 400 / 401)

Simptom: Kada koristite model: "auto" s besplatnim pružaocima usluga ili onima bez autentifikacije (opencode, auggie itd.), povremeno dobijate HTTP 429, 400 ili 401 umjesto odgovora. Zahtjevi uspijevaju kada nekoliko trenutaka kasnije ponovo pošaljete isti upit, ali automatizacija (cron poslovi, agenti, skripte) prekida se pri prvom neuspjehu.

Osnovni uzrok: Tri nezavisna načina neuspjeha međusobno se nadovezuju:

  1. Ograničenje brzine pružaoca usluge (429): Besplatni nivoi mogu nametnuti kvotu po vremenskom intervalu. Nagli porast paralelnih poziva je iscrpljuje, pa se sljedeći zahtjev odbija dok se vremenski interval ne resetuje.
  2. Neispravan model u direktnom prosljeđivanju (400/401): auto/* skupovi mogu uključivati modele za direktno prosljeđivanje iz opencode koji su registrovani u katalogu, ali nemaju aktivne pristupne podatke (npr. oc/north-mini-code-free → 401). Automatski usmjerivač pokušava koristiti jedan od njih, ne uspijeva, a greška se prosljeđuje prije nego što se aktivira rezervna opcija.
  3. Pojačavanje zbog konkurentnosti (429 pod opterećenjem): Kada više agentskih/cron sesija istovremeno pristupi opciji auto, ukupna stopa zahtjeva premašuje ono što besplatni pružaoci usluga mogu podnijeti, pa se legitimni pozivi označavaju kao zloupotreba.

Provjereno rješenje (prema izvještaju zajednice, 2026-08-10): podesite tri varijable okruženja tako da rotacija, konkurentnost i rezervne opcije apsorbuju promjenjivost besplatnog nivoa umjesto da zbog nje prestanu raditi:

export OMNIROUTE_ROTATE_ON_400=true           # pređi na drugi model/pružaoca usluge pri 400/401 (preskače neispravne modele za direktno prosljeđivanje)
export OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT=4   # izričito ograničenje prihvatanja zahtjevnih zadataka (zadano nije postavljeno: nema ograničenja broja zahtjeva, pogledajte napomenu ispod)
export OMNIROUTE_CHAT_ADMISSION_QUEUE_MS=5000 # duže ograničeno čekanje na kapacitet za zahtjevne zadatke umjesto trenutnog 503 koji omogućava ponovni pokušaj

Postavite ih u okruženju OmniRoute procesa (daemon, npr. putem LaunchAgent plist datoteke ili systemctl edit), a zatim ponovo pokrenite OmniRoute. Oznaka za rotaciju je pojedinačna postavka s najvećim učinkom: pretvara potpuni neuspjeh u transparentan ponovni pokušaj kod ispravnog pružaoca usluge u skupu.

Napomena: OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT ograničava broj zahtjevnih zahtjeva — onih s dugim kontekstom — koji se izvršavaju istovremeno; ovo ograničenje predstavlja ulaznu kontrolu, a ne ograničivač brzine pružaoca usluge. Ažuriranje #503-fanout: ova varijabla više nije zadano postavljena (sada se primjenjuje samo kada je izričito konfigurirana, kao iznad) — prihvatanje zahtjevnih zahtjeva umjesto toga kontroliše automatski izveden budžet bajtova (OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES) koji se samostalno prilagođava stvarnom memorijskom ograničenju hosta, tako da bi nova implementacija trebala imati znatno manje odbijanja 503 chat_admission_busy bez ikakvog postavljanja ove varijable; njeno izričito postavljanje ovdje i dalje radi tačno onako kako je dokumentirano. Izričito zadana ograničenja budžeta bajtova svode se na raspon od 8 MiB do 2 GiB. Greška 413 body_exceeds_budget nije privremena: povećajte taj budžet bajtova, smanjite OMNIROUTE_CHAT_HARD_MAX_BODY_BYTES ili povećajte memorijsko ograničenje procesa. Odbacivanje inflight_bytes_budget predstavlja privremeno nadmetanje za resurse i i dalje dopušta ponovni pokušaj. Ograničavanjem brzine po pružaocu usluge (open-sse/services/rateLimitManager.ts) zasebno upravljaju RATE_LIMIT_MAX_WAIT_MS, RATE_LIMIT_MAX_QUEUE_DEPTH i RATE_LIMIT_AUTO_ENABLE — pogledajte .env.example.

Kako provjeriti da li radi: pokrenite svoj agent/cron dvaput u kratkom vremenskom razmaku i potvrdite da su oba pokretanja uspješna. Prije ispravke, drugo pokretanje obično vraća 429/401. Nakon ispravke, neuspjeli pokušaji (ako ih ima) automatski se ponavljaju i poziv se dovršava. Također možete pokrenuti curl /monitoring/health i pratiti polje rateLimitedUntil na konekcijama pružalaca usluga te circuitBreakers.providerBreakers[].state za pogođene pružaoce usluga — stanje je jedno od CLOSED, DEGRADED, OPEN ili HALF_OPEN (pogledajte src/shared/utils/circuitBreaker.ts), a pružalac usluga kod kojeg se greške nastavljaju preći će iz CLOSED → DEGRADED → OPEN prije nego što period za resetiranje omogući probni zahtjev (HALF_OPEN).

Ako i dalje vidite 429: aktivni račun za tog pružaoca usluga zaista je iscrpio svoju kvotu (ne samo ograničenje brzine zahtjeva). Dodajte drugi račun za istog pružaoca usluga na OmniRoute kontrolnoj ploči → Providers → Accounts ili uključite drugog besplatnog pružaoca usluga (npr. routeway, auggie). Rotacija pomaže samo kod privremenih grešaka vezanih za ograničenje brzine zahtjeva/400/401; potpuno iscrpljena kvota zahtijeva druge pristupne podatke ili drugog pružaoca usluga.

Ako vidite 403 na vision modelima (auto/vision, bazaarlink/*): povezani račun nema plaćeni paket koji uključuje vision mogućnosti ili API ključ nema dovoljna ovlaštenja. Na kontrolnoj ploči pružaoca usluga provjerite uključuje li opseg ključa vision/multimodal mogućnosti ili povežite račun s plaćenim paketom i zadržite ga kao cilj za vision modele.


Upozorenja pri npm instalaciji (ERESOLVE / peer / deprecated)

Kada pokrenete npm install -g omniroute, možete vidjeti veliki broj upozorenja poput npm warn ERESOLVE, obavijesti o peer zavisnostima i poruke deprecated. Ona su očekivana i bezopasna. Instalacija je uspješna ako u izlazu vidite added <N> packages.

Da biste potisnuli upozorenja o razrješavanju peer zavisnosti, koristite podržani način instalacije za OmniRoute:

npm install -g omniroute --legacy-peer-deps

--legacy-peer-deps potiskuje samo ERESOLVE i obavijesti o peer zavisnostima. Obavijesti o zastarjelosti ostaju vidljive jer dolaze iz tranzitivnih paketa trećih strana; one ne znače da instalacija nije uspjela.

Upozorenja potiču od zastarjelih raspona peer zavisnosti u paketima trećih strana koje OmniRoute ne kontroliše:

  1. marked-terminal zahtijeva marked >=1 <16, pronađen je marked@18 — u praksi radi bez problema; uzvodni peer raspon je samo zastario.
  2. deprecated prebuild-install@7.1.3 — tranzitivni pomoćni alat za preuzimanje nativnih binarnih datoteka. Ne koristi se za instalaciju fiksirane transportne sprege wreq-js i ne znači da postavljanje transporta pružaoca web kolačića nije uspjelo.

Nije potrebna nikakva radnja — upozorenja se ne mogu u potpunosti utišati bez račvanja uzvodnih paketa.


Gemini Web i Playwright Chromium

Ako Gemini Web zahtjev vrati 503 s porukom da Playwright Chromium nije instaliran, npm paket je prisutan, ali binarna datoteka preglednika nedostaje. Playwright namjerno drži preuzimanja preglednika odvojena od instalacije npm paketa, pa je ovaj odgovor očekivan dok se preglednik ne instalira.

Za globalnu npm instalaciju instalirajte Chromium iz direktorija OmniRoute paketa kako bi predmemorija preglednika pripadala istoj Playwright instalaciji:

cd "$(npm root -g)/omniroute"
npx playwright install chromium

Ponovo pokrenite OmniRoute nakon instalacije, a zatim ponovite Gemini Web zahtjev. Ako pokrećete OmniRoute iz Docker slike, koristite -web sliku (ili cilj izgradnje runner-web), koja uključuje Chromium i njegove zavisnosti; osnovna slika ih ne uključuje.


Brza rješenja

Problem Rješenje
Prva prijava ne radi Postavite INITIAL_PASSWORD u .env (nema tvrdo kodirane zadane vrijednosti)
Kontrolna tabla se otvara na pogrešnom portu Postavite PORT=20128 i NEXT_PUBLIC_BASE_URL=http://localhost:20128
Dnevnici se ne zapisuju na disk Postavite APP_LOG_TO_FILE=true i provjerite je li omogućeno bilježenje dnevnika poziva
EACCES: pristup odbijen Postavite DATA_DIR=/path/to/writable/dir da biste nadjačali ~/.omniroute
Strategija usmjeravanja se ne čuva Ažurirajte na najnovije izdanje v3.x (ispravka Zod sheme za trajno čuvanje postavki isporučena je u ranijim verzijama)
Pad pri prijavi / prazna stranica Provjerite verziju Node.js — pogledajte Kompatibilnost s Node.js ispod
dlopen / slice is not valid mach-o file (macOS) Pokrenite cd $(npm root -g)/omniroute/app && npm rebuild better-sqlite3 && omniroute — pogledajte ponovnu izgradnju nativnog modula za macOS ispod
Proxy „fetch failed“ Provjerite je li konfiguracija proxyja postavljena na ispravnom nivou — pogledajte Probleme s proxyjem ispod
Docker curl: (56) Recv failure: Connection reset by peer Povezivanje Docker porta možda završava na IPv6. Koristite -p 127.0.0.1:20128:20128 da prisilite IPv4 ili testirajte pomoću curl -4. Pogledajte Docker IPv6 ispod
Antivirus stavlja README.md u karantin Lažno pozitivan rezultat — pogledajte Lažno pozitivne rezultate antivirusa ispod
Kaspersky označava Desktop aplikaciju kao trojanca Bihevioralno lažno pozitivan rezultat na nepotpisanom instalacijskom programu — pogledajte Lažno pozitivne rezultate antivirusa ispod

Lažno pozitivni rezultati antivirusa

Avast/AVG stavlja README.md u karantin zbog MD:HttpRequest-inf[Susp]

Ovo je lažno pozitivan rezultat. Ništa nije zaraženo i nije potrebno ništa poduzimati.

Avast i AVG koriste heuristiku koja označava obične tekstualne/Markdown datoteke koje sadrže mnogo linkova nalik HTTP zahtjevima. OmniRouteov README.md isporučuje se unutar npm paketa (naveden je u package.json → files), pa se pri globalnoj instalaciji smješta u node_modules/omniroute/README.md — a sadrži oko 15 primjera http://localhost:20128/... (MCP HTTP/SSE krajnje tačke, A2A .well-known URL i curl isječke). Ta gustoća linkova dovoljna je da aktivira heuristiku.

Ako se ovo počelo dešavati tek nedavno: vrsta datoteke se nije promijenila. README je proširen tabelom krajnjih tačaka (dodani su MCP HTTP + SSE + A2A) i dodatnim curl primjerima, zbog čega je premašen prag.

Datoteka je neaktivna dokumentacija bez ikakvog izvršnog sadržaja. Možete je sigurno vratiti iz karantina.

Šta učiniti:

  1. Zaustavite obavještenja — izuzmite instalacijski direktorij u svom antivirusnom programu (Avast: Postavke → Izuzeci), dodajući putanju do globalnog node_modules i/ili OmniRoute direktorij podataka (~/.omniroute/).
  2. Prijavite lažno pozitivan rezultat — https://www.avast.com/false-positive-file-form.php, prilažući README.md iz karantina. Ovo je rješenje koje pomaže svima jer je riječ o heuristici proizvođača koja pretjerano reaguje na tekstualnu datoteku.

Zašto ovo ne „popravljamo“ s naše strane: svi primjeri koriste http://localhost, a localhost ne može koristiti https bez poteškoća sa samopotpisanim certifikatima. Narušavanje dokumentacije radi zaobilaženja heuristike jednog proizvođača štetilo bi svakom čitaocu samo da bi se udovoljilo grešci skenera.

Kaspersky označava aplikaciju za radnu površinu kao PDM:Trojan.Win32.Generic

Ovo je lažno pozitivan rezultat bihevioralne heuristike. Ništa nije zaraženo. Kasperskyjev prefiks PDM: znači da procjena dolazi iz njegovog modula Proactive Defense Module (System Watcher), koji procjenjuje šta instalacijski program radi umjesto da ga poredi s poznatim zlonamjernim softverom. Kada se aktivira, Kaspersky „vraća unazad“ cijelu instalaciju — brišući datoteke koje je već zapisao — pa aplikacija na kraju bude neispravna ili nedostaje.

Datoteke koje označava standardni su dijelovi deklariranih zavisnosti otvorenog koda koje se isporučuju s aplikacijom za radnu površinu, na primjer:

  • resources/app/.build/next/node_modules/playwright-<hash>/lib/…/agentParser.js i workerProcessEntry.js — Playwright, biblioteka za automatizaciju preglednika koja se koristi za prijavu kod pružaoca usluga unutar aplikacije i razgovor koji se izvršava putem preglednika.
  • resources/app/.build/next/node_modules/@wreq-js/binding-win32-<arch>-msvc-<hash>/wreq-js.win32-<arch>-msvc.node — fiksirana nativna wreq-js veza koja se koristi za HTTP s otiskom preglednika kod pružalaca usluga zasnovanih na web-kolačićima (<arch> je x64 ili arm64).

Zašto se aktivira: Windows instalacijski program još nije digitalno potpisan, pa nepotpisani NSIS instalacijski program nema nikakvu reputaciju i bihevioralne heuristike rade s maksimalnom agresivnošću. U kombinaciji s uključenim nativnim DLL-om i stotinama .js datoteka zapisanih u %LOCALAPPDATA%\Programs\OmniRoute (uključujući direktorije paketa sa sufiksima heševa iz samostalne Next.js verzije), to je dovoljno da aktivira heuristiku. Potpisivanje koda je planirano; dok se ne uvede, ovo se može ponavljati s novim izdanjima.

Šta učiniti:

  1. Prvo provjerite preuzetu datoteku (time se isključuje mogućnost neovlašteno izmijenjene datoteke). Svako izdanje objavljuje latest.yml, čije polje sha512 (base64) obuhvata instalacijski program OmniRoute.Setup.<version>.exe. U PowerShellu, iz direktorija koji sadrži instalacijski program:
    $b = [System.Security.Cryptography.SHA512]::Create().ComputeHash(
      [System.IO.File]::ReadAllBytes("$PWD\OmniRoute.Setup.<version>.exe"))
    [Convert]::ToBase64String($b)
    Izlaz se mora podudarati s latest.yml → sha512. Ako se ne podudara, izbrišite datoteku i ponovo je preuzmite isključivo sa stranice GitHub izdanja.
  2. Vratite + izuzmite — vratite poništene stavke iz karantina i dodajte izuzetak za %LOCALAPPDATA%\Programs\OmniRoute (Kaspersky → Postavke → Prijetnje i izuzeci), a zatim ponovo instalirajte.
  3. Prijavite lažno pozitivan rezultat — https://opentip.kaspersky.com/. FP prijave koje pošalju korisnici zaista ubrzavaju dodavanje na listu dozvoljenih.

Kompatibilnost s Node.js-om

Stranica za prijavu se ruši ili prikazuje grešku "Module self-registration"

Uzrok: Koristite verziju Node.js-a koja nije unutar sigurnog raspona izvršnog okruženja koji je odobrio OmniRoute. Najčešći slučaj je korištenje starije revizije Node.js-a 22 ili 24 koja je ispod minimalne sigurnosne revizije koju OmniRoute zahtijeva.

Simptomi:

  • Stranica za prijavu prikazuje prazan ekran ili serversku grešku
  • Konzola prikazuje Error: Module did not self-register ili slične greške izvornog povezivanja
  • Stranica za prijavu prikazuje narandžasti baner upozorenja s vašom verzijom Node.js-a ako je izvršno okruženje izvan podržane sigurnosne politike

Rješenje:

  1. Instalirajte podržano Node.js LTS izdanje (preporučeno: Node.js 24.x):
    nvm install 24
    nvm use 24
  2. Provjerite svoju verziju: node --version treba prikazati v24.0.0 ili noviju verziju u okviru 24.x LTS linije
  3. Ponovo instalirajte OmniRoute: npm install -g omniroute
  4. Ponovo pokrenite: omniroute

Podržane sigurne verzije: >=22.22.2 <23 ili >=24.0.0 <27. Node.js 24.x LTS (Krypton) i Node.js 26 su u potpunosti podržani.

npm v11+: better-sqlite3 nije instaliran (Cannot find module)

Uzrok: npm v11 (isporučuje se uz Node.js 24+) prema zadanim postavkama blokira instalacijske skripte za opcionalne zavisnosti. Budući da je better-sqlite3 naveden u optionalDependencies i zahtijeva izvornu kompilaciju (node-gyp rebuild), npm ga prešutno preskače.

Simptomi:

  • Server se ruši pri pokretanju uz poruku Cannot find module 'better-sqlite3'
  • ls node_modules/better-sqlite3 prikazuje "No such file or directory"
  • npm ls better-sqlite3 prikazuje (empty)

Rješenje:

  1. Odobrite instalacijske skripte i ponovo instalirajte:
    npm approve-scripts better-sqlite3
    npm install
  2. Ili ručno instalirajte unaprijed kompajliranu verziju:
    npm pack better-sqlite3@13.0.1
    tar -xzf better-sqlite3-*.tgz -C node_modules
    mv node_modules/package node_modules/better-sqlite3
    rm better-sqlite3-*.tgz
  3. Provjerite radi li: node -e "require('better-sqlite3')(':memory:').close(); console.log('OK')"

macOS: dlopen / "slice is not valid mach-o file"

Uzrok: Nakon globalne instalacije pomoću npm install -g omniroute, izvorna binarna datoteka better-sqlite3 unutar paketa možda je kompajlirana za arhitekturu ili Node.js ABI koji se razlikuje od onoga koji se lokalno izvršava. Ovo je uobičajeno na macOS-u (i na Apple Silicon i na Intel platformama) kada se unaprijed kompajlirana binarna datoteka ne podudara s vašim okruženjem.

Simptomi:

  • Server se odmah ruši pri pokretanju uz grešku dlopen
  • Greška sadrži slice is not valid mach-o file
  • Potpuni primjer:
dlopen(/Users/<user>/.nvm/versions/node/v24.14.1/lib/node_modules/omniroute/app/node_modules/better-sqlite3/build/Release/better_sqlite3.node, 0x0001): tried: '...' (slice is not valid mach-o file)

Rješenje — ponovo kompajlirajte za svoje lokalno okruženje (nije potrebno preći na stariju verziju Node.js-a):

cd $(npm root -g)/omniroute/app
npm rebuild better-sqlite3
omniroute

Napomena: Ovo ponovo kompajlira izvorno povezivanje za vašu lokalnu verziju Node.js-a i CPU arhitekturu, čime se rješava nepodudaranje binarnih datoteka. Zvanično podržani raspon izvršnog okruženja je >=22.22.2 <23 ili >=24.0.0 <27 (SUPPORTED_NODE_RANGE u src/shared/utils/nodeRuntimeSupport.ts, usklađen s poljem engines u datoteci package.json). Node.js 24.x LTS (Krypton) i Node.js 26 u potpunosti su podržani uz better-sqlite3 v12.x.


Problemi s proxyjem

Validacija pružatelja prikazuje "fetch failed"

Uzrok: Krajnja tačka za validaciju API ključa (POST /api/providers/validate) ranije je zaobilazila konfiguraciju proxyja, što je uzrokovalo greške u okruženjima koja zahtijevaju usmjeravanje putem proxyja.

Rješenje (v3.5.5+): Ovo je sada ispravljeno. Validacija pružatelja usmjerava se kroz runWithProxyContext, automatski poštujući postavke proxyja na nivou pružatelja i globalne postavke proxyja.

Provjera ispravnosti tokena ne uspijeva uz poruku "fetch failed"

Uzrok: Pozadinsko osvježavanje OAuth tokena nije određivalo konfiguraciju proxyja za svaku vezu.

Rješenje (v3.5.5+): Planer provjere ispravnosti tokena sada određuje konfiguraciju proxyja za svaku vezu prije pokušaja osvježavanja. Ažurirajte na v3.5.5+.

SOCKS5 proxy vraća "invalid onRequestStart method"

Uzrok: Na Node.js 22, dispečer iz undici@8 nije kompatibilan s ugrađenom Nodeovom implementacijom funkcije fetch().

Rješenje (v3.5.5+): OmniRoute sada koristi vlastitu funkciju fetch() paketa undici kada je aktivan proxy dispečer, čime se osigurava dosljedno ponašanje. Ažurirajte na v3.5.5+.

MITM proxy pod WSL-om: desktop aplikacije na Windows hostu nisu presretnute

Uzrok: MITM proxy i njegov CA certifikat instaliraju se u okruženje u kojem se OmniRoute izvršava. Pod WSL-om to okruženje je Linux gost, dok se AI desktop aplikacije (Kiro, Trae, Copilot, Zed, …) izvršavaju na Windows hostu. Aplikacije na hostu ne vjeruju spremištu certifikata gosta i ne usmjeravaju se kroz sistemski proxy gosta, pa presretanje desktop aplikacija tamo nije aktivno.

Preporuka: Pokrenite OmniRoute izvorno na istom operativnom sistemu kao i desktop aplikacije koje želite presretati (Windows za Windows aplikacije; analogno tome macOS/Linux). Zadržavanje OmniRoutea unutar WSL-a uz ciljanje aplikacija na hostu zahtijeva ručno dodavanje generiranog CA certifikata kao pouzdanog na Windows hostu i usmjeravanje mrežnih/proxy postavki svake aplikacije na hostu prema WSL proxy krajnjoj tački — takva konfiguracija nije podržana i nepouzdana je.


Problemi s pružateljima

"Language model did not provide messages"

Uzrok: Kvota pružatelja je iscrpljena.

Rješenje:

  1. Provjerite praćenje kvote na kontrolnoj ploči
  2. Koristite kombinaciju s rezervnim nivoima
  3. Prebacite se na jeftiniji/besplatni nivo

Ograničavanje brzine zahtjeva

Uzrok: Pretplatnička kvota je iscrpljena.

Rješenje:

  • Dodajte rezervnu opciju: cc/claude-opus-4-6 → glm/glm-4.7 → if/qwen3.8-max-preview
  • Koristite GLM/MiniMax kao jeftinu rezervnu opciju

OAuth token je istekao

OmniRoute automatski osvježava tokene. Ako problemi i dalje postoje:

  1. Kontrolna ploča → Pružatelj → Ponovo poveži
  2. Izbrišite i ponovo dodajte vezu s pružateljem

Više Kiro računa: drugi račun poništava prvi

Uzrok: Kirova pozadinska usluga dozvoljava samo jednu aktivnu sesiju po registraciji OIDC klijenta. Kada dva računa dijele isti registrirani klijent (veze uvezene prije v3.8.0), osvježavanje tokena jednog računa poništava token za osvježavanje drugog računa.

Rješenje (v3.8.0+): Ponovo uvezite pogođene veze. Počevši od v3.8.0, svaka nova Kiro veza kreirana putem opcije Uvezi token, Društvena prijava putem Googlea/GitHuba ili Automatski uvoz automatski registrira vlastiti namjenski OIDC klijent. Veza je stoga potpuno izolirana i osvježavanje jednog računa ne utječe ni na jedan drugi račun.

Veze koje su uvezene prije v3.8.0 nemaju registraciju klijenta po vezi. Te veze i dalje koriste zajedničku krajnju tačku za osvježavanje društvene autentifikacije. Da biste omogućili izolaciju, izbrišite staru vezu putem Kontrolna ploča → Pružatelji i ponovo je dodajte putem bilo kojeg od tri toka uvoza.

Za potpune detalje i detaljna uputstva za dodavanje dva Kiro računa jednog pored drugog, pogledajte docs/guides/KIRO_SETUP.md.


Problemi s oblakom

Greške pri sinhronizaciji s oblakom

  1. Provjerite da BASE_URL upućuje na vašu pokrenutu instancu (npr. http://localhost:20128)
  2. Provjerite da CLOUD_URL upućuje na vašu krajnju tačku u oblaku (npr. https://omniroute.dev)
  3. Održavajte vrijednosti NEXT_PUBLIC_* usklađenim s vrijednostima na strani servera

Cloud stream=false vraća 500

Simptom: Unexpected token 'd'... na krajnjoj tački u oblaku za pozive bez streaminga.

Uzrok: Uzvodni servis vraća SSE sadržaj, dok klijent očekuje JSON.

Zaobilazno rješenje: Koristite stream=true za direktne pozive prema oblaku. Lokalno izvršno okruženje uključuje rezervni SSE→JSON mehanizam.

Cloud prikazuje da je povezan, ali javlja "Invalid API key"

  1. Kreirajte novi ključ na lokalnoj nadzornoj ploči (/api/keys)
  2. Pokrenite sinhronizaciju s oblakom: Omogućite Cloud → Sync Now
  3. Stari/nesinhronizovani ključevi i dalje mogu vratiti 401 u oblaku

Problemi s Dockerom

Docker IPv6 / resetovanje veze

Simptomi: curl http://localhost:20128/v1/models vraća curl: (56) Recv failure: Connection reset by peer. Nadzorna ploča i krajnje tačke bez autentifikacije rade, ali autentifikovane krajnje tačke ne rade — izgleda kao problem s autentifikacijom, ali nije.

Uzrok: docker run -p 20128:20128 objavljuje port i na 0.0.0.0 (IPv4) i na :: (IPv6), ali proces unutar kontejnera sluša samo na IPv4. Na hostovima gdje se localhost prvo razrješava kao ::1, veza dolazi na objavljeni IPv6 port iza kojeg nema procesa koji sluša → veza se resetuje.

Rješenje:

  1. Brza dijagnostika: Pokrenite curl -4 http://localhost:20128/v1/models. Ako radi s -4, ali ne radi bez toga, imate nepodudaranje IPv6 povezivanja.
  2. Trajno rješenje: Eksplicitno se povežite na IPv4 korištenjem -p 127.0.0.1:20128:20128 u vašoj naredbi docker run:
    docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
      -p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
    Ovo prisiljava povezivanje na IPv4 i također sprječava izlaganje proxyja na svim mrežnim interfejsima hosta.

CLI alat prikazuje da nije instaliran

  1. Provjerite polja izvršnog okruženja: curl http://localhost:20128/api/cli-tools/runtime/codex | jq
  2. Za prijenosni način rada: koristite cilj slike runner-cli (uključeni CLI alati)
  3. Za način rada s montiranjem hosta: postavite CLI_EXTRA_PATHS i montirajte direktorij binarnih datoteka hosta samo za čitanje
  4. Ako je installed=true i runnable=false: binarna datoteka je pronađena, ali nije prošla provjeru ispravnosti

Brza provjera izvršnog okruženja

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}'

Problemi s troškovima

Visoki troškovi

  1. Provjerite statistiku korištenja u Dashboard → Usage
  2. Promijenite primarni model na GLM/MiniMax
  3. Koristite besplatni nivo (Qoder, Kiro) za zadatke koji nisu kritični
  4. Postavite budžete troškova za svaki API ključ: Dashboard → API Keys → Budget

Otklanjanje grešaka

Omogućavanje datoteka dnevnika

Postavite APP_LOG_TO_FILE=true u vašoj .env datoteci. Dnevnici aplikacije zapisuju se u logs/. Artefakti zahtjeva pohranjuju se u ${DATA_DIR}/call_logs/ kada je cjevovod dnevnika poziva omogućen u postavkama. Kada je bilježenje cjevovoda omogućeno, postavite CALL_LOG_PIPELINE_CAPTURE_STREAM_CHUNKS=false da izostavite sadržaj dijelova streama ili prilagodite CALL_LOG_PIPELINE_MAX_SIZE_KB da promijenite ograničenje veličine artefakta u KB.

Provjera ispravnosti pružaoca usluga

# Nadzorna ploča stanja
http://localhost:20128/dashboard/health

# Provjera stanja API-ja
curl http://localhost:20128/api/monitoring/health

Pohrana izvršnog okruženja

  • Glavno stanje: ${DATA_DIR}/storage.sqlite (pružaoci usluga, kombinacije, aliasi, ključevi, postavke)
  • Korištenje: SQLite tabele u storage.sqlite (usage_history, call_logs, proxy_logs) + opcionalno ${DATA_DIR}/call_logs/
  • Dnevnici aplikacije: <repo>/logs/... (kada je APP_LOG_TO_FILE=true)
  • Artefakti dnevnika poziva: ${DATA_DIR}/call_logs/YYYY-MM-DD/... kada je cjevovod dnevnika poziva omogućen

Radnja Clean history na stranici Request Logs briše call_logs, zastarjele request_detail_logs i lokalni direktorij artefakata ${DATA_DIR}/call_logs/.


Problemi s prekidačem kola

Pružalac usluge zaglavljen u stanju OPEN

Kada je prekidač kola pružaoca usluge u stanju OPEN, zahtjevi su blokirani dok ne istekne period hlađenja.

Rješenje:

  1. Idite na Kontrolna tabla → Postavke → Otpornost
  2. Provjerite karticu prekidača kola za pogođenog pružaoca usluge
  3. Kliknite na Resetuj sve da biste poništili sve prekidače ili sačekajte da period hlađenja istekne
  4. Prije poništavanja provjerite da li je pružalac usluge zaista dostupan

Pružalac usluge stalno aktivira prekidač kola

Ako pružalac usluge više puta uđe u stanje OPEN:

  1. Provjerite obrazac grešaka u odjeljku Kontrolna tabla → Stanje → Stanje pružaoca usluge
  2. Idite na Postavke → Otpornost → Profili pružalaca usluga i povećajte prag grešaka
  3. Provjerite da li je pružalac usluge promijenio ograničenja API-ja ili zahtijeva ponovnu autentifikaciju
  4. Pregledajte telemetriju kašnjenja — veliko kašnjenje može uzrokovati greške zbog isteka vremena

Problemi s transkripcijom zvuka

Greška „Nepodržan model“

  • Koristite ID modela čiji je prvi segment pružalac usluge za kojeg imate pristupne podatke (openai/whisper-1, openrouter/deepgram/nova-3). Samostalni deepgram/nova-3 zahtijeva izvorni Deepgram ključ.
  • Provjerite je li pružalac usluge povezan u odjeljku Kontrolna tabla → Pružaoci usluga

Transkripcija je prazna ili ne uspijeva

  • Provjerite podržane formate zvuka: mp3, wav, m4a, flac, ogg, webm
  • Provjerite je li veličina datoteke unutar ograničenja pružaoca usluge (obično < 25MB)
  • Provjerite valjanost API ključa pružaoca usluge na kartici pružaoca usluge

Otklanjanje grešaka prevodioca

Koristite Kontrolna tabla → Prevodilac za otklanjanje problema s prevođenjem formata:

Način rada Kada koristiti
Igralište Uporedite ulazne/izlazne formate jedan pored drugog — zalijepite neuspjeli zahtjev da vidite kako se prevodi
Tester razgovora Šaljite poruke uživo i pregledajte kompletan sadržaj zahtjeva/odgovora, uključujući zaglavlja
Testna platforma Pokrenite grupne testove nad kombinacijama formata da biste pronašli neispravne prijevode
Praćenje uživo Pratite tok zahtjeva u stvarnom vremenu da biste otkrili povremene probleme s prevođenjem

Uobičajeni problemi s formatom

  • Oznake razmišljanja se ne pojavljuju — Provjerite podržava li ciljni pružalac usluge razmišljanje i postavku budžeta za razmišljanje
  • Pozivi alata nestaju — Neki prijevodi formata mogu ukloniti nepodržana polja; provjerite u načinu rada Igralište
  • Nedostaje sistemski prompt — Claude i Gemini različito obrađuju sistemske promptove; provjerite izlaz prijevoda
  • SDK vraća sirovi niz znakova umjesto objekta — Riješeno u v1.x; alat za pročišćavanje odgovora uklanja nestandardna polja (x_groq, usage_breakdown itd.) koja uzrokuju greške pri Pydantic validaciji u OpenAI SDK-u. Ako ovo i dalje vidite na v3.x+, prijavite problem.
  • GLM/ERNIE odbija ulogu system — Riješeno u v1.x; normalizator uloga automatski spaja sistemske poruke s korisničkim porukama za nekompatibilne modele. Ako ovo i dalje vidite na v3.x+, prijavite problem.
  • Uloga developer nije prepoznata — Riješeno u v1.x; automatski se pretvara u system za pružaoce usluga koji nisu OpenAI. Ako ovo i dalje vidite na v3.x+, prijavite problem.
  • json_schema ne radi s Gemini modelom — Riješeno u v1.x; response_format se sada pretvara u Gemini parametre responseMimeType + responseSchema. Ako ovo i dalje vidite na v3.x+, prijavite problem.

Postavke otpornosti

Automatsko ograničavanje brzine se ne aktivira

  • Automatsko ograničavanje brzine primjenjuje se samo na pružaoce usluga s API ključem (ne na OAuth/pretplatu)
  • Provjerite je li automatsko ograničavanje brzine omogućeno u Settings → Resilience → Provider Profiles
  • Provjerite vraća li pružalac usluge statusne kodove 429 ili zaglavlja Retry-After

Podešavanje eksponencijalnog odgađanja

Profili pružalaca usluga podržavaju sljedeće postavke:

  • Osnovna odgoda — Početno vrijeme čekanja nakon prvog neuspjeha (zadano: 1s)
  • Maksimalna odgoda — Gornja granica vremena čekanja (zadano: 30s)
  • Množilac — Koliko povećati odgodu po svakom uzastopnom neuspjehu (zadano: 2x)

Sprečavanje efekta stampeda

Kada mnogo istovremenih zahtjeva pristupi pružaocu usluge s ograničenom brzinom, OmniRoute koristi mutex + automatsko ograničavanje brzine kako bi serijalizirao zahtjeve i spriječio lančane neuspjehe. Ovo se automatski primjenjuje na pružaoce usluga s API ključem.

Zahtjevi za razgovor ne uspijevaju uz 503 / chat_admission_busy

Simptomi:

  • Krajnja tačka za dovršavanje razgovora vraća ponovljivi odgovor 503 čiji je kod greške chat_admission_busy.
  • Odgovor uključuje Retry-After. Od verzije #12135 vrijednost se izvodi iz uočene zauzetosti — uzima se veća vrijednost između perioda OMNIROUTE_CHAT_ADMISSION_QUEUE_MS tokom kojeg je zahtjev već čekao i vremena tokom kojeg se drže trenutni zahtjevni najmovi — zaokružena naviše na cijele sekunde i ograničena na 60. Kada je kontrolni mehanizam neaktivan, zadržavaju se historijske minimalne vrijednosti: 2 sekunde na putanji zasnovanoj na bajtovima i 1 sekunda na putanji zasnovanoj na strukturi (koja također uključuje reason: "structure_limit").
  • To se može dogoditi dok je drugi zahtjevni razgovor ili dugotrajni streaming odgovor još uvijek u toku.

Tijelo odgovora zasnovanog na bajtovima je:

{
  "error": {
    "message": "Chat admission capacity is temporarily unavailable. Retry shortly.",
    "type": "server_error",
    "code": "chat_admission_busy"
  }
}

Odgovor zasnovan na strukturi koristi isti tip i kod, uz poruku Local chat admission capacity is busy for this structurally heavy request; upstream provider routing was not attempted. Retry shortly. i reason: "structure_limit". Uz zadane pragove, zahtjev je strukturno zahtjevan kada ima najmanje 200 poruka, najmanje 64 alata ili najmanje 32,000 procijenjenih tokena, odnosno kada ograničena procjena strukture iscrpi svoja ograničenja od 10,000 posjećenih čvorova ili dubine 12.

Uzrok: Ovo je namjerno odbacivanje opterećenja unutar OmniRoutea, a ne greška uzvodnog pružaoca usluge. Svaki proces koristi lokalni zaštitni mehanizam procesa kako bi rezervirao ograničeni kapacitet za zahtjevne zahtjeve prije zadržavanja i raščlanjivanja velikog tijela zahtjeva. Zahtjevni najam ostaje zadržan tokom cijelog životnog vijeka SSE odgovora.

#503-fanout: prije ove ispravke, zaštitni mehanizam ograničavao je istovremenost na fiksni BROJ zahtjeva (OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT, zadano 1) bez obzira na memoriju hosta, pa je grananje agenta za programiranje (više podagenata/CLI-jeva, tijela rutinski > 256 KB) smanjivalo efektivnu istovremenost na približno 1 i uzrokovalo odgovore 503 pri potpuno normalnom opterećenju. Zaštitni mehanizam sada se samostalno podešava: njime upravlja automatski izveden BAJTNI budžet za unos (OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES), dimenzioniran prema stvarnom memorijskom ograničenju procesa, a također provjerava signal pritiska na resurse uživo — tako da odbacuje opterećenje samo kada je host zaista pod memorijskim pritiskom, a ne samo zato što je istovremeno stiglo više zahtjevnih zahtjeva. Staro ograničenje broja (OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT) i dalje se poštuje, ali samo ako ga izričito postavite.

Kada je kapacitet zauzet, zahtjevan zahtjev prvo čeka do OMNIROUTE_CHAT_ADMISSION_QUEUE_MS (zadano 2000, 0 onemogućava čekanje) da se oslobodi mjesto prije nego što odgovori ponovljivim odgovorom 503. Ograničeno čekanje postoji kako bi klijenti agentskog tipa (OpenCode, Claude Code, Cursor), koji istovremeno granaju zahtjevne podzahtjeve, serijalizirali nalet umjesto da potroše cijeli budžet za ponovne pokušaje na trenutna odbijanja i prekinu rad usred zadatka. Trenutna zauzetost zahtjevnih najmova, utvrđeni bajtni budžet i ozbiljnost pritiska uživo prikazuju se na GET /api/monitoring/health → chatAdmission (inflightBytes, maxInflightBytes, budgetSource, pressureSeverity, countCapEnabled) — provjerite ih prije izmjene bilo koje varijable okruženja. Settings → Resilience → Request Queue → Concurrent Requests ne upravlja ovim; ta postavka upravlja zasebnim mehanizmom reda zahtjeva pružaoca usluge.

Rješenje:

  1. Prvo pokušajte ponovo. Klijenti trebaju poštovati Retry-After i koristiti odgađanje umjesto trenutnog ponavljanja zahtjeva.
  2. Provjerite /api/monitoring/health → chatAdmission prije bilo kakvog podešavanja. countCapEnabled: false i velikodušan maxInflightBytes znače da automatski izveden budžet već ispravno obavlja svoj posao; pressureSeverity vrijednosti high/critical znači da hostu zaista nedostaje memorije — to se ne može riješiti varijablom okruženja za prihvat zahtjeva, već je potrebno više RAM-a ili manje radno opterećenje.
  3. Samo ako /api/monitoring/health pokaže da je automatski izveden budžet zaista premalen za vaš host (rijetko — već se prilagođava okruženjima od kontejnera do fizičkog servera), direktno ga nadjačajte pomoću OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES umjesto vraćanja na zastarjelo ograničenje broja zahtjeva.

Pogledajte referencu varijabli okruženja za mjerodavne postavke prihvata zahtjeva.


Opcionalna taksonomija grešaka RAG-a / LLM-a (16 problema)

Neki korisnici OmniRoutea postavljaju pristupnik ispred RAG ili agentskih sistema. U takvim postavkama često se pojavljuje neobičan obrazac: OmniRoute izgleda ispravno (pružaoci usluga su dostupni, profili usmjeravanja su ispravni, nema upozorenja o ograničenju broja zahtjeva), ali je konačni odgovor ipak pogrešan.

U praksi ovi incidenti obično potiču iz nizvodnog RAG procesa, a ne iz samog pristupnika.

Ako želite zajednički rječnik za opisivanje tih grešaka, možete koristiti WFGY ProblemMap, vanjski tekstualni resurs s MIT licencom koji definiše šesnaest obrazaca grešaka koje se ponavljaju u RAG / LLM sistemima. Na visokom nivou obuhvata:

  • odstupanje pri dohvaćanju i narušene granice konteksta
  • prazne ili zastarjele indekse i vektorske baze
  • nepodudaranje ugrađivanja i semantike
  • probleme sa sastavljanjem upita i prozorom konteksta
  • kolaps logike i pretjerano samouvjerene odgovore
  • greške u dugim lancima i koordinaciji agenata
  • odstupanje memorije i uloga u sistemima s više agenata
  • probleme s redoslijedom implementacije i pokretanja

Ideja je jednostavna:

  1. Kada istražujete loš odgovor, zabilježite:
    • korisnički zadatak i zahtjev
    • kombinaciju rute ili pružaoca usluga u OmniRouteu
    • sav RAG kontekst korišten nizvodno (dohvaćeni dokumenti, pozivi alata itd.)
  2. Povežite incident s jednim ili dva broja iz WFGY ProblemMapa (No.1 … No.16).
  3. Pohranite broj na vlastitu nadzornu ploču, u operativni priručnik ili sistem za praćenje incidenata, uz OmniRoute zapise.
  4. Upotrijebite odgovarajuću WFGY stranicu da biste odlučili trebate li promijeniti svoj RAG sistem, mehanizam za dohvaćanje ili strategiju usmjeravanja.

Kompletan tekst i konkretna uputstva dostupni su ovdje (MIT licenca, samo tekst):

README za WFGY ProblemMap

Ovaj odjeljak možete zanemariti ako iza OmniRoutea ne pokrećete RAG ili agentske procese.


Poznati problemi u v3.8.0

Problemi specifični za izdanje v3.8.0 i njihova trenutna zaobilazna rješenja. Ako ispravka bude dostupna u kasnijoj zakrpi, unos će biti ažuriran ili uklonjen.

Greške autentifikacije Devin CLI-ja

Simptomi:

  • „Devin CLI nije pronađen“ ili „autentifikacija nije uspjela“ prilikom pozivanja alata koji koriste Devin
  • Provjera CLI-ja tokom izvršavanja prijavljuje installed=false

Uzroci:

  • CLI_DEVIN_BIN upućuje na putanju koja ne postoji
  • Devin CLI nije instaliran na hostu

Rješenje:

  1. Instalirajte Devin CLI za svoju platformu
  2. Postavite CLI_DEVIN_BIN=/usr/local/bin/devin (ili stvarnu putanju) u .env
  3. Ponovo pokrenite OmniRoute i ponovite testiranje putem Nadzorna ploča → CLI alati

Model je zaglavljen u periodu hlađenja (ručno poništavanje)

Simptomi:

  • Model ostaje naveden kao da je u periodu hlađenja čak i nakon isteka vremena
  • Zahtjevi i dalje preskaču model pri kombinovanom usmjeravanju iako je vremenska oznaka u prošlosti

Ručno poništavanje:

  • Nadzorna ploča: Postavke → Periodi hlađenja modela → kliknite Ponovo omogući na kartici na koju problem utiče
  • API: DELETE /api/resilience/model-cooldowns sa zaglavljima za upravljačku autentifikaciju

Povezivanje s pružaocem usluga Command Code ne uspijeva uz grešku 403

Simptomi:

  • Greška 403 prilikom testiranja veze s pružaocem usluga Command Code
  • Kartica pružaoca usluga prikazuje „neovlašteno“ nakon novog dodavanja

Uzrok: OAuth proces nije završen (povratni poziv nije primljen ili token nije sačuvan).

Rješenje:

  • Pokrenite omniroute providers iz CLI-ja da biste ponovo pokrenuli OAuth proces ili
  • Ponovo pokrenite OAuth putem Nadzorna ploča → Pružaoci usluga → Command Code → Ponovo poveži

ModelScope vraća agresivne periode hlađenja za greške 429

Simptomi:

  • Veoma kratki ili trenutni periodi hlađenja u ModelScopeu nakon malog naleta zahtjeva
  • Kombinovano usmjeravanje preskače ModelScope ranije nego što je očekivano

Uzrok: ModelScope šalje zaglavlja Retry-After specifična za pružaoca usluga. v3.8.0 sadrži namjensku obradu tih zaglavlja, pa ih starije verzije pogrešno tumače kao generičke naznake ograničenja broja zahtjeva.

Rješenje:

  • Provjerite koristite li v3.8.0 ili noviju verziju
  • Provjerite je li opcija useUpstream429BreakerHints omogućena u odjeljku Postavke → Otpornost

OMNIROUTE_WS_BRIDGE_SECRET nedostaje u produkciji

Simptomi:

  • Greška 401 za svaki zahtjev prema Codex/Responses WebSocket mostu prilikom pokretanja na udaljenom produkcijskom hostu
  • WebSocket most prekida uspostavljanje veze odmah nakon povezivanja

Uzrok: Varijabla okruženja OMNIROUTE_WS_BRIDGE_SECRET nedostaje u produkcijskom okruženju.

Rješenje:

  1. Generišite nasumičnu tajnu: openssl rand -hex 32
  2. Postavite OMNIROUTE_WS_BRIDGE_SECRET=<random-secret> u okruženju produkcijskog servera (i svakog klijenta koji komunicira s mostom)
  3. Ponovo pokrenite OmniRoute

Responses API: pozadinski način rada degradiran je na sinhroni

Simptomi:

  • Zabilježeno je upozorenje: background mode degraded to synchronous
  • Zahtjev s background: true vraća uobičajeni sinhroni odgovor umjesto identifikatora pozadinskog zadatka

Uzrok: v3.8.0 namjerno degradira background: true u Responses API-ju na sinhrono izvršavanje uz prikazivanje upozorenja. Potpuno asinhrono izvršavanje u pozadini planirano je za buduću isporuku.

Rješenje:

  • Prilagodite klijent tako da poziva bez opcije background ili
  • Sačekajte kasnije izdanje koje donosi potpuno asinhroni pozadinski način rada (pratite dnevnik promjena)

Sporo pokretanje / Istek vremena za provjeru spremnosti

Ako CLI ispiše ⚠ Server did not respond within 60s, ali server zapravo radi, vremenski okvir za provjeru spremnosti prekratak je za vaše okruženje.

Ovo se često događa na Windowsu (antivirusni programi, alati za praćenje sistema datoteka) ili u kontejnerima s velikim radnim opterećenjem pri pokretanju.

Rješenje — povećajte vremenski okvir:

# Putem varijable okruženja (ostaje primijenjeno nakon ponovnih pokretanja):
export OMNIROUTE_READY_TIMEOUT_MS=180000   # 3 minute
omniroute serve

# Putem CLI opcije (jednokratno):
omniroute serve --ready-timeout 180000

Zadana vrijednost je 60 000 ms (60 s). Upozorenje je samo informativno; server se nastavlja pokretati u pozadini i bit će dostupan kada se pokretanje završi.

Za sve detalje o OMNIROUTE_READY_TIMEOUT_MS pogledajte docs/reference/ENVIRONMENT.md.


Još uvijek ne radi?