# Environment Variables Reference (Slovenščina) 🌐 **Languages:** 🇺🇸 [English](../../../../reference/ENVIRONMENT.md) · 🇪🇹 [am](../../../am/docs/reference/ENVIRONMENT.md) · 🇸🇦 [ar](../../../ar/docs/reference/ENVIRONMENT.md) · 🇦🇿 [az](../../../az/docs/reference/ENVIRONMENT.md) · 🇧🇬 [bg](../../../bg/docs/reference/ENVIRONMENT.md) · 🇧🇩 [bn](../../../bn/docs/reference/ENVIRONMENT.md) · 🇧🇦 [bs](../../../bs/docs/reference/ENVIRONMENT.md) · 🇨🇿 [cs](../../../cs/docs/reference/ENVIRONMENT.md) · 🇩🇰 [da](../../../da/docs/reference/ENVIRONMENT.md) · 🇩🇪 [de](../../../de/docs/reference/ENVIRONMENT.md) · 🇬🇷 [el](../../../el/docs/reference/ENVIRONMENT.md) · 🇪🇸 [es](../../../es/docs/reference/ENVIRONMENT.md) · 🇪🇪 [et](../../../et/docs/reference/ENVIRONMENT.md) · 🇮🇷 [fa](../../../fa/docs/reference/ENVIRONMENT.md) · 🇫🇮 [fi](../../../fi/docs/reference/ENVIRONMENT.md) · 🇫🇷 [fr](../../../fr/docs/reference/ENVIRONMENT.md) · 🇮🇪 [ga](../../../ga/docs/reference/ENVIRONMENT.md) · 🇮🇳 [gu](../../../gu/docs/reference/ENVIRONMENT.md) · 🇳🇬 [ha](../../../ha/docs/reference/ENVIRONMENT.md) · 🇮🇱 [he](../../../he/docs/reference/ENVIRONMENT.md) · 🇮🇳 [hi](../../../hi/docs/reference/ENVIRONMENT.md) · 🇭🇷 [hr](../../../hr/docs/reference/ENVIRONMENT.md) · 🇭🇺 [hu](../../../hu/docs/reference/ENVIRONMENT.md) · 🇦🇲 [hy](../../../hy/docs/reference/ENVIRONMENT.md) · 🇮🇩 [id](../../../id/docs/reference/ENVIRONMENT.md) · 🇳🇬 [ig](../../../ig/docs/reference/ENVIRONMENT.md) · 🇮🇹 [it](../../../it/docs/reference/ENVIRONMENT.md) · 🇯🇵 [ja](../../../ja/docs/reference/ENVIRONMENT.md) · 🇬🇪 [ka](../../../ka/docs/reference/ENVIRONMENT.md) · 🇰🇭 [km](../../../km/docs/reference/ENVIRONMENT.md) · 🇮🇳 [kn](../../../kn/docs/reference/ENVIRONMENT.md) · 🇰🇷 [ko](../../../ko/docs/reference/ENVIRONMENT.md) · 🇱🇹 [lt](../../../lt/docs/reference/ENVIRONMENT.md) · 🇱🇻 [lv](../../../lv/docs/reference/ENVIRONMENT.md) · 🇮🇳 [ml](../../../ml/docs/reference/ENVIRONMENT.md) · 🇮🇳 [mr](../../../mr/docs/reference/ENVIRONMENT.md) · 🇲🇾 [ms](../../../ms/docs/reference/ENVIRONMENT.md) · 🇲🇹 [mt](../../../mt/docs/reference/ENVIRONMENT.md) · 🇲🇲 [my](../../../my/docs/reference/ENVIRONMENT.md) · 🇳🇵 [ne](../../../ne/docs/reference/ENVIRONMENT.md) · 🇳🇱 [nl](../../../nl/docs/reference/ENVIRONMENT.md) · 🇳🇴 [no](../../../no/docs/reference/ENVIRONMENT.md) · 🇮🇳 [or](../../../or/docs/reference/ENVIRONMENT.md) · 🇮🇳 [pa](../../../pa/docs/reference/ENVIRONMENT.md) · 🇵🇭 [phi](../../../phi/docs/reference/ENVIRONMENT.md) · 🇵🇱 [pl](../../../pl/docs/reference/ENVIRONMENT.md) · 🇵🇹 [pt](../../../pt/docs/reference/ENVIRONMENT.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/reference/ENVIRONMENT.md) · 🇷🇴 [ro](../../../ro/docs/reference/ENVIRONMENT.md) · 🇷🇺 [ru](../../../ru/docs/reference/ENVIRONMENT.md) · 🇱🇰 [si](../../../si/docs/reference/ENVIRONMENT.md) · 🇸🇰 [sk](../../../sk/docs/reference/ENVIRONMENT.md) · 🇷🇸 [sr](../../../sr/docs/reference/ENVIRONMENT.md) · 🇸🇪 [sv](../../../sv/docs/reference/ENVIRONMENT.md) · 🇰🇪 [sw](../../../sw/docs/reference/ENVIRONMENT.md) · 🇮🇳 [ta](../../../ta/docs/reference/ENVIRONMENT.md) · 🇮🇳 [te](../../../te/docs/reference/ENVIRONMENT.md) · 🇹🇭 [th](../../../th/docs/reference/ENVIRONMENT.md) · 🇹🇷 [tr](../../../tr/docs/reference/ENVIRONMENT.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/reference/ENVIRONMENT.md) · 🇵🇰 [ur](../../../ur/docs/reference/ENVIRONMENT.md) · 🇺🇿 [uz](../../../uz/docs/reference/ENVIRONMENT.md) · 🇻🇳 [vi](../../../vi/docs/reference/ENVIRONMENT.md) · 🇳🇬 [yo](../../../yo/docs/reference/ENVIRONMENT.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/reference/ENVIRONMENT.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/reference/ENVIRONMENT.md) --- > Popoln referenčni seznam vseh okoljskih spremenljivk, ki jih prepozna OmniRoute. > Za predlogo za hiter začetek glejte [`.env.example`](../../.env.example). > [!IMPORTANT] > Vsaka tukaj dokumentirana spremenljivka mora biti navedena tudi v `.env.example`, prav tako pa > mora biti tukaj navedena vsaka spremenljivka iz `.env.example`. `npm run check:env-doc-sync` > to uveljavlja ob potrditvi in v CI. Če želite spremenljivko namenoma izpustiti, jo dodajte na > seznam dovoljenih izjem v `scripts/check/check-env-doc-sync.mjs`. --- ## Kazalo vsebine - [1. Obvezne skrivnosti](#1-required-secrets) - [2. Shramba in podatkovna zbirka](#2-storage--database) - [3. Omrežje in vrata](#3-network--ports) - [4. Varnost in preverjanje pristnosti](#4-security--authentication) - [5. Čiščenje vhodnih podatkov in zaščita osebno določljivih podatkov](#5-input-sanitization--pii-protection) - [6. Pravilniki za orodja in usmerjanje](#6-tool--routing-policies) - [7. URL-ji in sinhronizacija z oblakom](#7-urls--cloud-sync) - [8. Izhodni posredniški strežnik](#8-outbound-proxy) - [9. Integracija orodij CLI](#9-cli-tool-integration) - [10. Integracije notranjega agenta in MCP](#10-internal-agent--mcp-integrations) - [11. Poverilnice ponudnikov OAuth](#11-oauth-provider-credentials) - [12. Preglasitve uporabniškega posrednika ponudnikov](#12-provider-user-agent-overrides) - [13. Združljivost prstnih odtisov CLI](#13-cli-fingerprint-compatibility) - [14. Ponudniki ključev API](#14-api-key-providers) - [15. Nastavitve časovnih omejitev](#15-timeout-settings) - [16. Beleženje](#16-logging) - [17. Optimizacija pomnilnika](#17-memory-optimization) - [18. Sinhronizacija cen](#18-pricing-sync) - [19. Sinhronizacija modelov (razvoj)](#19-model-sync-dev) - [20. Nastavitve posameznih ponudnikov](#20-provider-specific-settings) - [21. Stanje posredniškega strežnika](#21-proxy-health) - [22. Razhroščevanje](#22-debugging) - [23. Integracija z GitHubom](#23-github-integration) - [24. Peskovnik veščin (v3.8.0+)](#24-skills-sandbox-v380) - [27. Vir Radar (samostojno gostovanje)](#27-radar-feed-self-hosting) - [Scenariji uvajanja](#deployment-scenarios) - [Revizija: odstranjene/neuporabljene spremenljivke](#audit-removed--dead-variables) --- ## 1. Zahtevane skrivnosti Nenastavljene skrivnosti, označene z **Da**, se samodejno ustvarijo ob prvem zagonu (`JWT_SECRET`, `API_KEY_SECRET`) in trajno shranijo v `server.env` v podatkovnem imeniku — nastavite jih izrecno, kadar je ta imenik začasen. Izjema je `OMNIROUTE_WS_BRIDGE_SECRET`: ta se ne shrani v `server.env` — vstopne točke strežnika ob vsakem zagonu ustvarijo začasno vrednost, ki jo lahko uporablja le most znotraj procesa, zato ga morajo zunanji odjemalci mostu nastaviti izrecno. | Spremenljivka | Zahtevano | Privzeto | Izvorna datoteka | Opis | | ---------------------------- | ------------------- | ----------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `JWT_SECRET` | **Da** | _(nič)_ | `src/lib/auth` | Podpisuje in preverja vse piškotke sej nadzorne plošče (JWT). Ustvarite z `openssl rand -base64 48`. | | `API_KEY_SECRET` | **Da** | _(nič)_ | `src/lib/db/apiKeys.ts` | Ključ AES za šifriranje vrednosti ključev API v mirovanju v SQLite. Ustvarite z `openssl rand -hex 32`. | | `INITIAL_PASSWORD` | Ne | _(ni nastavljeno)_ | `src/lib/auth/managementPassword.ts` | Nastavi geslo nadzorne plošče ob zagonu, dokler še ni shranjeno nobeno; ko je geslo enkrat shranjeno, se prezre. Namestitve npm in izvorne kode kopirajo `.env.example` v `.env`, zato se začnejo z javno znano nadomestno vrednostjo `CHANGEME`: zamenjajte jo pred prvim zagonom ali pa v tisti `.env` nastavite `INITIAL_PASSWORD=` (prazno), da se geslo ustvari v uvodnem čarovniku ob prvem obisku, enako kot to stori nenastavljena vrednost (privzeta vrednost slike Docker). Shranjeno geslo spremenite v Nadzorna plošča → Nastavitve → Varnost ali zaženite `omniroute reset-password` (`node bin/reset-password.mjs` v izvorni kopiji) z `DATA_DIR`, nastavljenim na podatkovni imenik strežnika. | | `OMNIROUTE_WS_BRIDGE_SECRET` | **Da** (produkcija) | _(ni nastavljeno)_ | `src/app/api/internal/codex-responses-ws/route.ts` | Deljena skrivnost za interni most Codex Responses WebSocket. Preverja pristnost zahtev mostu med posrednikom WS Electron/brskalnik in OmniRoute. ⚠️ **ZAHTEVANO v produkciji — če ni nastavljena, so vse zahteve mostu WS zavrnjene.** Ustvarite z `openssl rand -base64 32`. | | `OMNIROUTE_SW_BUILD_ID` | Ne | _(git SHA)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | Izrecen ID za razveljavitev predpomnilnika service workerja za lupino PWA (#11779); prvi v verigi razreševanja. | | `SOURCE_VERSION` | Ne | _(ni nastavljeno)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | Drugi v verigi — nastavijo ga graditelji PaaS (npr. v slogu Heroku) kot nameščeni commit. | | `NEXT_PUBLIC_SW_BUILD_ID` | Ne | _(izpeljano)_ | `src/shared/components/PwaRegister.tsx` | Javna vrednost ob gradnji, ki jo odjemalec uporabi za registracijo `/sw.js?v=…`; izpeljana iz zgornjih dveh, nato iz git SHA. | | `OMNIROUTE_PEER_STAMP_TOKEN` | Ne (samodejno) | _(samodejno ob zagonu)_ | `src/server/authz/policies/management.ts` | Skrivnost na ravni procesa, ki dokazuje, da je žig zaupanja vrednega IP-ja vrstnika prišel z lastnega strežnika HTTP OmniRoute (`scripts/dev/peer-stamp.mjs`). Vmesna programska oprema authz zaupa lokalnosti zahteve (omejevanje poti LOCAL_ONLY na loopback/LAN) le, če žig nosi ta žeton. Samodejno ustvarjen ob vsakem zagonu — pustite nenastavljenega; pritrdite ga le pri namestitvah z več procesi, ki morajo deliti žig. | | `OMNIROUTE_TRUSTED_PROXIES` | Ne | _(ni nastavljeno)_ | `scripts/dev/peer-stamp.mjs` | Z vejico ločeni IP-ji ali obsegi CIDR povratnih posrednikov, katerih glavam `X-Forwarded-For` / `X-Real-IP` lahko seznam dovoljenih/zavrnjenih IP verjame — poleg naslovov loopback, naslovov zasebnih omrežij in robnih vozlišč Cloudflare, ki so vedno zaupanja vredna. Potrebno le za posrednika na katerem koli drugem javnem naslovu; sicer filter presoja lastni naslov posrednika. Omejevanje hitrosti posrednika na odjemalca (`/api/v1/relay/chat/completions`) se veže na isti razrešeni naslov odjemalca, nikoli zgolj na glave posredovanja. | ### Ukazi za ustvarjanje ```bash # Ustvarite vse štiri skrivnosti hkrati: echo "JWT_SECRET=$(openssl rand -base64 48)" echo "API_KEY_SECRET=$(openssl rand -hex 32)" echo "INITIAL_PASSWORD=$(openssl rand -base64 16)" echo "OMNIROUTE_WS_BRIDGE_SECRET=$(openssl rand -base64 32)" ``` > [!CAUTION] > Datotek `.env` z dejanskimi skrivnostmi nikoli ne potrjujte v sistem nadzora različic. `.gitignore` že izključuje `.env`, vendar pred potiskanjem preverite. --- ## 2. Hramba in podatkovna baza OmniRoute uporablja **SQLite** (prek `better-sqlite3`) za vso trajno hrambo. Te spremenljivke nadzorujejo lokacijo podatkov, šifriranje in življenjski cikel. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ------------------------------------------ | ----------------------------- | ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `DATA_DIR` | `~/.omniroute/` | `src/lib/db/core.ts` | Korenski imenik za SQLite bazo, varnostne kopije in podatkovne datoteke. Preglasite za Docker volumne ali poti po meri. | | `OMNIROUTE_ALLOW_DEFAULT_DATA_DIR` | _(ni nastavljeno)_ | `src/lib/dataPaths.ts` | Varnostni ventil za zaščito DATA_DIR med testi/eval (#10428). Testi in Node eval/print sonde (`-e`/`--eval`/`-p`/`--print`, vključno z oblikama `--eval=`/`--print=`) brez nastavljenega `DATA_DIR` se preusmerijo v začasni imenik za enkratno uporabo, da ne morejo odpreti dejanske podatkovne baze operaterja; nastavite na `1`, da ponovno omogočite dejanski imenik. | | `OMNIROUTE_BUILD_SHA` | _(ni nastavljeno)_ | `src/lib/monitoring/buildSha.ts` | Git SHA tekočega artefakta. Označi ga `npm run build:release`; lahko se injektira v vsebnike, ki se dostavljajo brez zaznamka `dist/BUILD_SHA`. Prikazan kot `system.buildSha` na `/api/monitoring/health`. | | `OMNIROUTE_RELEASE_REF` | `origin/main` | `scripts/build/buildProvenance.ts` | Ref, glede na katerega preverjanje izvora pakirnega artefakta preverja SHA graditve (#10427). | | `OMNIROUTE_ALLOW_CANARY_BUILD` | _(ni nastavljeno)_ | `scripts/build/buildProvenance.ts` | Nastavite na `1`, da dovolite pakiranje graditve, katere SHA ni na liniji izdaje, in jo zabeležite kot namerno canary graditev, namesto da bi preverjanje spodletelo (#10427). | | `OMNIROUTE_SMOKE_API_KEY` | _(ni nastavljeno)_ | `scripts/ops/deploy-canary.mjs` | API ključ za smoke sondo canary uvajanja, poslan kot `Authorization: Bearer` na `/v1/chat/completions`. Uporablja ga samo skripta za uvajanje (#10429), nikoli strežnik. Ni povezan s spremenljivkami `OMNIROUTE_SMOKE_*` opcijskega CLI smoke ogrodja (`RUN_CLI_SMOKE=1`, `OMNIROUTE_SMOKE_BASE_URL/MODEL/API_KEY_ENV/TARGETS/TIMEOUT_MS` v `tests/integration/upstream-cli-smoke.int.test.ts`) — glejte [Integracije CLI → Dejanski smoke pregled](../guides/CLI-INTEGRATIONS.md). | | `OMNIROUTE_BUILDING` | _(ni nastavljeno)_ | `src/lib/buildPhase.ts` | Signal faze graditve (#10060): `scripts/build/build-next-isolated.mjs` ga nastavi na `1` in ga podeduje vsak zagnani gradbeni delavec, tako da DB plast vrne no-op čep namesto nalaganja izvornega dodatka better-sqlite3 (ki delavca ob izhodu prekine). Nikoli ni nastavljen za tekoči strežnik. | | `OMNIROUTE_SKIP_NATIVE_DEP_CHECK` | `0` | `scripts/check/check-native-deps.mjs` | Nastavite na `1`, da preskočite opcijsko preverjanje predgraditve native odvisnosti za eksotična vendored drevesa. S tem manjkajoča odvisnost ne postane gradljiva; uporabite samo, kadar so native odvisnosti zagotovljene zunaj običajnega poteka. | | `OMNIROUTE_DATA_DIR` | _(ni nastavljeno)_ | `open-sse/executors/promptql/threadSticky.ts` | **Rezervni vzdevek** za `DATA_DIR`, preverjen samo, ko `DATA_DIR` ni nastavljen. Uporablja se za iskanje predpomnilnika thread-sticky sej PromptQL izvajalca na disku (`/promptql-thread-sessions.json`); če nobena od spremenljivk ni nastavljena, predpomnilnik ostane samo v pomnilniku (ni trajen med ponovnimi zagoni). | | `OMNIROUTE_PLUGINS_DIR` | _(ni nastavljeno)_ | `src/lib/plugins/scanner.ts` | Imenik, ki ga bere **skener vtičnikov med izvajanjem** — in koren, v katerega namešča upravitelj vtičnikov — s čimer preglasi privzeto vrednost, izpeljano iz domačega imenika (#11827). Usmerite ga na bind-mountano drevo vtičnikov v Docker/K8s, namesto da premikate HOME samo zato, da premaknete pot skeniranja (HOME nadzoruje tudi vsa druga vedenja, odvisna od domačega imenika). Ni nastavljeno = `~/.omniroute/plugins`, oz. `/tmp/.omniroute/plugins`, kadar proces sploh ne izvaža domačega imenika — tiho neodkrivanje, ki ga ta spremenljivka odpravi. Razrešeni imenik se ob zagonu enkrat zabeleži kot `scanner.dir_resolved` skupaj z vhodom, ki je zmagal. Samo na strani strežnika: CLI ukazni vtičniki ohranijo svoj `OMNIROUTE_PLUGIN_PATH` (razdelek 9). | | `STORAGE_ENCRYPTION_KEY` | _(prazno = onemogočeno)_ | `src/lib/db/encryption.ts` | AES ključ za popolno šifriranje SQLite baze podatkov v mirovanju. Ustvarite z `openssl rand -hex 32`. | | `STORAGE_ENCRYPTION_KEY_VERSION` | `v1` | `scripts/build/bootstrap-env.mjs`, `electron/main.js` | Oznaka različice šifrirnega ključa. Povečajte jo pri izvajanju rotacije ključev, da omogočite dešifriranje starih varnostnih kopij. | | `DISABLE_SQLITE_AUTO_BACKUP` | `false` | `src/lib/db/backup.ts` | Ko je `true`, preskoči rutinske varnostne kopije SQLite datoteke pred zapisom (shranjevanje/čiščenje cen models.dev, zapisi nastavitev). Ročne varnostne kopije in kopije pred obnovitvijo se še vedno izvajajo. **Ne** onemogoča obveznega trajnega varnostnega posnetka izvajalca migracij ali zaščite pred množičnimi migracijami za obstoječo trajno bazo podatkov. Neročne varnostne kopije so omejene na največ enkrat na 60 minut. Nadzorna plošča **Nastavitve → Shramba** lahko rutinsko samodejno varnostno kopiranje onemogoči neodvisno. | | `OMNIROUTE_SQLITE_SLOW_MS` | _(nenastavljeno/izklopljeno)_ | `src/lib/db/adapters/slowDiagnostics.ts` | Milisekunde; vrednosti pod 1 ali neštevilske vrednosti ostanejo izklopljene; opozori največ enkrat na 10 s; vrstica dnevnika vsebuje samo driver, operation in elapsedMs. | | `OMNIROUTE_CRYPT_KEY` | _(nenastavljeno)_ | `src/lib/db/encryption.ts` | **Zastareli vzdevek** za `STORAGE_ENCRYPTION_KEY`. Sprejet kot rezerva, ko primarna spremenljivka ni prisotna. | | `OMNIROUTE_API_KEY_BASE64` | _(nenastavljeno)_ | `src/lib/db/encryption.ts` | **Zastareli vzdevek** (oblika, kodirana z Base64), sprejet kot rezerva. Pred uporabo se samodejno dekodira. | | `OMNIROUTE_DB_HEALTHCHECK_INTERVAL_MS` | _(nenastavljeno)_ | `src/lib/db/core.ts` | Preglasi interval periodičnega preverjanja zdravja SQLite (ms). Ko ni nastavljen, se privzete vrednosti izpeljejo iz `NODE_ENV`. | | `OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS` | _(odstranjeno)_ | `src/lib/db/walMaintenance.ts` | **Odstranjeno.** Periodični živi `wal_checkpoint(TRUNCATE)` lahko razveljavi deljeno preslikavo wal-indexa in sesuje proces s SIGBUS (#13973), zato razporejevalnik ne obstaja več. Spremenljivka je inertna: pozitivna vrednost enkrat zabeleži opozorilo o opuščanju, medtem ko `0` ali nenastavljeno ostane tiho. WAL vzdržujejo PASSIVE kontrolne točke (spodaj), skrajša pa ga kontrolna točka ob zaustavitvi. | | `OMNIROUTE_WAL_PASSIVE_INTERVAL_MS` | `300000` (5m) | `src/lib/db/walMaintenance.ts` | Preglasi interval pogostega `wal_checkpoint(PASSIVE)` (ms). Ohranja čakajoče WAL okvirje majhne, da kontrolne točke ostanejo hitre in WAL datoteka ostane omejena med skrajšanji ob zaustavitvi. `0` onemogoči. | | `OMNIROUTE_WAL_GUARD_MAX_MB` | `256` | `src/lib/db/walMaintenance.ts` | Ko PASSIVE tik ugotovi, da je WAL datoteka nad to velikostjo, zaženi `wal_checkpoint(RESTART)`, da se WAL začne znova brez prepisovanja preslikanega wal-indexa. Žive kontrolne točke v načinu skrajšanja so bile odstranjene (glej vrstico `OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS`). | | `OMNIROUTE_PRESSURE_SELF_RESTART` | `false` | `open-sse/utils/resourcePressure.ts` | Nastavite na `1`/`true`/`yes`/`on`, da se proces konča, ko kritični pritisk na vire vztraja `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS`, kar nadzorniku (systemd `Restart=always`, politika ponovnega zagona Docker) omogoči, da vrne čist proces, namesto da bi neskončno serviral napake 503. | | `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS` | `120000` (2m) | `open-sse/utils/resourcePressure.ts` | Kako dolgo mora kritični pritisk trajati, preden se sproži izhod za samodejni ponovni zagon. | | `OMNIROUTE_PRESSURE_PSI_DISABLED` | `false` | `open-sse/utils/resourcePressurePolicy.ts` | Nastavite na `1`/`true`/`yes`/`on`, da se prezre celogostiteljski `/proc/pressure/memory` (`psi_some` / `psi_full`), ko hrupni sosed sproži napake 503, medtem ko je ta proces v redu (#13124). Zaščiti cgroup in V8 kopice ostaneta vklopljeni. PSI prav tako preneha šteti kot dokaz dušenja jedra za `cgroup_high`: skupni znesek cgroup nad `memory.high` se nato spremeni v kritičnega šele ob povečanju `memory.events` `high`/`max`. Brez `memory.events` se ohrani surovo razmerje. | | `OMNIROUTE_SQLJS_WASM_PATH` | _(samodejno zaznavanje)_ | `src/lib/db/adapters/sqljsAdapter.ts` | Eksplicitna pot (absolutna ali relativna glede na cwd) do `sql-wasm.wasm` pri uporabi rezervnega adapterja `sql.js` WASM. Ko ni nastavljena, se samodejno zazna prek odvisnosti paketa in kandidatnih postavitev. | | `OMNIROUTE_BATCH_RETENTION_DAYS` | `30` | `src/lib/db/cleanup.ts` | Število dni, ko samodejni pregled čiščenja hrani kontrolne točke zaključenega (dokončanega/neuspelega/preklicanega/poteklega) opravila Batch API, sklicane vhodne/izhodne datoteke in datoteke z napakami ter vrstico, preden jih izbriše. Učinkuje šele, ko je vklopljen `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED`; ustreza OpenAInemu lastnemu oknu hrambe izhoda Batch API. Ne vpliva na pot `DELETE /api/v1/batches/delete-completed`, ki jo sproži upravljavec in ki po zasnovi ostaja brezpogojna (brez filtra starosti). | | `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED` | `false` | `src/lib/db/cleanup.ts` | Ko je `true`, samodejni pregled čiščenja izbriše zaključena opravila Batch API (in njihove kontrolne točke), starejša od `OMNIROUTE_BATCH_RETENTION_DAYS`, ter počisti vsebino BLOB naloženih datotek, starejših od njihovega lastnega `expires_at`. Privzeto izklopljeno: vsaka obstoječa namestitev ohrani te podatke natanko tako kot prej, dokler se upravljavec ne odloči za vklop. Je tudi zastavica funkcije, ki jo je mogoče urejati v nadzorni plošči — glejte `docs/reference/FEATURE_FLAGS.md` → Runtime. | | `OMNIROUTE_SKIP_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts`, `src/lib/db/healthCheck.ts` | Nastavite na `1`, da pri zagonu v celoti preskočite preverjanje zdravja baze podatkov. Uporabno za kratkotrajne naloge in integracijske teste. | | `OMNIROUTE_FORCE_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts` | Nastavite na `1`, da vsilite vklop zanke preverjanja zdravja baze podatkov, tudi ko bi bila običajno preskočena (npr. kratkotrajne naloge). | | `OMNIROUTE_SKIP_POSTINSTALL` | `0` | `scripts/postinstall.mjs` | Nastavite na `1`, da med `npm install` preskočite ogrevanje izvornega izvajalnega okolja. Uporabno pri namestitvah CI/brez glave, kjer je sqlite že zgrajen. | | `OMNIROUTE_MIGRATIONS_DIR` | _(samodejno zaznano)_ | `src/lib/db/migrationRunner.ts` | Prepiše imenik, ki ga pregleduje izvajalnik migracij. Uporabno pri pošiljanju priloženih migracij v gradnjah po meri. | | `OMNIROUTE_EXTRA_MIGRATIONS_DIRS` | _(ni nastavljeno)_ | `src/lib/db/migrationRunner/extraDirs.ts` | Dodatni imeniki migracij kot vnosi `namespace=dir`, ločeni z ločilom poti platforme (npr. `ee=/opt/app/enterprise/db/migrations`). Datoteke, najdene tam, se zabeležijo kot `-`, tako da distribucija, ki pošilja svoje migracije, nikoli ne trči z nadrejenimi številskimi mesti. Nepravilno oblikovan vnos, neveljaven imenski prostor ali manjkajoč imenik sproži napako ob zagonu, namesto da bi tiho preskočil shemo. | | `OMNIROUTE_MAX_PENDING_MIGRATIONS` | `50` | `src/lib/db/migrationRunner.ts` | Varnostni prag za množično čakajoče migracije (#3416). Zagon se prekine, če je v obstoječi bazi podatkov v čakanju več migracij od tega števila (ščiti pred izbrisano tabelo sledenja). Zvišajte ga za obnovitev starejše varnostne kopije; nastavite na `0`, da preverjanje onemogočite. | | `OMNIROUTE_INSTALL_UPGRADE_WORKDIR` | _(`/.install-upgrade`)_ | `scripts/check/check-install-upgrade.mjs` | Delovni imenik za izdajno preverjanje `check:install-upgrade`. Potrebuje približno 12 GB (dve ~3 GB drevesi namestitve plus arhiv tarball), zato ne sme teči na majhnem tmpfs — na samostojnem izvajalniku je `/tmp` 12 GB tmpfs v pomnilniku in preverjanje ga je izčrpalo ter odrezalo paket. | | `OMNIROUTE_SPEND_FLUSH_INTERVAL_MS` | _(privzeto v kodi)_ | `src/lib/spend/batchWriter.ts` | Interval praznjenja (ms) za paketni zapisovalnik porabe/stroškov. Nižje vrednosti zmanjšajo združevanje zapisov; višje vrednosti zmanjšajo tekmovanje za bazo podatkov. | | `OMNIROUTE_SPEND_MAX_BUFFER_SIZE` | _(privzeto v kodi)_ | `src/lib/spend/batchWriter.ts` | Največje število medpomnjenih vnosov porabe pred vsiljenim praznjenjem. Zvišajte pri uvedbah z visokim QPS; znižajte, kadar je omejen pomnilnik pomembnejši. | | `OMNIROUTE_PROXY_FETCH_DEBUG` | _(ni nastavljeno)_ | `open-sse/utils/proxyFetch.ts` | Nastavite na `"true"`, da na poti releja Vercel izpisujete odjemne dnevnike `[ProxyFetch]`. Privzeto izklopljeno, da se izognete razkritju namigov o usmerjanju. | | `OMNIROUTE_PROXY_CORE_BINARY_PATH` | _(ni nastavljeno)_ | `src/lib/proxySubscription/coreConfig/sync.ts` | Absolutna pot do binarne datoteke lokalnega jedra posrednika (datoteka z imenom `sing-box`), ki preveri ustvarjeno konfiguracijo jedra, preden zamenja prevzeto datoteko. Če ni nastavljena, se `.generated` zapiše le poleg prevzete datoteke. Samo okolje gostitelja: nikoli se ne shrani v bazo podatkov niti ni sprejeta prek upravljalnega API-ja, ker se binarna datoteka izvaja. | | `OMNIROUTE_PROXY_CORE_RELOAD_COMMAND` | _(ni nastavljeno)_ | `src/lib/proxySubscription/coreConfig/reload.ts` | Kako lokalno jedro posrednika znova naloži po preverjeni zamenjavi konfiguracije: matrika argumentov JSON, izvedena brez lupine, ali natanko `external`, kadar datoteko uporabi zunanji opazovalec. Nikoli se ne shrani v bazo podatkov niti ni izpostavljena prek API-ja. | | `PROXY_LOG_INCLUDE_IPS` | `false` | `src/lib/proxyLogger.ts` | Nastavite na `"true"` ali `"1"`, da v podrobno vrstico dnevnika procesa `[ProxyEgress]` vključite IP-naslove odjemalca/izhoda in predpono računa. Privzeto IZKLOPLJENO, da dnevnik procesa ne razkriva IP-naslovov ali predpone računa. | | `OMNIROUTE_DEBUG` | _(ni nastavljeno)_ | `bin/cli/commands/quota.mjs` | Nastavite na `1` za izpis časovne diagnostike posameznih zahtev (`[omniroute] GET completed in Nms`) iz ukazov CLI quota na stderr. | | `OMNIROUTE_HEALTHCHECK_PATH` | _(samodejno)_ | `scripts/dev/healthcheck.mjs` | Eksplicitna pot, ki jo sondira preverjanje zdravja vsebnika. Če ni nastavljena, sonda pot izpelje iz `OMNIROUTE_BASE_PATH`; z nastavitvijo se ponovno vključite v končno točko globokega spremljanja. | | `OMNIROUTE_DEBUG_COMPLETION` | _(ni nastavljeno)_ | `bin/cli/commands/completion.mjs` | Nastavite na katero koli neprazno vrednost za oddajanje diagnostike `[omniroute completion]` iz poti predpomnilnika samodokončanja lupine CLI (branje/osveževanje/zapisovanje). Privzeto izklopljeno — ti predpomnilniki spodletijo tiho, zato manjkajoč ali poškodovan predpomnilnik nikoli ne pokvari dopolnjevanja s tipko Tab. | | `BATCH_RETRY_DURATION_MS` | `86400000` (24h) | `open-sse/services/batchProcessor.ts` | Najdaljše okno ponovnih poskusov za posamezne elemente serije (ms). Elementi, ki presežejo to trajanje, se označijo kot neuspeli. | | `BATCH_BACKOFF_BASE_MS` | `5000` | `open-sse/services/batchProcessor.ts` | Osnovna zakasnitev (ms) za eksponentni umik pri ponovnih poskusih elementov serije. | | `BATCH_BACKOFF_MAX_MS` | `3600000` (1h) | `open-sse/services/batchProcessor.ts` | Zgornja meja (ms) za eksponentni umik med ponovnimi poskusi elementov serije. | | `BATCH_MAX_CONCURRENT` | `1` | `open-sse/services/batchProcessor.ts` | Največje število serij, ki se obdelujejo hkrati. Povečajte za večjo prepustnost; ohranite nizko, da se izognete nevihtam omejitev hitrosti. | > [!IMPORTANT] > Pred spremembo obstoječe trajne zbirke podatkov izvajalnik migracij objavi popoln, po vsebini > naslovljen posnetek pod `DATA_DIR/db_backups/`. Objava zahteva datotečni sistem, ki podpira > trde povezave znotraj istega datotečnega sistema brez prepisovanja ter trajno sinhronizacijo > datotek. Gostitelji POSIX zahtevajo tudi sinhronizacijo imenikov; v sistemu Windows lahko Node > zavrne ročaje imenikov, zato OmniRoute prisili zapis objavljene datoteke, sinhronizacijo > vnosov imenika pa obravnava kot najboljše možno (best effort). > Če priklopljeni `DATA_DIR` ne more zagotoviti teh jamstev, se zagon varno ustavi, preden se > migracija uporabi. Premaknite `DATA_DIR` na volumen s temi primitivi; ne uporabljajte > `DISABLE_SQLITE_AUTO_BACKUP` za zaobiditev varnosti migracij. ### Scenariji | Scenarij | Konfiguracija | | ------------------------- | ------------------------------------------------------------------------------------------------------ | | **Lokalni razvoj** | Pustite vse privzete vrednosti. Zbirka podatkov se nahaja na `~/.omniroute/omniroute.db`. | | **Docker** | `DATA_DIR=/data` + priklopite volumen na `/data`. | | **Šifrirano v mirovanju** | Nastavite `STORAGE_ENCRYPTION_KEY` + hranite varnostne kopije ključa! Izguba ključa = izguba podatkov. | | **CI/testiranje** | `DATA_DIR=/tmp/omniroute-test` — začasno, šifriranje ni potrebno. | --- ## 3. Omrežje in vrata | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ------------------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `PORT` | `20128` | `src/lib/runtime/ports.ts` | Primarna vrata za uporabniški vmesnik nadzorne plošče in končne točke API-ja (način enih vrat). | | `OMNIROUTE_BASE_PATH` | _(prazno = koren)_ | `next.config.mjs`, `scripts/docker/ensure-docker-base-path.mjs` | Podpot URL za strežbo OmniRoute za povratnim posrednikom (nastavi Next.js `basePath`; preusmeritve avtentikacije upoštevajo basePath). Npr. `/omniroute`. V Dockerju je vrednost vgrajena med `docker build` (`ARG OMNIROUTE_BASE_PATH`); vnaprej zgrajene korenske slike lahko drugačno vrednost izvajanja uporabijo enkrat ob zagonu vsebnika, preden se Next.js zažene. Nastavite `NEXT_PUBLIC_BASE_URL` na javni izvor, ki vključuje isto podpot. | | `NEXT_PUBLIC_OMNIROUTE_BASE_PATH` | _(prazno = koren)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | V brskalniku viden odsev `OMNIROUTE_BASE_PATH`, vstavljen med gradnjo, da prikaz končne točke na nadzorni plošči pokaže `https://host/omniroute/v1` namesto `https://host/v1`. Če ni nastavljen, se uporabi `OMNIROUTE_BASE_PATH`. Po spremembi je treba ponovno zgraditi (Next `basePath` se določi med gradnjo). | | `DASHBOARD_ALLOW_EMBED` | _(nenastavljeno = vdelava v okvir onemogočena)_ | `next.config.mjs`, `scripts/build/dashboardEmbed.mjs` | Izbirno vdelovanje HTML-strani v iframe. Če ni nastavljeno, vsaka pot pošilja `frame-ancestors 'none'` + `X-Frame-Options: DENY`. Nastavite na `vscode`, da se strani (nadzorna plošča, prijava, dokumentacija, ciljna stran) strežejo z `frame-ancestors 'self' vscode-webview:` in brez `X-Frame-Options`, tako da jih lahko VS Code Simple Browser prikaže (način OmniCopilot `dashboardOpen: "editor"`). API-površina (`/api`, `/v1`, `/v1beta`, `/a2a`, `/healthz`, vzdevki na korenski ravni) v vsakem primeru ohrani stroge glave. Prepoznana je samo vrednost `vscode` — `1`/`true` tega ne omogočita. Čas gradnje: po spremembi ponovno zgradite (`docker build --build-arg DASHBOARD_ALLOW_EMBED=vscode` za slike; nastavitev na vnaprej zgrajeni namestitvi nima učinka). | | `API_PORT` | _(nenastavljeno)_ | `src/lib/runtime/ports.ts` | Če je nastavljeno, streže posredniški API `/v1/*` na teh ločenih vratih. | | `API_HOST` | `0.0.0.0` | `src/lib/runtime/ports.ts` | Naslov povezave za vrata API-ja. | | `DASHBOARD_PORT` | _(nenastavljeno)_ | `src/lib/runtime/ports.ts` | Če je nastavljeno, streže uporabniški vmesnik nadzorne plošče na teh ločenih vratih. | | `OMNI_MAX_CONCURRENT_CONNECTIONS` | `0` _(onemogočeno)_ | `src/sse/utils/backpressure.ts` | Omeji sočasne aktivne pogovorne povezave; zahteve nad omejitvijo prejmejo `503` z `Retry-After`. Pozitivno celo število omogoči zaščito; nenastavljeno/`0` jo onemogoči. | | `OMNIROUTE_INSTANCE_ID` | _(nenastavljeno)_ | `src/shared/resilience/peerRouting.ts` | Stabilen, enoličen ID za ta prehod pri veriženju instanc OmniRoute. Omogoča preverjanje dohodnih zank med vrstniki. Dovoljeni znaki: črke, številke, `.`, `_`, `:` in `-`; največ 64 znakov. | | `OMNIROUTE_PEER_URLS` | _(unset)_ | `src/shared/resilience/peerRouting.ts`, `open-sse/executors/base.ts` | Z vejico ločeni osnovni URL-ji OmniRoute, ki lahko prejmejo `X-OmniRoute-Peer-Trace`. Samo izrecno na seznam dovoljenih uvrščeni nadrejeni URL-ji prejmejo metapodatke vrstnikov; vsi drugi ponudniki ostanejo nedotaknjeni. | | `OMNIROUTE_PEER_MAX_HOPS` | `4` | `src/shared/resilience/peerRouting.ts` | Največje število predhodno obiskanih instanc OmniRoute, sprejetih v verižni zahtevi (`1`-`32`). Ponovljene instance ali izčrpan proračun vrnejo HTTP `508 Loop Detected`. | | `PROD_DASHBOARD_PORT` | `20130` | `docker-compose.prod.yml` | Na gostiteljevi strani objavljena vrata za nadzorno ploščo v produkcijskem načinu Docker. | | `PROD_API_PORT` | `20131` | `docker-compose.prod.yml` | Na gostiteljevi strani objavljena vrata za API v produkcijskem načinu Docker. | | `OMNIROUTE_PORT` | _(unset)_ | `src/lib/runtime/ports.ts` | Ima prednost pred `PORT` pri izvajanju znotraj Electrona ali drugih ovojnic. | | `LIVE_WS_PORT` | `20129` | `src/server/ws/liveServer.ts` | Vrata za strežnik WebSocket za spremljanje v realnem času v živo. | | `LIVE_WS_HOST` | `127.0.0.1` | `src/server/ws/liveServer.ts` | Naslov za vezavo strežnika WebSocket v živo. Nastavite na `0.0.0.0`, da ga izpostavite v krajevnem omrežju (nastavite tudi `LIVE_WS_ALLOWED_ORIGINS`). Povezave se preverjajo s piškotkom seje nadzorne plošče ali z API ključem Bearer, ki ima obseg upravljanja (`manage`/`admin`). | | `LIVE_WS_ALLOWED_ORIGINS` | _(unset)_ | `src/server/ws/liveServer.ts` | Z vejico ločeni dodatni izvori, ki smejo odpreti WebSocket v živo. Izvori nadzorne plošče na povratni zanki so privzeto že dovoljeni. | | `LIVE_WS_ALLOWED_HOSTS` | _(unset)_ | `src/server/ws/liveServerAllowList.ts` | Z vejico ločena dodatna imena gostiteljev, dovoljena za izvore WebSocket v živo. Za razliko od `LIVE_WS_ALLOWED_ORIGINS` (polni URL-ji izvora) se ujema le z delom gostitelja — uporabno za nastavitve krajevnega omrežja/Tailscale. | | `NEXT_PUBLIC_LIVE_WS_PUBLIC_URL` | _(unset)_ | `src/hooks/useLiveDashboard.ts` | Javni URL za WebSocket nadzorne plošče v živo (na strani brskalnika). Nastavite, ko strežnik WS postavljate za obratnim posrednikom ali predorom Cloudflare Tunnel (npr. `wss://ws.my-ai.com/live-ws`); brskalnik se poveže tja namesto na `ws://hostname:20132`. Del poti se uporablja tudi kot pot za nadgradnjo WebSocket (privzeto: `/live-ws`). | | `OMNIROUTE_ENABLE_LIVE_WS` | `true` | `src/server/ws/liveServer.ts` and `scripts/start-ws-server.mjs` | Nastavite na `0` ali `false`, da onemogočite strežnik WebSocket v realnem času (privzeto omogočen, vezan na povratno zanko). Stikalo CI/harness, ki onemogoči samostojno pomožno skripto WebSocket v živo. | | `RELAY_IP_PER_MINUTE` | `30` | `src/app/api/v1/relay/chat/completions/route.ts` | Omejitev števila posredovanih zahtev na (žeton, IP), zahtev/minuto. V pomnilniku, na instance. `0` ali negativna vrednost onemogoči preverjanje po dimenziji IP (omejitev po žetonu v bazi še vedno velja). | | `NODE_ENV` | `production` | Next.js core | Nadzoruje podrobnost beleženja, predpomnjenje, razkritje podrobnosti o napakah in optimizacije Next.js. | | `OMNIROUTE_USE_TURBOPACK` | `1` (Turbopack — privzeto v kodi) | `package.json` / Next.js 16 | Turbopack je privzeti združevalnik (bundler) za `npm run dev` in `npm run build` (2–3× hitrejše graditve, izmerjeno). Nastavite na `0` za vrnitev na webpack v sistemu Windows, ob težavah z nezdružljivostmi nativnih vezav / združljivosti združevalnika **ali na strojih z omejenim pomnilnikom RAM** — za produkcijske graditve Turbopacka na tej liniji različic Next.js (16.2.x) je v upstreamu znano, da na velikih grafih modulov dosežejo precej višji pomnilniški vrh kot webpack (popravek izvračanja pomnilnika v Turbopacku iz Next 16.3 še ni stabilen); vrnitveni webpack doseže precej nižji vrh. Glejte #6409. **Graditve Docker slike so privzeto nastavljene na `0` (webpack)**: `Dockerfile` deklarira `ARG OMNIROUTE_USE_TURBOPACK=0`, tako da gola gradnja `docker build .` (Railway in drugi gostitelji z enim klikom, ad-hoc samogostitelji) ni ubita zaradi OOM na graditelju z omejenim pomnilnikom; podajte `--build-arg OMNIROUTE_USE_TURBOPACK=1`, da sliko zgradite s Turbopackom. Glejte `docs/guides/DOCKER_GUIDE.md` → Viri ob času graditve. | | `OMNIROUTE_SKIP_DB_HEALTHCHECK` | _(ni nastavljeno)_ | `src/lib/db/core.ts` / `src/lib/db/healthCheck.ts` | Nastavite na `1`, da preskočite preverjanje zdravja integritete SQLite ob zagonu. Uporabno za hitrejši zagon pri velikih bazah podatkov. | | `NOTIFY_SOCKET` | _(ni nastavljeno)_ | systemd (protokol sd_notify) | Nastavi ga systemd, ko proces teče pod servisno enoto z integracijo sd_notify; OmniRoute ga prebere (glejte `OMNIROUTE_DISABLE_SD_NOTIFY`) za pošiljanje obvestil READY/WATCHDOG. Uporabnik ga nikoli ne nastavlja. | | `OMNIROUTE_DISABLE_SD_NOTIFY` | _(ni nastavljeno)_ | `scripts/dev/systemd-notify.mjs` | Nastavite na `1`, da onemogočite systemd sd_notify (Type=notify / WatchdogSec=) tudi ob izvajanju pod enoto systemd. Obveščevalnik je zunaj systemd v vsakem primeru brez učinka (no-op). | | `CREDENTIAL_HEALTH_CHECK_INTERVAL` | `3600000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/scheduler.ts` | Interval (ms) za razporejevalnik preverjanja zdravja poverilnic v ozadju. Najmanj: 10000 (10 s). | | `CREDENTIAL_HEALTH_CACHE_TTL` | `300000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/cache.ts` | TTL (ms) za predpomnjeni status zdravja poverilnic. | | `OMNIROUTE_DISABLE_CREDENTIAL_HEALTH_CHECK` | `false` | `src/lib/credentialHealth/scheduler.ts` | Nastavite na `1` ali `true`, da onemogočite občasno testiranje povezav ponudnikov v ozadju. Iskalni ponudniki (SEARCH_VALIDATOR_CONFIGS v `src/lib/providers/validation/searchProviders.ts`, npr. `tavily-search`) so vedno izključeni iz pregleda — njihova »validacija« je dejanska zaračunana poizvedba upstream, zato se njihovo zdravje nikoli ne preverja po časovniku (#9970). | | `DEEP_HEALTH_CHECK_ENABLED` | `0` | `src/app/api/monitoring/health/route.ts` | Nastavite na `1`, da overjenemu klicatelju omogočite zahtevo `/api/monitoring/health?deep=1`, ki enkrat na TTL vzorči površino dokončanj (completions). Anonimni klicatelji nikoli ne sprožijo sonde. | | `OMNIROUTE_EVENT_LOOP_STALL_THRESHOLD_MS` | `5000` | `src/lib/healthzLag.ts` | Prag zastoja (ms) za snemalnik zanke dogodkov ob zagonu: zamrznitev, daljša od te vrednosti, ob nadaljevanju zabeleži eno vrstico `event loop stalled` s stanjem pomnilnika in številkami v-letu (in-flight) ter poveča števec/maksimum `eventLoopStall` na `/api/monitoring/health`. Nastavite na `0` za onemogočitev; neberljiva ali negativna vrednost se vrne na `5000`. | | `HOST` | `0.0.0.0` | `scripts/dev/run-next.mjs` | Naslov vezave za razvojni/zagonski strežnik Next.js. Ko je nastavljen, preglasi privzeti `0.0.0.0`. | | `HOSTNAME` | `127.0.0.1` | `scripts/dev/run-next-playwright.mjs` | Naslov za vezavo, ki ga uporabi zaganjalnik Playwright ob zagonu Next.js. Privzeto `127.0.0.1` za hermetične teste. **Ne uporabljajte za `omniroute serve`** — namesto tega uporabite `OMNIROUTE_SERVER_HOST` (lupine POSIX samodejno nastavijo `HOSTNAME` na ime gostitelja; `.env` je ne more preglasiti). | | `OMNIROUTE_SERVER_HOST` | `0.0.0.0` | `bin/cli/commands/serve.mjs` | Naslov za vezavo za `omniroute serve`. Prepreči trk s spremenljivko lupine POSIX `HOSTNAME` (ki jo bash/zsh vedno nastavita na ime gostitelja). Če ni nastavljen, se uporabi `0.0.0.0`. (#6194) | ### Načini vrat ``` ┌─────────────────────────── Ena vrata (privzeto) ────────────────────────────┐ │ PORT=20128 │ │ → Nadzorna plošča: http://localhost:20128 │ │ → API: http://localhost:20128/v1/chat/completions │ └─────────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────────── Ločena vrata ────────────────────────────────┐ │ DASHBOARD_PORT=20128 │ │ API_PORT=20129 │ │ API_HOST=0.0.0.0 │ │ → Nadzorna plošča: http://localhost:20128 │ │ → API: http://0.0.0.0:20129/v1/chat/completions │ │ Namen: API izpostavljen omrežju LAN, nadzorna plošča le na localhost. │ └─────────────────────────────────────────────────────────────────────────────┘ ┌──────────────────────────── Docker v produkciji ────────────────────────────┐ │ PROD_DASHBOARD_PORT=443 PROD_API_PORT=8443 │ │ → Preslika vrata vsebnika na vrata gostitelja v docker-compose.prod.yml. │ └─────────────────────────────────────────────────────────────────────────────┘ ``` --- ## 4. Varnost in avtentikacija | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MACHINE_ID_SALT` | `endpoint-proxy-salt` | `src/lib/auth` | Sol, združena s strojnimi identifikatorji za prstni odtis naprave. Za izolacijo jo spremenite za vsako namestitev posebej. | | `OMNIROUTE_CLI_SALT` | _(ni nastavljeno = naključna sol za vsako namestitev, shranjena v `/cli-token-salt.json`)_ | `src/lib/machineToken.ts` | HMAC sol za izpeljavo lokalnega avtentikacijskega žetona CLI. Nastavitev te vrednosti zamenja vse žetone CLI na napravi in ima vedno prednost pred shranjeno soljo. Glejte `docs/security/CLI_TOKEN.md`. | | `AUTH_COOKIE_SECURE` | `false` | `src/lib/auth` | Nastavi zastavico `Secure` na sejnih piškotkih. **Mora biti `true`**, ko aplikacija teče za HTTPS. | | `REQUIRE_API_KEY` | `false` | API vmesna programska oprema | Ko je `true`, morajo vse proxy zahteve `/v1/*` vključevati veljaven API ključ. **Ta zastavica ne varuje `GET /v1/models`**, ki namesto tega sledi drži prijave nadzorne plošče (`requireAuthForModels`) — zato `401` iz `/v1/models` NE pomeni, da je sklepanje zaščiteno. Glejte `docs/security/INFERENCE_AUTH_POSTURE.md` (#13695). | | `ALLOW_API_KEY_REVEAL` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Omogoča razkritje polnih vrednosti API ključev v uporabniškem vmesniku nadzorne plošče. Nastavljivo prek funkcijskih zastavic nadzorne plošče; varnostno tveganje na deljenih instancah. | | `NO_LOG_API_KEY_IDS` | _(prazno)_ | `src/lib/compliance/index.ts` | Z vejico ločeni ID-ji API ključev, ki zaobidejo beleženje zahtev (skladnost z GDPR). | | `DEFAULT_RATE_LIMIT_PER_DAY` | _(ni nastavljeno = neomejeno)_ | `src/shared/utils/apiKeyPolicy.ts` | Rezervni dnevni proračun zahtev, ki se uporabi za API ključe, katerih stolpec `rate_limits` je null. Ni nastavljeno ali prazno: brez implicitne omejitve (#2289, #11017). `0` pomeni enako (neomejeno). Pozitivno celo število N omogoči N/dan, 5N/teden, 20N/mesec. Napačno oblikovane neprazne vrednosti se vrnejo na zastarela okna 1000/dan, 5000/teden, 20000/mesec. | | `MAX_BODY_SIZE_BYTES` | `10485760` (10 MB) | `src/shared/middleware/bodySizeGuard.ts` | Največja dovoljena velikost telesa zahteve. Zavrne koristne vsebine, ki presegajo to omejitev. | | `OMNIROUTE_CHAT_LARGE_BODY_BYTES` | `262144` (256 KB) | `src/shared/middleware/chatBodyAdmission.ts` | Dejanska telesa zahtev na ali nad tem pragom vzamejo atomarni, procesno-lokalni zaklep za sprejem težkih zahtev pred razčlenitvijo JSON (pot BYTE, vključno s `POST /v1/responses`). Enak izhod z zdravo rezervo [#10437](https://github.com/diegosouzapw/OmniRoute/pull/10437) kot pri strukturno težkih; še vedno omejeno z `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` / [#10110](https://github.com/diegosouzapw/OmniRoute/issues/10110), tako da se [#7849](https://github.com/diegosouzapw/OmniRoute/issues/7849) ne vrne. | | `OMNIROUTE_CHAT_HARD_MAX_BODY_BYTES` | `52428800` (50 MB) | `src/shared/middleware/chatBodyAdmission.ts` | Trda zgornja meja za pot klepeta, uveljavljena glede na bajte, prebrane med omejenim sprejemanjem, vključno z zahtevami z manjkajočo, neveljavno ali nepošteno vrednostjo `Content-Length`; presežek prejme `413`. | | `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` | _(ni nastavljeno — brez omejitve števila zahtev)_ | `src/shared/middleware/chatBodyAdmission.ts` | **#503-fanout:** ta zastarela omejitev ŠTEVILA zahtev zdaj velja le, če je izrecno nastavljena. Če ostane nenastavljena (privzeto), je sprejem težkih klepetnih zahtev namesto tega reguliran z `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` — samodejno izpeljanim proračunom BAJTOV, dimenzioniranim glede na dejansko pomnilniško omejitev procesa v **enem procesu** (ena kopica V8). Dve prekrivajoči se zahtevi `/v1/responses` z ~750k žetoni sprožita prekinitev pri ~12 Gi kopicah (#7849) — to je opozorilo o **proračunu pomnilnika**, ne trda produktna omejitev 2. Zdrav proces (kopica pod razmerjem odmetavanja) LAHKO sprejme več sočasnih dolgih `/v1/responses` prek `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM`. Desetine dolgih odjemalcev SSE (40–50) pomenijo kopico + `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` / #10110, ne »največ 2«. Slepo dviganje te vrednosti v smislu »uporabi gostitelja« ponovno uvede #7849. Množite **kopice** z **N neodvisnimi `DATA_DIR`s** (#11024); nikoli `replicas>1` na eni datoteki SQLite. | | `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` | _(samodejno izpeljano)_ | `src/shared/middleware/admissionBudget.ts` | **#503-fanout:** preglasitev samodejno izpeljanega proračuna bajtov za sprejem (25 % strožje pomnilniške omejitve V8/cgroup, deljeno z 8-kratnim prehodnim ojačanjem). Izpeljane in izrecno nastavljene vrednosti se omejijo na 8 MiB–2 GiB. Telo, večje od učinkovitega proračuna, takoj spodleti z `413 body_exceeds_budget`; natepavanje med posamezno obdelovalnimi telesi ostane ponovljiva napaka `503`. 40–50 sočasnih dolgih odjemalcev SSE pomeni ta proračun + kopico, ne trdo »največ 2«. Pred nastavljanjem preberite `chatAdmission.maxInflightBytes` / `budgetSource` / `pressureSeverity` na `/api/monitoring/health`. | | `OMNIROUTE_CHAT_ADMISSION_HEAP_SHED_RATIO` | `0.75` | `src/shared/middleware/chatBodyAdmission.ts` | Razmerje odmetavanja ob pritisku na kopico (`heapUsed / heap_size_limit`) za sprejem težkih zahtev BYTE in STRUCTURE (#10183, #10268, #10437). Sočasna težka zahteva, ki presega `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT`, se odvrže s ponovljivo napako `503` le, kadar je kopica TUDI na tem razmerju ali nad njim; na zdravi kopici se namesto tega sprejme prek mehanizma zdrave rezerve (healthy-headroom). | | `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM` | `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` (privzeto `1`) | `src/shared/middleware/chatBodyAdmission.ts` | Omejena dodatna zmogljivost za hitro pot zdrave kopice (#10437) na **obeh** STRUCTURE in BYTE (`admitChatRequest`, vključno s telesi ≥ `OMNIROUTE_CHAT_LARGE_BODY_BYTES`). Brez te omejitve bi vsaka zasedena, a glede kopice zdrava zahteva zaobšla sprejem brez zgornje meje. Ko je prek poti zdrave kopice aktivnih toliko sočasnih najemov, nadaljnje zasedene zahteve preidejo na ISTO pot omejenega čakanja/odmetavanja, ki se uporablja ob dejanskem pritisku na kopico. `0` obhod popolnoma onemogoči. | | `OMNIROUTE_CHAT_HEAVY_MESSAGE_COUNT` | `200` | `src/shared/middleware/chatBodyAdmission.ts` | Število sporočil, ki klepetno zahtevo razvrsti kot težko, tudi kadar je njeno telo pod pragom bajtov. | | `OMNIROUTE_CHAT_HEAVY_TOOL_COUNT` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | Število orodij, ki klepetno zahtevo razvrsti kot težko, tudi kadar je njeno telo pod pragom bajtov. | | `OMNIROUTE_CHAT_HEAVY_ESTIMATED_TOKENS` | `32000` | `src/shared/middleware/chatBodyAdmission.ts` | Konzervativna ocena števila žetonov po velikosti niza, ki zahtevo razvrsti kot težko; to je približek stroška sprejema, ne tokenizacija za obračun ponudnika. | | `OMNIROUTE_CHAT_HARD_MAX_MESSAGES` | `0` (onemogočeno) | `src/shared/middleware/chatBodyAdmission.ts` | Izbirna omejitev zgodovine klepeta po želji (opt-in). Privzeto onemogočena: število sporočil je politika namestitve, ne univerzalna lastnost zahteve, in omejitev tukaj zavrne pogovore s končno napako `413`, preden jih cevovod stiskanja sploh lahko naredi obdelovalne. Rast kopice omejujeta `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` in odmetavanje ob pritisku na kopico. Nastavite pozitivno vrednost na namestitvah z omejenim pomnilnikom, ki potrebujejo trdo zgornjo mejo; presežek nato prejme strukturirano napako `413` »compact-required« (zahtevana strnitev). | | `OMNIROUTE_MAX_NONSTREAMING_RESPONSE_BYTES` | `67108864` (64 MB) | `open-sse/handlers/chatCore/nonStreamingResponseBody.ts` | Trda zgornja meja za odgovor zgornjega toka brez pretakanja, ki se v celoti shrani v pomnilnik. Po tej meji se bralnik zgornjega toka prekliče in zahteva hitro spodleti, namesto da bi rasel neomejen niz, dokler se kopica ne izčrpa. | | `OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES` | `768` | `open-sse/handlers/chatCore/responseHeaders.ts` | Največje število bajtov na liniji, posredovanih iz glav odgovora izvornega strežnika. Ko je proračun prekoračen, se glave z nižjo prioriteto (npr. `x-codex-*`, `x-oai-request-id`) opustijo, da se ostane znotraj običajnih omejitev glav obratnih posrednikov. Nastavite višjo vrednost, če želite posredovati več metapodatkov izvornega strežnika na račun večje velikosti glav odgovora. | | `CORS_ORIGIN` | _(ni nastavljeno)_ | `src/server/cors/origins.ts` | Zastareli seznam dovoljenih enojnih izvorov CORS. Za nove namestitve raje uporabite `CORS_ALLOWED_ORIGINS`. CORS je namenjen samo brskalniškim API-odjemalcem z drugih izvorov; overjeni zapisi nadzorne plošče namesto tega uporabljajo zahteve z istega izvora in zaščito CSRF, vezano na sejo. | | `CORS_ALLOWED_ORIGINS` | _(ni nastavljeno)_ | `src/server/cors/origins.ts` | Z vejicami ločen seznam dovoljenih izvorov CORS. Nadomestni znak se ne pošilja, razen če je izrecno konfigurirano `CORS_ALLOW_ALL=true`. | | `CORS_ALLOW_ALL` | `false` | `src/server/cors/origins.ts` | Izhod v sili samo za razvoj, ki ponovi kateri koli brskalniški `Origin`. Ne omogočajte ga na skupnih ali produkcijskih namestitvah. | | `OUTBOUND_SSRF_GUARD_ENABLED` | `true` | `src/shared/network/outboundUrlGuardPolicy.ts` | Zastareli vzdevek. Njegovo stikalo na nadzorni plošči (prepis iz baze podatkov) se prebere pred to okoljsko vrednostjo; `false`, `0`, `no` ali `off` na katerem koli od njiju izklopi preverjanja gostiteljev na enak način kot `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true`, tudi če je stikalo te zastavice na nadzorni plošči shranjeno kot izklopljeno; druge vrednosti zaščito prepustijo spodnjima dvema zastavicama. | | `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS` | `false` | `src/shared/network/outboundUrlGuardPolicy.ts` | Izklopi preverjanja gostiteljev stražarja odhodnih URL-jev, vključno z blokado oblačnih metapodatkov (celotno območje 169.254.0.0/16, metadata.google.internal), na poteh ponudnikov, ki sledijo načinu stražarja: preverjanje URL-jev, odkrivanje modelov, osnovni URL-ji vozlišč ponudnikov (vključno z oddaljenimi vozlišči za rerank) in preskus nadomestnega posrednika, poleg drugih odhodnih poti ob ponudnikih, kot je pridobivanje oddaljenih slik/mediijev. Omogoča tudi zasebne cilje spletnih kljuk, razen končnih točk oblačnih metapodatkov/link-local, ki ostanejo blokirane tudi ob vklopljeni zastavici. Klepetalne zahteve, poslane prek `BaseExecutor.execute()`, ohranijo svoje preverjanje oblačnih metapodatkov. Lokalni ponudniki delujejo s privzetimi nastavitvami: `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` (privzeto `true`) že dovoljuje lokalne in LAN URL-je na poteh preverjanja, odkrivanja in vozlišč ponudnikov; preskus nadomestnega posrednika in zasebni cilji spletnih kljuk upoštevajo samo to zastavico in blokirajo lokalne/LAN gostitelje, dokler je izklopljena. Prepiše `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS=false`. Vrednost, shranjena s stikalom na nadzorni plošči, ima prednost pred to spremenljivko. | | `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` | `true` | `src/shared/network/outboundUrlGuardPolicy.ts` | Dovoli URL-je ponudnikov na lokalnih/zasebnih naslovih (127.0.0.1, localhost, LAN, zasebna območja) za preverjanje ponudnikov, odkrivanje modelov, klepet in druge odhodne poti ob ponudnikih, ki jim upravlja način stražarja. **Privzeto `true`** (lokalno najprej): stražar nato blokira končne točke oblačnih metapodatkov — celotno območje 169.254.0.0/16 in znana imena gostiteljev metapodatkov (metadata.google.internal, metadata.goog, Alibaba/Azure/Oracle IMDS, fd00:ec2::254). Nastavite `false` za način samo javni, ki blokira tudi zasebne in povratnozankne gostitelje. Stražar preveri ime gostitelja ali IP dobesedno, kot je zapisano, pred kakršnim koli poizvedovanjem DNS; v načinu samo javni ovoj varnega pridobivanja (safe-fetch) dodatno razreši ime gostitelja in zavrne vsak zasebni odgovor. `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true` izklopi ta preverjanja na poteh, ki jih navaja njegova vrstica. Vgrajeni lokalni ponudniki, kot so LM Studio, Ollama, vLLM, Llamafile in Triton, preskočijo vsa preverjanja gostiteljev za preverjanje ključa in klepet. Vrednost, shranjena s stikalom na nadzorni plošči, ima prednost pred to spremenljivko. (#5066) | | `AUDIO_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/audioProviderNodes.ts` | Omogoči, da poti `/v1/audio/*` (transkripcije, govor, prevodi) uporabljajo OpenAI-združljivo vozlišče ponudnika, gostovano zunaj localhost. Privzeto izklopljeno — usmerjanje zvoka na oddaljeni gostitelj spremeni identiteto izhodnega prometa in mora biti izrecna odločitev upravljavca. Povratnozankna/zasebna vozlišča (localhost, 127.0.0.1, 172.16-31.x) so vedno dovoljena in niso prizadeta. (#3963) | | `RERANK_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/rerankProviderNodes.ts` | Omogoči, da `POST /v1/rerank` (in povratnozankni korak rerank pomnilniškega mehanizma) uporablja OpenAI-združljivo vozlišče ponudnika, gostovano zunaj localhost — naprava v omrežju LAN ali vrstnik Tailscale, ki poganja TEI, Infinity, vLLM itd. Privzeto izklopljeno — usmerjanje na oddaljeni gostitelj spremeni identiteto izhodnega prometa in mora biti izrecna odločitev upravljavca. Povratnozankna vozlišča (localhost, 127.0.0.1, 172.16-31.x) so vedno dovoljena in niso prizadeta. Osnovni URL oddaljenega vozlišča mora prav tako prestati politiko odhodnih URL-jev ponudnikov (`OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` / `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS`). | | `OMNIROUTE_LOCAL_PROVIDER_NODE_HOSTS` | _(prazno)_ | `src/shared/network/localNodeHosts.ts` | Imena gostiteljev (ločena z vejicami ali presledki), ki jih usmerjanje vozlišč ponudnikov obravnava kot lokalna — običajno ime storitve Docker/Compose za reranker, TEI ali zvočni sidecar v lastnem Docker omrežju OmniRoute (`http://reranker:8080/v1`), tako da vozlišče ne potrebuje trdo kodiranega naslova IP vsebnika. Navedeni gostitelji so upravičeni do `/v1/rerank`, `/v1/audio/*` in lokalnega preverjanja zdravja, ne da bi bilo treba vklopiti `RERANK_REMOTE_PROVIDER_NODES` / `AUDIO_REMOTE_PROVIDER_NODES` za vsako oddaljeno vozlišče, in so klicani neposredno — nikoli prek `HTTP(S)_PROXY` ali pripetega proxyja povezave. Še vedno pošiljajo ključ API povezave. Sprejeta so samo imena z eno oznako in imena `.internal`/`.local`; javni FQDN-ji, IP literali in imena metapodatkov oblaka so ignorirani z opozorilom. (#14635) | | `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | Ko je OIDC omogočen, onemogoči prijavo z geslom, tako da se uporabniki lahko avtenticirajo samo prek enotne prijave OIDC (Single Sign-On). Sprejet je tudi goli vzdevek `OIDC_DISABLE_PASSWORD_LOGIN`; zastavica funkcije (Feature Flag) na nadzorni plošči z istim ključem ima prednost. (#10889) | | `OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | Goli vzdevek za `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` (#10889). | ### Kontrolni seznam za utrjevanje ```bash # Minimalna varnostna raven za produkcijo: AUTH_COOKIE_SECURE=true # Zahteva HTTPS REQUIRE_API_KEY=true # Avtenticiraj vse klice proxyja ALLOW_API_KEY_REVEAL=false # Nikoli ne razkrivaj ključev v uporabniškem vmesniku CORS_ALLOWED_ORIGINS=https://your.domain.com MAX_BODY_SIZE_BYTES=5242880 # Omejitev 5 MB ``` --- ## 5. Čiščenje vhodnih podatkov in zaščita osebno določljivih podatkov (PII) OmniRoute zagotavlja dvoplastno zaščito: preverjanje vbrizgavanja na strani zahteve in odstranjevanje osebno določljivih podatkov na strani odziva. > **⚠️ Omejitve:** Ti zaščitni mehanizmi so _hevristični pristopi po najboljših močeh_, ne pa celovit požarni zid proti vbrizgavanju pozivov ali sistem DLP za osebno določljive podatke. Povzročijo lahko lažno pozitivne rezultate (označeni nenevarni pozivi z osebami/igranjem vlog) in lažno negativne rezultate (leet govor, presledki, neangleški vzorci). Sami po sebi ne zadostujejo za zagotavljanje skladnosti. Preden se zanesete nanje, prilagodite načine delovanja in jih preizkusite s svojim prometom. ### Na strani zahteve: zaščita pred vbrizgavanjem pozivov | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | --------------------------------- | ------------------ | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `INPUT_SANITIZER_ENABLED` | `true` | `src/middleware/promptInjectionGuard.ts` | Omogoči preverjanje dohodnih sporočil glede vzorcev vbrizgavanja pozivov. | | `INPUT_SANITIZER_MODE` | `warn` | `src/middleware/promptInjectionGuard.ts` | Pravilnik za vbrizgavanje: `warn` = samo beleženje, `block` = zavrnitev zahteve s kodo 400. Zastareli način `redact` **ne** odstrani besedila vbrizganega poziva; za preoblikovanje osebno določljivih podatkov v zahtevi uporabite `PII_REDACTION_ENABLED`. | | `INJECTION_GUARD_MODE` | _(ni nastavljeno)_ | `src/middleware/promptInjectionGuard.ts` | Zastareli vzdevek za `INPUT_SANITIZER_MODE` — enako vedenje. | | `INPUT_SANITIZER_BLOCK_THRESHOLD` | `high` | `src/shared/utils/injectionSeverity.ts` | Najnižja stopnja resnosti, ki jo `MODE=block` zavrne: `high` (privzeto), `medium` ali `low`. Vzorci srednje resnosti se privzeto samo opazujejo, razen če prag znižate. | | `INJECTION_GUARD_BLOCK_THRESHOLD` | _(ni nastavljeno)_ | `src/shared/utils/injectionSeverity.ts` | Zastareli vzdevek za `INPUT_SANITIZER_BLOCK_THRESHOLD` — enako vedenje. | | `PII_REDACTION_ENABLED` | `false` | `src/lib/guardrails/piiMasker.ts` | Ko je nastavljeno na `true`, prikrije osebno določljive podatke v dohodnih zahtevah (neodvisno od načina za vbrizgavanje). | | `CREDENTIAL_REDACTION_ENABLED` | `false` | `src/lib/guardrails/credentialMasker.ts` | Prikrije znane vzorce ključev API/skrivnih žetonov v vsebinah zahtev in odzivov. Izbirna možnost; deluje podobno kot `PII_REDACTION_ENABLED`. | ### Na strani odziva: čistilnik osebno določljivih podatkov | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | -------------------------------- | -------- | ------------------------- | ------------------------------------------------------------------------------------------------------- | | `PII_RESPONSE_SANITIZATION` | `false` | `src/lib/piiSanitizer.ts` | Pred vrnitvijo odjemalcu preveri odzive modela LLM glede razkritih osebno določljivih podatkov. | | `PII_RESPONSE_SANITIZATION_MODE` | `redact` | `src/lib/piiSanitizer.ts` | `redact` = prikrije osebno določljive podatke, `warn` = samo beleženje, `block` = zavrže celoten odziv. | ### Čistilnik konteksta za tokenizirane poti VS Code | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ----------------------------------- | -------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `OMNIROUTE_VSCODE_SANITIZE_CONTEXT` | `1` | `src/app/api/v1/vscode/contextSanitizer.ts` | Iz zahtev `/v1/vscode/[token]/*` odstrani implicitni kontekst aktivnega urejevalnika (`editorContext`, `activeEditor`, `currentFile`, `selection`, `openTabs` …) in prikrije vsebino izrecno priloženih občutljivih datotek. Privzeto varno; nastavite na `0`, da onemogočite. | ### Scenariji | Scenarij | Konfiguracija | | ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Skladnost v podjetjih** | `INPUT_SANITIZER_ENABLED=true`, `INPUT_SANITIZER_MODE=block`, `PII_REDACTION_ENABLED=true`, `PII_RESPONSE_SANITIZATION=true` (blokiranje vbrizgavanja in prikrivanje osebno določljivih podatkov v zahtevah/odzivih; načini so neodvisni) | | **Samo spremljanje** | `INPUT_SANITIZER_ENABLED=true`, `INPUT_SANITIZER_MODE=warn` — beleži, vendar nikoli ne blokira | | **Osebna uporaba** | Vse pustite onemogočeno — brez dodatne obremenitve | --- ## 6. Pravilniki orodij in usmerjanja | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ----------------------------------------------------------- | ---------------------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `TOOL_POLICY_MODE` | `disabled` | `src/lib/toolPolicy.ts` | Nadzoruje dostop LLM do orodij/klicanja funkcij. `allowlist` = samo navedena orodja, `denylist` = vsa razen navedenih, `disabled` = brez omejitev. | | `OMNIROUTE_PAYLOAD_RULES_PATH` | `./config/payloadRules.json` | `open-sse/services/payloadRules.ts` | Pot do datoteke JSON s pravili za manipulacijo vsebine (prilagoditve za nadrejene strežnike glede na model/protokol). | | `OMNIROUTE_PAYLOAD_RULES_RELOAD_MS` | `5000` | `open-sse/services/payloadRules.ts` | Interval ponovnega nalaganja (ms) za vroče ponovno nalaganje datoteke s pravili za vsebino. Najmanjša vrednost je `1000`. | | `OMNIROUTE_PREFER_CLAUDE_CODE_FOR_UNPREFIXED_CLAUDE_MODELS` | `false` | `open-sse/services/model.ts` | Omogoči usmerjanje modelov `claude-*` brez predpone iz odjemalcev Claude Code prek računa OAuth Claude Code, namesto zahtevane predpone ponudnika. Izrecne predpone ponudnikov imajo še vedno prednost. To je mogoče nastaviti tudi s preklopnim gumbom na nadzorni plošči na strani ponudnika Claude. | | `OMNIROUTE_REDACT_THINKING` | `true` | `open-sse/executors/base/redactThinkingBeta.ts` | Nastavite na `false`, da OmniRoute sam neha dodajati Anthropic beta `redact-thinking-2026-02-12` (prazni bloki razmišljanja, ki vsebujejo samo podpis). Zahteve z `thinking.display: "summarized"` ga ne uporabijo ne glede na to; beta za redigiranje, dogovorjena z odjemalcem, ali združljiv z CC `requestDefaults.redactThinking` opt-in ga ohrani. Zahteve Claude OAuth ohranijo beto (je del prstnega odtisa Claude Code OAuth), razen če je vklopljena zastavica funkcije `CLAUDE_OAUTH_SUMMARIZED_THINKING_UNREDACTED`, ki je privzeto izklopljena. | | `BARE_MODEL_DEFAULT_OVERRIDE_LEGACY` | `false` | `open-sse/services/model.ts` | Zapuščeno vedenje `resolveBareModelToConnectionDefault` (#4825): vsako ime modela brez predpone nadomesti z `defaultModel` izbrane povezave. Privzeto je izklopljeno; nadomestita se samo `auto` ali prazen model, ob vklopu pa se za vsak par zabeleži eno opozorilo. | | `COMBO_CONCURRENCY_PER_MODEL` | `3` | `open-sse/services/comboConfig.ts` | Omejitev sočasnosti za posamezen model pri kombinacijah round-robin (#9100). Semafor kombinacije round-robin je bil brez možnosti preglasitve strogo omejen na 3 sočasne zahteve na model, zato se je promet z večjo sočasnostjo serializiral za to omejitvijo. Preverjeno na `>= 1`, omejeno na `<= 32`. | | `DISABLE_CONTEXT_WINDOW_CHECKS` | `false` | `open-sse/handlers/chatCore.ts` | Nevarna izrecna možnost, ki preskoči lokalno preverjanje kontekstnega okna / največjega števila vhodnih žetonov OmniRoute za neposredne zahteve z enim modelom. Nadrejeni ponudniki še vedno uveljavljajo svoje dejanske omejitve; stiskanje poziva in lastna omejitev izhodnih žetonov modela ostajata aktivna. Učinkovita prednostna hierarhija je preglasitev v zbirki podatkov zastavic funkcij > spremenljivka okolja > privzeta vrednost; ponovni zagon ni potreben. | | `OMNIROUTE_SELF_HOSTED_PROVIDERS` | _(unset)_ | `open-sse/services/selfHostedEntry.ts` | Vrstični dokument YAML `providers:` (RIC-738, D4). Ko je nastavljen (z blokom `strategy:` ali brez njega), se `/v1/chat/completions` preusmeri na enotno samostojno gostovano vstopno točko, združljivo z OpenAI, namesto v oblakovni cevovod. Ko ni nastavljen (privzeto), pot preide neposredno v obstoječi oblakovni cevovod. Glejte `docs/routing/SELF_HOSTED_OPENAI_ENTRY.md`. | | `OMNIROUTE_SELF_HOSTED_PROVIDERS_FILE` | _(unset)_ | `open-sse/services/selfHostedEntry.ts` | Pot do datoteke YAML z istim dokumentom `providers:` kot pri `OMNIROUTE_SELF_HOSTED_PROVIDERS`, za namestitve, ki imajo raje datoteko kot vrstično spremenljivko okolja. Katera koli od njiju aktivira samostojno gostovano vstopno točko. | | `OMNIROUTE_SELF_HOSTED_API_KEY` | _(unset — open route)_ | `open-sse/services/selfHostedEntry.ts` | Izbirni skupni ključ API za enotno samostojno gostovano vstopno točko (ogrodje D5, rezervirano za sistem kvot na ključ). Ko je nastavljen, morajo zahteve vključevati `Authorization: Bearer `. Ko ni nastavljen, je pot odprta, skladno z obstoječim vzorcem lokalnega ponudnika za samostojno gostovanje (namestitev v povratni zanki/zaupanja vrednem omrežju). | | `OMNIROUTE_SELF_HOSTED_STRATEGY` | _(ni nastavljeno)_ | `open-sse/services/routingStrategies.ts` | Vgrajeni YAML dokument `strategy:` za deterministični usmerjevalni pogon (M2/RIC-740, D3) — črna/bela lista, odklopnik s časom ohladitve, prioriteta po stroških, zavedanje zakasnitev, veriga nadomestnih poti. Preglasi vgrajeni blok `strategy:`, ugnezden znotraj `OMNIROUTE_SELF_HOSTED_PROVIDERS`, po ključih. Glej `docs/routing/DETERMINISTIC_ROUTING.md`. | | `OMNIROUTE_SELF_HOSTED_STRATEGY_FILE` | _(ni nastavljeno)_ | `open-sse/services/routingStrategies.ts` | Pot do YAML datoteke, ki vsebuje isti dokument `strategy:` kot `OMNIROUTE_SELF_HOSTED_STRATEGY`, za namestitve, ki raje uporabljajo datoteko namesto vgrajene okoljske spremenljivke. | | `OMNIROUTE_DISABLE_CONVERSATION_TRACKING` | _(ni nastavljeno)_ | `open-sse/services/conversationTracker.ts` | Nastavite `1`, da prenehate zbirati zgodovino pogovorov. `resolveConversationId()` vrne nespremljan rezultat, preden prebere SQLite ali razčleni zgodovino sporočil, zajeti so tudi ID-ji sej, ki jih posreduje odjemalec. Obravnava usmerjevalnih sej je nespremenjena in obstoječi zapisi se ne izbrišejo. Za namestitve, ki ne uporabljajo pogleda pogovorov na nadzorni plošči in želijo, da tabela obratov neha rasti. | | `OMNIROUTE_NADIR_API_KEY` | _(ni nastavljeno)_ | `open-sse/services/autoCombo/nadirStrategy.ts` | API ključ za opcijsko strategijo usmerjevalnika samodejnih kombinacij `nadir`, ki se uporabi, kadar lastni `config.nadir.apiKey` kombinacije ni nastavljen. Izbirno: klici brez ključa pristanejo na Nadirjevem anonimnem nivoju, ki je omejen s številom zahtev na IP in zato ni uporaben za skupnim prehodom. Občutljivo; raje uporabite polje na ravni kombinacije, kadar kombinacije uporabljajo različne račune. | | `OMNIROUTE_NADIR_BASE_URL` | `https://api.getnadir.com` | `open-sse/services/autoCombo/nadirStrategy.ts` | Osnovni izvor Nadirjevega API-ja za odločanje, ki se uporabi, kadar lastni `config.nadir.baseUrl` kombinacije ni nastavljen. Potreben le za samogostujoč Nadir, ki ohranja glave pozivov znotraj vašega lastnega omrežja. Končni `/v1` je dopuščen in se odstrani. | | `OMNIROUTE_API_KEY_WEEKLY_WINDOW` | `provider` | `src/lib/usage/apiKeyUsageLimits.ts` | Tedensko okno za omejitve porabe v USD na API ključ (izvajanje omejitev zahtev, `GET /api/keys/{id}/usage-limits`, `@@om-usage`). `provider`: teden se konča ob najzgodnejši tedenski ponastavitvi med nadrejenimi povezavami, do katerih ključ lahko doseže, ali pa je drsečih 7 dni, kadar nobena ni znana. `calendar`: lokalni teden od ponedeljka 00:00 do naslednjega ponedeljka 00:00, enak za vsak ključ. `calendar` je priporočljiv, kadar en bazen nadrejenih računov deli veliko ključev z individualnimi proračuni. Neveljavne vrednosti se vrnejo na `provider`. | | `OMNIROUTE_API_KEY_WEEKLY_WINDOW_TIMEZONE` | _(časovni pas procesa)_ | `src/lib/usage/apiKeyUsageLimits.ts` | IANA časovni pas (na primer `Asia/Shanghai`), ki določa ponedeljek 00:00 za tedensko okno `calendar`. Nenastavljen ali neveljaven: časovni pas procesa OmniRoute (`TZ` gostitelja ali vsebnika, ki je v slikah vsebnikov pogosto nenastavljen, tj. univerzalni usklajeni čas). V načinu `provider` se prezre. | | `OMNIROUTE_MAX_TOOLS_LIMIT` | `128` | `open-sse/config/constants.ts` | Privzeto največje število orodij, dovoljenih v zahtevi (OpenAI privzeto). Samo pozitivna cela števila; nenastavljene ali neveljavne vrednosti obdržijo `128`. Ponudnik z znano/proaktivno omejitvijo (`grok-cli` 200, `nvidia` 1536) še vedno uporabi svojo lastno zgornjo mejo — to premakne le privzeti strop. | | `OMNIROUTE_PROMPT_EMULATE_TOOLS` | _(vklopljeno)_ | `open-sse/executors/syntxChat.ts` | Klicanje orodij s simulacijo v pozivu pri SYNTX.ai: nenastavljeno ali `1`/`true`/`on`/`yes` vstavi lokalni katalog orodij v poziv; katera koli druga vrednost (npr. `0`) to vstavljanje preskoči. | --- ## 7. URL-ji in sinhronizacija v oblaku | Spremenljivka | Privzeta vrednost | Izvorna datoteka | Opis | | ------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `BASE_URL` | `http://localhost:20128` | `src/lib/cloudSync.ts` | URL na strani strežnika, ki ga notranja opravila sinhronizacije uporabljajo za klic `/api/sync/cloud`. Tudi ko je aplikacija javno dostopna prek posredniškega strežnika, naj to ostane URL povratne zanke oziroma vsebnika. | | `CLOUD_URL` | _(prazno)_ | `src/lib/cloudSync.ts` | URL končne točke posredovanja v oblaku (plačljiva funkcija). | | `CLOUD_SYNC_TIMEOUT_MS` | `12000` | `src/lib/cloudSync.ts` | Časovna omejitev HTTP za zahteve sinhronizacije v oblaku. | | `OMNIROUTE_BUILD_PROFILE` | `full` | Konfiguracija gradnje Webpack | Profil ob času gradnje (nastavite na `minimal`, da privilegirane module fizično izključite iz paketa). | | `OMNIROUTE_STANDALONE_DIR` | _samostojni izhod .build/_ | `scripts/build/colocate-standalone.mjs` | Preglasitev imenika samostojnega izhoda ob času gradnje, ki ga uporablja korak kolokacije po gradnji. To ni nastavitev izvajalnega okolja. | | `OMNIROUTE_CLOUD_SYNC_SECRET` | _(prazno)_ | `src/lib/cloudSync.ts` | Skrivnost v skupni rabi, ki se uporablja za preverjanje podpisa HMAC-SHA256 v odzivih sinhronizacije v oblaku. | | `OMNIROUTE_CLOUD_SYNC_SECRETS` | `false` | `src/lib/cloudSync.ts` | Nastavite na `true`, da končni točki sinhronizacije v oblaku omogočite prepis lokalnih poverilnic. Privzeta vrednost je `false`. | | `OMNIROUTE_CLOUD_SYNC_ENFORCE_SIGNATURE` | `false` | `src/lib/cloudSync.ts` | Nastavite na `true`, da zavrnete nepodpisan odziv sinhronizacije v oblaku, kadar ni konfigurirana nobena lokalna skrivnost (#13679). Prisoten podpis se vedno preveri — in vedno zavrne, kadar spremenljivka `OMNIROUTE_CLOUD_SYNC_SECRET` ni nastavljena — ne glede na to zastavico. Od v3.9 bo preverjanje privzeto obvezno. | | `OMNIROUTE_ZED_IMPORT_LEGACY_ONE_STEP` | `false` | `src/app/api/providers/zed/import/route.ts` | Nastavite na `true`, da se brez potrditve uporabnika povrne enostopenjsko vedenje »uvozi vse« iz v3.8.5. | | `NEXT_PUBLIC_BASE_URL` | `http://localhost:20128` | OAuth, nadzorna plošča, sinhronizacija | Javno dostopen URL za OAuth redirect_uri, povezave nadzorne plošče in ustvarjene javne URL-je. Nastavite ga na stabilni javni URL, kadar morajo povratni klici OAuth ali ustvarjene povezave brskalnika uporabljati kanoničnega gostitelja povratnega posredniškega strežnika. | | `NEXT_PUBLIC_CLOUD_URL` | _(prazno)_ | Na strani odjemalca | Zrcalna vrednost spremenljivke `CLOUD_URL` na strani odjemalca. | | `NEXT_PUBLIC_APP_URL` | _(nenastavljeno)_ | `src/shared/services/cloudSyncScheduler.ts` | Podedovana nadomestna možnost za `NEXT_PUBLIC_BASE_URL`. | | `NEXT_PUBLIC_PORT` | _(nenastavljeno — uporabi se `PORT`)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | Nadomestna vrata na strani odjemalca za prikazne URL-je, kadar izvor ni znan (SSR/testi); preberejo se pred `PORT`. | | `OMNIROUTE_PUBLIC_BASE_URL` | _(nenastavljeno)_ | Razreševalnik javnega izvora, URL-ji slik | Izvor OmniRoute, namenjen brskalniku, z najvišjo prednostjo, ki se uporablja za ustvarjanje javnih URL-jev in preverjanje izvora brskalnika zunaj nadzorne plošče. To nastavite, kadar OpenWebUI ali drug posrednik dostopa do OmniRoute prek notranjega URL-ja, uporabnikov brskalnik pa mora ustvarjeno predstavnostno vsebino pridobiti iz omrežja LAN, tunela ali javnega izvora. Ne vključite `/v1`. | | `OMNIROUTE_PROVIDER_MANIFEST_URL` | _(nenastavljeno)_ | `open-sse/config/providerPluginManifestUrl.ts` | Absolutni URL manifesta vtičnika ponudnika, objavljen odjemalcem stranske storitve. Če ni nastavljen, OmniRoute izpelje `/api/v1/provider-plugin-manifest` iz izvora zahteve ali HOST/PORT. | | `OMNIROUTE_PUBLIC_PROTOCOL` | `http` | `open-sse/config/providerPluginManifestUrl.ts` | Protokol, ki se uporablja pri izpeljavi URL-ja manifesta vtičnika ponudnika iz HOST/PORT brez izvora zahteve. Nastavite ga na `https` za javnim posredniškim strežnikom, ki zaključuje TLS, kadar ni nastavljen izrecni `OMNIROUTE_PROVIDER_MANIFEST_URL`. | | `OMNIROUTE_TRUST_PROXY` | _(nenastavljeno)_ | `src/server/origin/publicOrigin.ts` | Izbirni način zaupanja za posredovane glave javnega izvora. Nenastavljeno = ne zaupaj `Forwarded` / `X-Forwarded-*` pri varnostnih odločitvah. `true` / `loopback` zaupa posredovanemu gostitelju/protokolu samo iz povratnozančnega posredniškega strežnika, označenega z žetonom. `private` / `lan` zaupa tudi posredniškim vrstnikom v zasebnem omrežju LAN in omogoča, da most `API_PORT` ohrani glavo `X-Forwarded-For` takega vrstnika. V produkciji dajte prednost izrecni nastavitvi `NEXT_PUBLIC_BASE_URL`. | | `KIE_CALLBACK_URL` | _(nenastavljeno)_ | `open-sse/utils/kieTask.ts` | Javni URL za povratne klice asinhronih opravil kie.ai. Preglasitev z najvišjo prednostjo pred `OMNIROUTE_KIE_CALLBACK_URL` in `OMNIROUTE_PUBLIC_URL`. | | `OMNIROUTE_KIE_CALLBACK_URL` | _(nenastavljeno)_ | `open-sse/utils/kieTask.ts` | Alternativni zapis za `KIE_CALLBACK_URL`. Uporabi se kot nadomestna možnost, kadar primarna spremenljivka ni nastavljena. | | `OMNIROUTE_PUBLIC_URL` | _(nenastavljeno)_ | `open-sse/utils/kieTask.ts` | Javni izvor, ki se uporablja za sestavljanje URL-jev asinhronih povratnih klicev. Nadomestna možnost z najnižjo prednostjo za povratne klice kie.ai; uporablja se tudi kot splošni javni URL za druge posrednike. | | `OMNIROUTE_CROF_USAGE_URL` | `https://crof.ai/usage_api/` | `open-sse/services/usage.ts` | Končna točka za preverjanje kvote CrofAI, ki jo uporablja stran Poraba. Preglasite jo za posrednike/testne priprave. | | `OMNIROUTE_CLINEPASS_USAGE_URL` | `https://api.cline.bot/api/v1/users/me/plan/usage-limits` | `open-sse/services/usage/clinepass.ts` | Končna točka za 5-urne/tedenske/mesečne kvote ClinePass, ki jo uporablja stran Poraba. Preglasite jo za posrednike/testne priprave. | | `OMNIROUTE_OPENCODE_QUOTA_URL` | `https://opencode.ai/zen/go/v1/usage` | `open-sse/services/opencodeQuotaFetcher.ts` | Uradna končna točka za porabo OpenCode Go s preverjanjem pristnosti s ključem API, ki jo uporablja stran Poraba. Preglasite jo za posrednike/testne priprave. | | `OPENCODE_SYNTHESIZE_CLI_HEADERS` | `true` | `open-sse/executors/opencode.ts` | Sintetizira identitetne glave OpenCode CLI (User-Agent, x-opencode-client/project, UUID-je zahtev/sej) pri zahtevah opencode-go/zen navzgor, ki jih odjemalec ni poslal, tako da jih Cloudflare pri izhodnem prometu iz VPS-ja sprejme (#6210/#5997). Privzeto omogočeno od #10571; onemogočite z `false`/`0`/`no`/`off`. | | `OPENCODE_USER_AGENT` | `opencode/1.18.31` | `open-sse/utils/opencodeHeaders.ts` | Privzeti User-Agent, uporabljen, ko je `OPENCODE_SYNTHESIZE_CLI_HEADERS` vklopljen in ni nastavljena preglasitev `_USER_AGENT` za posameznega ponudnika. Uporabi se samo za izvajalnike opencode. Pri zahtevi brez ključa, ki jo nadrejeni ponudnik omejuje, se nastavljena vrednost, ki ne vsebuje `opencode/= 1.17>`, nadomesti s to privzeto vrednostjo, namesto da bi bila zahteva zavrnjena. | | `OMNIROUTE_FORWARD_ATTRIBUTION` | `1` (vklopljeno) | `open-sse/utils/opencodeHeaders.ts` | Posreduje glave za pripis odjemalski aplikaciji (`x-session-id`, `x-title`, `http-referer`) nadrejenim ponudnikom, tako da zahteva, ki izvira iz navedenega izvajalnega ogrodja, ohrani svojo identiteto skozi usmerjevalnik (kontrole dostopa založnikov OpenRouter temeljijo na teh glavah). `0`/`false`/`no`/`off` ohrani identiteto registra/upravljavca in opusti vrednosti, ki jih posreduje odjemalec. Glave po meri, ki jih nastavi upravljavec, imajo vedno prednost pred vrednostmi odjemalca. | | `OPENCODE_CLIENT` | `desktop` | `open-sse/executors/opencode.ts` | Vrednost za sintetizirano glavo `x-opencode-client`, ko je `OPENCODE_SYNTHESIZE_CLI_HEADERS` vklopljen. | | `OPENCODE_PROJECT` | `global` | `open-sse/executors/opencode.ts` | Vrednost za sintetizirano glavo `x-opencode-project`, ko je `OPENCODE_SYNTHESIZE_CLI_HEADERS` vklopljen. | | `OMNIROUTE_EGRESS_IP_LOCK_PROVIDERS` | _(ni nastavljeno)_ | `open-sse/config/providerErrorRules.ts` | Dejanski nabor ponudnikov, katerih napake v nadrejenih sistemih so razvrščene po izhodnem naslovu IP (ena napaka 429 začasno izloči vse sorodne povezave, ki si delijo ta naslov IP). Če vrednost ni nastavljena, se uporabi privzeta nastavitev brezplačne ravni `opencode,opencode-go,opencode-cli`; `none`/`off`/`false`/`0` v celoti onemogoči verižno izločanje; seznam, ločen z vejicami, nadomesti nabor. Plačljivi paketi so v nadrejenem sistemu razvrščeni po računih in lahko to možnost varno onemogočijo (#9611). | | `OMNIROUTE_EGRESS_QUOTA_ROTATION_PROVIDERS` | _(ni nastavljeno)_ | `open-sse/config/providerErrorRules.ts` | Obseg preklapljanja izhodnih povezav ob zavrnitvi zaradi kvote. Če vrednost ni nastavljena, se član zaloge ob napaki 429 začasno izloči samo za zgoraj navedeno družino, razvrščeno po naslovih IP; `all` razširi ta zapis na vse ponudnike, zato bo ob omejitvi hitrosti, prejeti prek določenega člana, naslednja izbira uporabila drug izhod. Vse vrednosti razen `all` se prezrejo. Zahteva `PROXY_SKIP_RECENTLY_FAILED` (privzeto vklopljeno). Shramba uporablja izhodni naslov kot ključ, ne para (ponudnik, naslov), zato razširjena obravnava napake 429 tega člana začasno izloči za vse ponudnike, dokler obdobje ne poteče (5 min, s podvojitvijo na 15). Vrednost se prebere ob vsakem izidu odziva, zato se sprememba uporabi brez ponovnega zagona. | | `OPENCODE_FREE_TIER_REQUEST_CONTRACT` | _(ni nastavljeno)_ | `open-sse/executors/opencodeFreeTierContract.ts` | Nastavite na `off`, da se telo zahtev OpenCode brez ključa preneha prilagajati (zastavica pretočnega prenosa in seznam orodij). Glave se še vedno uporabijo. Vrednost se prebere ob vsaki zahtevi, zato sprememba začne veljati takoj. | | `OPENCODE_FREE_TIER_PLACEHOLDER_TOOLS` | _(ni nastavljeno)_ | `open-sse/executors/opencodeFreeTierContract.ts` | Z vejicami ločena imena orodij, ki se navedejo v zahtevi OpenCode brez ključa, kadar ta ne vsebuje nobenega orodja in za ta model ni bilo še nič zaznano. Pri prazni vrednosti se uporabi eno nadomestno orodje, za katero je modelu naročeno, naj ga ne kliče. Največ 32 vnosov, `[A-Za-z_][A-Za-z0-9_-]{0,63}`; neveljavni vnosi se prezrejo. | | `OMNIROUTE_OLLAMA_CLOUD_USAGE_URL` | `https://ollama.com/settings` | `open-sse/services/usage.ts` | URL nastavitev Ollama Cloud, ki se uporablja za zajem podatkov o kvoti. Preglasite ga za posredniške strežnike/preizkusne podatke. | | `OMNIROUTE_OLLAMA_CLOUD_BALANCE_URL` | `https://ollama.com/api/balance` | `open-sse/services/ollamaCloudBalance.ts` | Dokumentirana nadrejena končna točka Ollama Cloud za stanje (`GET https://ollama.com/api/balance`, `Authorization: Bearer `). Prebere se enkrat ob nalaganju modula. Najprej se uporabi za kvoto Ollama Cloud, kadar ima povezava ključ API; zajem s piškotkom strani z nastavitvami ostane nadomestna možnost. Preglasite jo za posredniške strežnike/preizkusne podatke. | | `OLLAMA_USAGE_COOKIE` | _(ni nastavljeno)_ | `open-sse/services/usage.ts` | Piškotek Ollama Cloud `__Secure-session`, ki se uporablja za zajem podatkov o kvoti s strani z nastavitvami. Občutljiv podatek; kadar je nastavljenih več računov, raje uporabite polje nadzorne plošče za posamezno povezavo. | | `OLLAMA_CLOUD_USAGE_COOKIE` | _(ni nastavljeno)_ | `open-sse/services/usage.ts` | Nadomestna okoljska spremenljivka za piškotek Ollama Cloud `__Secure-session`. Občutljiv podatek; kadar je nastavljenih več računov, raje uporabite polje nadzorne plošče za posamezno povezavo. | | `OMNIROUTE_OLLAMA_USAGE_COOKIE` | _(ni nastavljeno)_ | `open-sse/services/usage.ts` | Nadomestna okoljska spremenljivka za piškotek Ollama Cloud `__Secure-session`, ki se uporabi pred krajšimi vzdevki. Vsebuje občutljive podatke; ko je konfiguriranih več računov, raje uporabite polje posamezne povezave na nadzorni plošči. | | `OMNIROUTE_CODEWHISPERER_BASE_URL` | `https://codewhisperer.us-east-1.amazonaws.com` | `open-sse/services/usage.ts` | Končna točka za omejitve uporabe storitve CodeWhisperer (AWS Kiro). Preglasite jo za posredniške strežnike/preizkusne konfiguracije. | > [!IMPORTANT] > Pri uvajanju za povratnim posredniškim strežnikom (nginx, Caddy) nastavite `NEXT_PUBLIC_BASE_URL` na svoj stabilni javni URL (npr. `https://omniroute.example.com`), kadar morajo povratni klici OAuth ali ustvarjene javne povezave uporabljati to ime gostitelja. Brez tega lahko povratni klici OAuth spodletijo, ker se redirect_uri ne ujema, ustvarjene javne povezave pa lahko kažejo na izvor notranjega vsebnika. > > `BASE_URL` naj ostane notranji naslov povratne zanke oziroma URL vsebnika za opravila med strežniki. Za notranje samodejne zahteve, ki vsebujejo poverilnice, ne uporabljajte brskalnikovega `Origin` ali javnega imena gostitelja. > > Overjeni zapisi z nadzorne plošče ne zahtevajo statičnega javnega osnovnega URL-ja: nadzorna plošča pošilja nevarne zahteve istega izvora z žetonom CSRF, vezanim na sejo. OmniRoute še vedno centralizira preverjanje javnega izvora za brskalniške integracije zunaj nadzorne plošče: najprej zaupa izrecnim okoljskim spremenljivkam javnega URL-ja; neobdelane glave `Forwarded` / `X-Forwarded-*` so prezrte, razen če je omogočen `OMNIROUTE_TRUST_PROXY` in je neposredni posredniški vrstnik z žetonom označen kot zaupanja vreden. Ne uporabljajte nastavitev CORS za odpravljanje težav z zahtevami nadzorne plošče istega izvora; CORS je namenjen samo brskalniškim odjemalcem iz drugega izvora. --- ## 8. Odhodni proxy Odhodne klice k ponudnikom LLM usmerite skozi proxy HTTP ali SOCKS5 za nadzor odhodnega prometa, geografsko usmerjanje ali maskiranje IP-naslovov. `OMNIROUTE_UPSTREAM_HTTP2_ENABLED` je privzeto nastavljena na `true`. Nastavite jo na `false`, `0`, `no` ali `off`, da v dispečerjih Undici v datotekah `open-sse/utils/proxyDispatcher.ts` in `open-sse/utils/proxyFetch.ts` vsilite HTTP/1.1: neposreden odhodni promet, proxyji HTTP(S)/SOCKS, releji in njihovi ponovni poskusi z novimi vtičnicami. Tako ostanejo ohranjeni preverjanje potrdil TLS, preverjanje pristnosti proxyja, omejitve povezav in nastavitve keep-alive. Po spremembi te vrednosti znova zaženite OmniRoute, saj se dispečerji predpomnijo, relejski agenti pa se ustvarijo ob zagonu. Stikalo ne nadzoruje prstnih odtisov TLS (fingerprinting) pri wreq niti transportov, specifičnih za posamezne ponudnike. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ---------------------------------------- | ------------------ | ---------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ENABLE_SOCKS5_PROXY` | `true` | `open-sse/executors` | Omogoča agenta SOCKS5 proxy za upstream klice. Izklopite z `false`. | | `NEXT_PUBLIC_ENABLE_SOCKS5_PROXY` | `true` | Na strani odjemalca | Zavedanje na strani odjemalca o razpoložljivosti SOCKS5. | | `PROXY_SKIP_RECENTLY_FAILED` | `true` | `src/shared/utils/featureFlags.ts` | Privzeto vklopljena zastavica funkcije (glejte [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); preglasitev iz baze nadzorne plošče ima prednost). Skladi proxy in rotacija po posameznih računih prenehajo znova streči člana, ki je pravkar odpovedal (zavrnjena sonda TCP ali odgovor 429 skozi njega), za obdobje, ki se ob vsaki ponovitvi podvoji, do zgornje meje. `false` povrne običajno izbiro. | | `SELECTOR_CONTROL_ALLOWLIST` | _(ni nastavljeno)_ | `src/lib/proxySubscription/selectorGuard.ts` | Seznam dovoljenih ciljev za nadzor izbirnikov lokalnega jedra zunaj loopback (gostitelji ali naslovi IP, ločeni z vejicami/presledki; `*` odpre LAN/zasebne naslove, nikoli pa metadata/link-local). Loopback prek http/https je privzeto dovoljen. Ko je vrednost v bazi nadzorne plošče nastavljena in ni prazna, ima prednost pred to spremenljivko. | | `PROXY_QUOTA_429_BASE_MS` | `300000` | `open-sse/utils/proxyRefusalMemory.ts` | Osnovno obdobje (ms) odloga po statusu 429, ki se ob vsaki ponovitvi podvoji. Prebere se enkrat ob zagonu. Omejeno na `1000..3600000`; če je vrednost zunaj obsega ali je ni mogoče prebrati, se z opozorilom uporabi privzeta. | | `PROXY_QUOTA_429_MAX_MS` | `900000` | `open-sse/utils/proxyRefusalMemory.ts` | Zgornja meja (ms) odloga po statusu 429. Prebere se enkrat ob zagonu. Omejeno na `1000..3600000`; če je vrednost zunaj obsega ali je ni mogoče prebrati, se z opozorilom uporabi privzeta. Ko je zgornja meja pod osnovo, se uporabi privzeta. Znižanje zgornje meje skrajša tudi pozabljanje nizov odpovedi: vnosi se po izteku počistijo po `2 x max`. | | `PROXY_POOL_SHARED_EGRESS_ORDER` | `false` | `src/shared/utils/featureFlags.ts` | Izbirna (opt-in) zastavica funkcije (glejte [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); preglasitev iz baze nadzorne plošče ima prednost). Pri ponudnikih, katerih kvota je razvrščena v koše glede na izhodni (egress) naslov, uvrsti člana sklada, ki si deli opaženi izhodni naslov nedavno zavrnjenega člana, tik pod zdrave člane. Gre samo za vrstni red, član nikoli ni izključen. Potrebuje `PROXY_SKIP_RECENTLY_FAILED`, ki ustvari signal zavrnitve, ki ga ta možnost bere. | | `PROXY_WEBHOOK_REBOUND_MS` | `300000` | `src/lib/proxyEvents/proxyTransitionBridge.ts` | Odbojno okno (ms), ki omejuje ponovljena opozorila webhook `proxy.set_aside` na člana sklada, tako da sunek zavrnitev pošlje le en dogodek. Prebere se ob vsaki oddaji. Omejeno na `1000..3600000`; če je vrednost zunaj obsega ali je ni mogoče prebrati, se brez opozorila uporabi privzeta. | | `HTTP_PROXY` | _(ni nastavljeno)_ | Standard Node.js | HTTP proxy za upstream klice. | | `HTTPS_PROXY` | _(ni nastavljeno)_ | Standard Node.js | HTTPS proxy za upstream klice. | | `ALL_PROXY` | _(ni nastavljeno)_ | Standard Node.js | Univerzalni proxy (podpira `socks5://`). | | `OMNIROUTE_PROXY_ECHO_URL` | _(ni nastavljeno)_ | `src/lib/proxyEchoTarget.ts` | Pripne cilj echo-IP, ki ga uporabljajo sonde izhodnega prometa proxyja, na en sam URL. Če ni nastavljeno, sonda poskusi `api64.ipify.org`, nato `api4.ipify.org`, da tuneli samo z IPv4 niso napačno prijavljeni kot nedelujoči (#9694). | | `NO_PROXY` | _(ni nastavljeno)_ | Node.js standard | Z vejico ločena imena gostiteljev/naslovi IP, ki zaobidejo proxy. | | `OMNIROUTE_PROXY_DISPATCHER_CONNECTIONS` | `32` | `open-sse/utils/proxyDispatcher.ts` | Največje število sočasnih vtičnic na predpomnjeni dispečer HTTP/SOCKS proxyja. Dolgo živeči SSE tokovi, kot je Codex `/v1/responses`, potrebujejo več kot eno povezavo, ko več zahtevkov deli isti proxy na ravni računa. Vrednosti nad `256` so omejene. | | `SOCKS_HANDSHAKE_TIMEOUT_MS` | `10000` | `open-sse/utils/socksConnectorWithFamily.ts` | Časovna omejitev rokovanja (vzpostavitve povezave) SOCKS5 v ms. Povečajte jo, ko je en sam gostitelj stanovanjskega prehoda izpostavljen visoki sočasnosti (npr. 100 sočasnih zahtevkov) — dejansko rokovanje lahko pri nasičenem bazenu preseže 10 s, čeprav je proxy dosegljiv, kar bi se sicer pokazalo kot lažno `[Proxy Fast-Fail] Proxy unreachable`. Omejeno na `120000`. | | `PROXY_FAIL_OPEN` | `false` | `src/sse/handlers/chatHelpers.ts` | Ko je `false` (privzeto), je zahtevek, katerega dodeljenega proxyja ni mogoče razrešiti, **zavrnjen (fail-closed)**, namesto da bi se vrnil na neposredno povezavo — preprečuje uhajanje dejanskega IP-ja. Nastavite `true`, da obnovite stari (legacy) DIRECT fallback. | | `ENABLE_TLS_FINGERPRINT` | `false` | `open-sse/executors` | Ponaredi TLS prstni odtis z uporabo wreq-js (posnema Chrome 124). Deluje proti blokiranju JA3/JA4. | | `TLS_FINGERPRINT_PROVIDERS` | _(ni nastavljeno)_ | `open-sse/utils/proxyFetch.ts` | Z vejico ločen seznam dovoljenih ponudnikov za novo usmerjanje TLS prek proxyja (`open-sse/utils/proxyFetch.ts`). Neposredni TLS ob nenastavljenem ohranja staro vedenje; samo ti ponudniki se usmerjajo skozi most prstnega odtisa Chrome-124. Groq (`api.groq.com`) je izključen tudi, ko seznam ni nastavljen, ker Chrome JA3 sproži Cloudflare 1010, medtem ko izvorni undici API doseže. | | `OMNIROUTE_TURNSTILE_IGNORE_TLS_ERRORS` | `false` | `open-sse/services/claudeTurnstileSolver.ts` | Dovoli brskalniškemu kontekstu Claude Turnstile Playwright, da prezre napake certifikatov HTTPS. | ### Scenariji | Scenarij | Konfiguracija | | --------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | **SOCKS5 skozi SSH tunel** | `ALL_PROXY=socks5://127.0.0.1:7890`, `ENABLE_SOCKS5_PROXY=true` | | **Poslovni HTTP proxy** | `HTTP_PROXY=http://proxy.corp.com:3128`, `HTTPS_PROXY=http://proxy.corp.com:3128`, `NO_PROXY=localhost,internal.corp.com` | | **Zaščita pred prstnimi odtisi** | `ENABLE_TLS_FINGERPRINT=true` — zahteva `wreq-js` (priložen) | | **Nadzorovan izhodni promet / brez neposrednega dostopa** | Pustite `PROXY_FAIL_OPEN=false` (privzeto). Zahtevki strogo spodletijo, ko proxy ni na voljo, namesto da bi uhajali prek neposredne povezave. | | **Staro / razvojno — dovoli neposredni fallback** | `PROXY_FAIL_OPEN=true`. Obnovi vedenje pred utrditvijo: neposredna povezava se uporabi, ko razrešitev proxyja spodleti. | > **Opomba (obhod validacije NVIDIA — #3226):** Končna točka za validacijo API ključa NVIDIA > se zatika, ko je usmerjena skozi globalni fetch s popravkom proxyja/TLS (undici dispečer → 504). > `src/lib/providers/validation.ts::directHttpsRequest()` namerno zaobide > popravek proxyja za tisti en validacijski klic z uporabo `safeOutboundFetch({ bypassProxyPatch: true })`. > To je dokumentirana, obsegovno omejena izjema — **ne** vpliva na izhodni promet klepeta/uporabe. > Obseg obhoda je pritrjen s `tests/unit/proxy-bypass-scope-guard-3226.test.ts`. --- ## 9. Integracija orodij CLI Nadzira, kako OmniRoute odkriva in zaganja stranske procese CLI (Claude Code, Codex itd.). | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | --------------------------------- | -------------------------------- | --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CLI_MODE` | `auto` | `src/shared/services/cliRuntime.ts` | `auto` = išči v sistemskem PATH; `manual` = uporabi samo izrecno podane poti. | | `CLI_EXTRA_PATHS` | _(ni nastavljeno)_ | `src/shared/services/cliRuntime.ts` | Dodatni vnosi PATH za odkrivanje izvedljivih datotek CLI (ločeni z dvopičjem). | | `CLI_CONFIG_HOME` | _(ni nastavljeno)_ | `src/shared/services/cliRuntime.ts` | Preglasi domači imenik za branje konfiguracij CLI (`~/.claude`, `~/.codex`). Mora biti absolutna pot znotraj domačega imenika procesa — **ali**, v vsebniku, pot, vezana z bind mount (tako deluje `/host-home`). Vse drugo se vrne na domači imenik. | | `CLI_ALLOW_CONFIG_WRITES` | `true` | `src/shared/services/cliRuntime.ts` | Dovoli OmniRoute zapisovanje konfiguracijskih datotek CLI (osveževanje žetonov, podatki seje). Nastavite na `false`, da vsak zapis konfiguracije CLI spodleti z izrecno napako »writes disabled«. | | `CLI_CLAUDE_BIN` | `claude` | `src/shared/services/cliRuntime.ts` | Pot po meri do izvedljive datoteke Claude CLI. | | `CLI_CODEX_BIN` | `codex` | `src/shared/services/cliRuntime.ts` | Pot po meri do izvedljive datoteke Codex CLI. | | `CLI_DROID_BIN` | `droid` | `src/shared/services/cliRuntime.ts` | Pot po meri do izvedljive datoteke Droid CLI. | | `CLI_OPENCLAW_BIN` | `openclaw` | `src/shared/services/cliRuntime.ts` | Pot po meri do izvedljive datoteke OpenClaw CLI. | | `CLI_CURSOR_BIN` | `agent`, nato `cursor` | `src/shared/services/cliRuntime.ts` | Pot po meri do izvedljive datoteke agenta Cursor. Brez nje zaznavanje najprej poskusi `agent`, nato pa preide na `cursor`. | | `CLI_CLINE_BIN` | `cline` | `src/shared/services/cliRuntime.ts` | Pot po meri do izvedljive datoteke Cline CLI. | | `CLI_5DIVE_BIN` | `5dive` | `src/shared/services/cliRuntime.ts` | Pot po meri do izvedljive datoteke 5dive CLI. | | `CLI_5DIVE_STATE_DIR` | `/var/lib/5dive` | `src/shared/services/cliRuntime.ts` | Sistemski imenik stanja 5dive (avtentikacijski profili v lasti uporabnika root); odraža privzeto vrednost STATE_DIR samega 5dive. | | `CLI_CONTINUE_BIN` | `cn` | `src/shared/services/cliRuntime.ts` | Pot po meri do izvedljive datoteke Continue CLI. | | `CLI_QODER_BIN` | `qodercli` | `src/shared/services/cliRuntime.ts` | Pot po meri do izvedljive datoteke Qoder CLI. | | `CLI_QWEN_BIN` | `qwen` | `src/shared/services/cliRuntime.ts` | Pot po meri do izvedljive datoteke Qwen Code CLI. | | `CLI_AIDER_BIN` | `aider` | `src/shared/services/cliRuntime.ts` | Pot po meri do izvedljive datoteke Aider CLI. | | `CLI_GOOSE_BIN` | `goose` | `src/shared/services/cliRuntime.ts` | Pot po meri do izvedljive datoteke Goose CLI. | | `CLI_GEMINI_BIN` | `gemini` | `src/shared/services/cliRuntime.ts` | Pot po meri do izvedljive datoteke Google Gemini CLI — samo za zaznavanje in preverjanja delovanja na strani strežnika; `omniroute run gemini` razreši izvedljivo datoteko `gemini` iz sistemske poti PATH. | | `CLI_KILO_BIN` | `kilocode` | `src/shared/services/cliRuntime.ts` | Pot po meri do izvedljive datoteke Kilo Code CLI. | | `CLI_OPENCODE_BIN` | `opencode` | `src/shared/services/cliRuntime.ts` | Pot po meri do izvedljive datoteke OpenCode CLI. | | `CLI_HERMES_BIN` | `hermes` | `src/shared/services/cliRuntime.ts` | Pot po meri do binarne datoteke Hermes. V skupni rabi obeh vnosov kataloga (`hermes` in `hermes-agent`). | | `CLI_FORGE_BIN` | `forge` | `src/shared/services/cliRuntime.ts` | Pot po meri do binarne datoteke ForgeCode CLI. | | `CLI_JCODE_BIN` | `jcode` | `src/shared/services/cliRuntime.ts` | Pot po meri do binarne datoteke jcode CLI. | | `CLI_DEEPSEEK_TUI_BIN` | `deepseek-tui` | `src/shared/services/cliRuntime.ts` | Pot po meri do binarne datoteke DeepSeek TUI. | | `CLI_CODEWHALE_BIN` | `codewhale` | `src/shared/services/cliRuntime.ts` | Pot po meri do binarne datoteke CodeWhale CLI. | | `CLI_SMELT_BIN` | `smelt` | `src/shared/services/cliRuntime.ts` | Pot po meri do binarne datoteke Smelt CLI. | | `CLI_PI_BIN` | `pi` | `src/shared/services/cliRuntime.ts` | Pot po meri do binarne datoteke Pi (pi-coding-agent). | | `CLI_CRUSH_BIN` | `crush` | `src/shared/services/cliRuntime.ts` | Pot po meri do binarne datoteke Crush CLI. | | `CLI_OMP_BIN` | `omp` | `src/shared/services/cliRuntime.ts` | Pot po meri do binarne datoteke agenta Oh My Pi (`omp`). | | `CLI_LETTA_BIN` | `letta` | `src/shared/services/cliRuntime.ts` | Pot po meri do binarne datoteke Letta CLI. | | `CLI_PRIME_AGENT_BIN` | `prime-agent` | `src/shared/services/cliRuntime.ts` | Pot po meri do binarne datoteke Prime Agent (Prime Intellect). | | `CLI_WINDSURF_BIN` | _(ni)_ | `src/shared/services/cliRuntime.ts` | Pot po meri do binarne datoteke Windsurf. Windsurf **nima privzetega ukaza** — zaznavanje binarne datoteke ostane onemogočeno, dokler ta spremenljivka ni nastavljena. | | `CLI_DEVIN_BIN` | `devin` | `open-sse/executors/devin-cli.ts` | Pot po meri do binarne datoteke Devin CLI (v3.8.0). Uporablja jo izvajalnik Windsurf/Devin. | | `DEVIN_DESKTOP_VERSION` | `3.6.27` | `open-sse/executors/devin-desktop.ts` | `ide_version` za Devin Desktop. Preglasitve morajo uporabljati obliko `x.y.z`; neveljavne vrednosti se vrnejo na preverjeno privzeto vrednost. | | `DEVIN_DESKTOP_EXTENSION_VERSION` | `1.48.2` | `open-sse/executors/devin-desktop.ts` | Priložen `extension_version` za Codeium/language-server, ločen od namiznega `ide_version`. Preglasitve morajo uporabljati obliko `x.y.z`; neveljavne vrednosti uporabijo priloženo privzeto vrednost. | | `CLI_DEVIN_AGENTIC_BIN` | `devin` | `open-sse/executors/devin-cli-agentic.ts` | Preglasitev Devin CLI samo za agentski most. Izvajalnik sprejme le lokalni ACP stdio upstream. | | `DEVIN_AGENTIC_HOME` | _(obvezno)_ | `open-sse/executors/devin-cli-agentic.ts` | Absolutni izolirani domači imenik za agentski podproces Devin; sprejete poti mostu so `/home/bridge` in poti `.sandbox`, lokalne za nalogo (v sistemu Windows, `C:\...\.sandbox\...`). | | `DEVIN_AGENTIC_ACP_TIMEOUT_MS` | `120000` | `open-sse/executors/devin-cli-agentic.ts` | Največje trajanje enega obrata Devin ACP, preden most prekine podrejeni proces in vrne izrecno časovno omejitev. | | `DEVIN_BRIDGE_MODEL` | `devin-cli-agentic/swe-1-7` | `docker/devin-bridge/compose.yml` | Glavni vzdevek modela Claude Code za izolirani most. Preizkusno ogrodje v živo nadomesti primer z modelom, ki ga vrne trenutni račun Devin. | | `DEVIN_BRIDGE_SONNET_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Vzdevek izoliranega mostu, uporabljen, ko Claude Code zahteva svojo privzeto vrednost Sonnet. | | `DEVIN_BRIDGE_OPUS_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Vzdevek izoliranega mostu, uporabljen, ko Claude Code zahteva svojo privzeto vrednost Opus. | | `DEVIN_BRIDGE_HAIKU_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Vzdevek izoliranega mostu, uporabljen, ko Claude Code zahteva svojo privzeto vrednost Haiku. | | `DEVIN_BRIDGE_SUBAGENT_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Vzdevek izoliranega mostu, uporabljen za podagente Claude Code. | | `DEVIN_SEAT_API_URL` | `https://server.codeium.com` | `open-sse/services/usage/devinCli.ts` | Izbirni preklic za Codeium API za upravljanje sedežev, ki ga uporablja kvota Devin CLI (`GetUserStatus`). | | `AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | Preklic absolutne poti do izvršljive datoteke Augment (Auggie) CLI, ki jo uporablja lokalni ponudnik `auggie`. Če ni nastavljen, se uporabi `CLI_AUGGIE_BIN`, nato pa iskanje po PATH. | | `CLI_AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | Vzdevkovni (alias) preklic za pot do izvršljive datoteke Augment (Auggie) CLI (preveri se po `AUGGIE_BIN`). | | `ZCODE_BIN` | `zcode` | `open-sse/executors/zcode.ts` | Izvršljiva datoteka, uporabljena za stdio odjemalca lokalnega ponudnika `zcode`. Če ni nastavljena, se uporabi `zcode` na PATH. | | `ZCODE_ARGS` | — | `open-sse/executors/zcode.ts` | JSON tabela (≤16 nizov) dodatnih argumentov, ki se posredujejo izvršljivi datoteki `zcode` ob zagonu prek `cliTools`. | | `ZCODE_CWD` | `process.cwd()` | `open-sse/executors/zcode.ts` | Delovni imenik za podproces ZCode app-server. | | `ZCODE_PROVIDER_ID` | `builtin:zai-coding-plan` | `open-sse/executors/zcode.ts` | Preklic ID-ja ponudnika, ki se pošlje app-serverju. | | `ZCODE_SERVER_RUNTIME_ROOT` | `~/.zcode/server` | `open-sse/executors/zcode.ts` | Koren izvajalnega okolja ZCode app-server (kjer se nahajata priložena `node` in `zcode-server.cjs`). | | `ZCODE_SERVER_NODE` | `/node` | `open-sse/executors/zcode.ts` | Izvršljiva datoteka Node, uporabljena za gostovanje ZCode app-serverja. | | `ZCODE_SERVER_ENTRY` | `/zcode-server.cjs` | `open-sse/executors/zcode.ts` | Vhodni skript app-serverja, uporabljen za gostovanje strežnika ZCode. | | `ZCODE_STARTUP_TIMEOUT_MS` | `10000` | `open-sse/executors/zcode.ts` | Časovna omejitev zagona (ms), preden se zagon ZCode app-serverja šteje za neuspelega. | | `ZCODE_RPC_TIMEOUT_MS` | `30000` | `open-sse/executors/zcode.ts` | RPC časovna omejitev (ms) na zahtevo za klic ZCode app-serverja. | | `ZCODE_TURN_TIMEOUT_MS` | `120000` | `open-sse/executors/zcode.ts` | Največje trajanje (ms) enega obrata ZCode, preden ga nadzornik časovno prekine. | | `ZCODE_POLL_INTERVAL_MS` | `250` | `open-sse/executors/zcode.ts` | Interval poizvedovanja (ms) za zaključek obrata ZCode. | | `HERMES_HOME` | `~/.hermes` | `src/lib/cli-helper/config-generator/hermesHome.ts` | Domači imenik Hermes Agent, kjer OmniRoute bere/piše konfiguracijo Hermes CLI. Ustreza okoljski spremenljivki, ki jo namestitveni program Hermes PowerShell nastavi v sistemu Windows (`%LOCALAPPDATA%\hermes`). | ### Samodejna sinhronizacija CLI profilov Te zastavice funkcij so izbirne in privzeto izklopljene. Preklopite jih lahko tudi na nadzorni plošči CLI Code. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ------------------------------------- | -------- | ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_AUTO_SYNC_CODEX_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Po sinhronizaciji modelov ponudnika samodejno prepiše profilne datoteke `~/.codex/*.config.toml` iz živega kataloga. Zahteva `CLI_ALLOW_CONFIG_WRITES`; nikoli ne spreminja aktivne/privzete konfiguracije Codex, avtentikacije, nastavitev Codex-lb ali izbire ponudnika. | | `OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Po sinhronizaciji modelov ponudnika samodejno prepiše profilne datoteke Claude Code `~/.claude/profiles//settings.json` iz živega kataloga. Zahteva `CLI_ALLOW_CONFIG_WRITES`; nikoli ne spreminja aktivne/privzete konfiguracije Claude, avtentikacije ali izbire ponudnika. | ### Primer Docker ```bash # Pripni gostiteljske izvršljive datoteke v vsebnik in povej OmniRoute, kje so: CLI_EXTRA_PATHS=/host-cli/bin CLI_CONFIG_HOME=/host-home CLI_ALLOW_CONFIG_WRITES=true CLI_CLAUDE_BIN=/host-cli/bin/claude ``` `CLI_CONFIG_HOME` ima učinek le, kadar je pot dejansko vezana (bind mount) z gostitelja — združite jo z vezavami, kot je `~/.codex:/host-home/.codex:rw` (glejte profil `host` v `docker-compose.yml`). Pot, ki ni niti znotraj domačega imenika uporabnika vsebnika niti vezava, je prezrta, ker bi se vanj zapisani podatki ob ponovni vzpostavitvi vsebnika izgubili. Slika se izvaja kot `USER node`, zato nevezani `/root` **ni** veljavna zamenjava. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ---------------------------------------- | -------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_CONTAINER` | _(samodejno)_ | `src/shared/utils/containerEnv.ts` | Vsili vklop (`1`/`true`) ali izklop (`0`/`false`) zaznavanja vsebnika. Potrebno le v izvajalnih okoljih, ki jih samodejno zaznavanje ne zajame. | | `OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE` | `false` | `src/shared/services/cliRuntime.ts` | Vseeno dovoli pisanje konfiguracije orodij CLI v nevezano pot vsebnika. Ekvivalent v CLI je `--allow-container-write`. | | `DOCKER_UPDATE_TRIGGER_FILE` | ni nastavljeno | `src/lib/system/autoUpdate.ts` | Samo za sliko Docker: nadzorna plošča **Posodobi zdaj** zapiše zahtevo JSON v to datoteko (mora biti znotraj `DATA_DIR`), da gostiteljski opazovalec potegne novo sliko in ponovno ustvari vsebnik. Glejte [Vodnik za Docker](../guides/DOCKER_GUIDE.md#dashboard-updates-in-docker). | ### Pomožne spremenljivke binarnega CLI-ja (`omniroute`) Te spremenljivke prilagajajo vedenje samega binarnega CLI-ja `omniroute` (ne zaznavanja sidecarja iz zgornjega razdelka). | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ------------------------------------- | --------------------------------- | --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_LANG` | _(sistemsko)_ | `bin/cli/i18n.mjs` | Vsili jezik izpisa CLI. Jezikovna oznaka BCP-47 (npr. `en`, `pt-BR`). Preglasi sistemske okoljske spremenljivke za jezik (LC_ALL, LC_MESSAGES). | | `OMNIROUTE_SHOW_LOG` | _(ni nastavljeno)_ | `bin/cli/runtime/processSupervisor.mjs` | Nastavite na `1`, da se stdout/stderr strežnika posreduje na terminal v nadzorovanem načinu. Ekvivalent zastavice `--log` pri `omniroute serve`. | | `OMNIROUTE_CLI_TOKEN` | _(ni nastavljeno)_ | `bin/cli/api.mjs` | Žeton za strojno preverjanje pristnosti, vstavljen kot glava `x-omniroute-cli-token`. Samodejno ustvarjen v opravilu 8.12. | | `GEMINI_CLI_HOME` | _(ni nastavljeno)_ | `bin/cli/commands/setup-gemini.mjs` | Trajni korenski domači imenik Gemini; enkratni zagon uporabi začasen izoliran domači imenik. | | `OMNIROUTE_CHILD_SIGNAL_TIMEOUT_MS` | `5000` | `bin/cli/commands/run.mjs` | Čas premora v milisekundah pred prisilno zaustavitvijo podrejenega procesa CLI, ki je prejel signal. | | `OMNIROUTE_CLI_SKIP_DEFAULT_DATA_ENV` | _(ni nastavljeno)_ | `bin/omniroute.mjs` | Nastavite na 1 skupaj z izrecno podanim DATA_DIR, da preskočite privzeto okoljsko datoteko uporabnikovega podatkovnega imenika. | | `OMNIROUTE_SYNC_TOKEN` | _(ni nastavljeno)_ | `bin/cli/commands/sync.mjs` | Žeton za sinhronizacijo za `omniroute sync bundle` (`GET /api/sync/bundle` sprejme samo žeton za sinhronizacijo, ne ključa API). Ekvivalent možnosti `--token`. | | `OMNIROUTE_HTTP_TIMEOUT_MS` | `30000` | `bin/cli/api.mjs` | Časovna omejitev HTTP na poskus (v ms) za zahteve CLI → strežnik. | | `OMNIROUTE_READY_TIMEOUT_MS` | `60000` | `bin/cli/utils/pid.mjs` | Najdaljši čas (v ms), ki ga CLI čaka na končno točko stanja zdravja strežnika, preden izpiše opozorilo o časovni omejitvi. Uporabno pri počasnih hladnih zagonih (npr. Windows). Nastavljivo tudi prek `--ready-timeout`. | | `OMNIROUTE_VERBOSE` | `0` | `bin/cli/api.mjs` | Nastavite na `1`, da se med izvajanjem ukazov CLI na stderr izpiše diagnostika ponovnih poskusov in umika. | | `OMNIROUTE_PLUGIN_PATH` | _(ni nastavljeno)_ | `bin/cli/plugins.mjs` | Imenik po meri za odkrivanje vtičnikov CLI (paketi `omniroute-cmd-*`). Če ni nastavljeno, je privzeto `~/.omniroute/plugins/`. Samo za CLI — nikoli ne doseže strežniškega preiskovalnika vtičnikov, ki ga določa `OMNIROUTE_PLUGINS_DIR` (razdelek 2). | | `OMNIROUTE_NO_UPDATE_NOTIFIER` | _(ni nastavljeno)_ | `bin/omniroute.mjs` | Pri kateri koli neprazni vrednosti prepreči obvestilo CLI o posodobitvi ob izhodu procesa. Obvestilo ostane neodvisno onemogočeno tudi v CI, tihem načinu in netekstovnih načinih izpisa. | | `OMNIROUTE_DOCTOR_LIVENESS_URL` | _(izpeljano)_ | `bin/cli/commands/doctor.mjs` | URL za preverjanje življenjskosti, ki ga preverja `omniroute doctor`. Programska možnost `livenessUrl` ima prednost; sicer se ta vrednost uporabi dobesedno. Če ni nastavljena, CLI izpelje končno točko `/api/health/degradation` lokalne nadzorne plošče. | | `OMNIROUTE_PROVIDER_CATALOG_PATH` | `src/shared/constants/providers/` | `bin/cli/provider-catalog.mjs` | Pot do kataloga ponudnikov, ki jo uporabljajo ukazi CLI za ponudnike. Programska možnost `catalogPath` ima prednost. Absolutne poti se uporabijo nespremenjene; relativne poti se razrešijo iz korena projekta. Če ni nastavljena, CLI uporabi imenik s konstantami ponudnikov, z zastarelo datoteko `providers.ts` kot rezervo. | | `OMNIROUTE_PROVIDER_TEST_MODEL` | _(privzeto ponudnika)_ | `bin/cli/provider-test.mjs` | Globalni rezervni model za preizkuse povezave ponudnikov v CLI. Vrstni red prednosti: konfigurirani model povezave, zamenjava modela za posameznega ponudnika, ta vrednost, nato vgrajeni preizkusni model ponudnika. | --- ## 10. Interni agent in integracije MCP | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ----------------------------------------------- | --------------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_BASE_URL` | samodejno zaznavanje | `open-sse/mcp-server/server.ts` | Izrecni URL, prek katerega orodja MCP/A2A dosežejo OmniRoute. Preglasi samodejno zaznavanje localhosta. | | `OMNIROUTE_API_KEY` | _(ni nastavljeno)_ | moduli MCP/A2A | Ključ API za klice internih orodij MCP in spretnosti A2A. | | `OMNIROUTE_API_KEY_ID` | _(ni nastavljeno)_ | `open-sse/mcp-server/audit.ts` | ID ključa za pripisovanje v revizijskem dnevniku MCP. | | `ROUTER_API_KEY` | _(ni nastavljeno)_ | Zastarelo | Zastareli vzdevek za `OMNIROUTE_API_KEY`. | | `OMNIROUTE_A2A_HISTORY_RETENTION_DAYS` | `30` | `src/lib/a2a/taskManager.ts` | Število dni zgodovine opravil A2A, ki se hranijo v lokalni bazi podatkov, preden jih dnevno čiščenje izbriše. Če ni nastavljeno, je neštevilčno ali `<= 0`, se uporabi privzeta vrednost `30`. | | `OMNIROUTE_A2A_MEMORY_HITS` | `1` | `src/lib/a2a/taskExecution.ts` | Stikalo za izklop (kill-switch) funkcije opazljivosti zadetkov pomnilnika A2A. Nastavite na `0`, da popolnoma preskočite poizvedbo priklica pomnilnika za opravilo; katera koli druga vrednost (vključno z nenastavljeno) jo pusti omogočeno. | | `OMNIROUTE_ISSUE_AGENT_ENABLED` | `false` | `src/app/api/issue-agent/runs/route.ts` | Omogoči končno točko za posneto triažo lokalnega Issue Agenta (brez povezave). Pustite onemogočeno, razen če izrecno izvajate lokalne delovne tokove posnete triaže. | | `OMNIROUTE_ISSUE_AGENT_TIMEOUT_MS` | _(ni nastavljeno)_ | `src/lib/issueAgent/execution.ts` | Časovna omejitev (ms) za en sam zagon posnete triaže Issue Agenta. Omejena na interni maksimum; če ni nastavljena ali je neveljavna, se uporabi vgrajena privzeta vrednost. | | `OMNIROUTE_CONTEXT` | _(aktivni kontekst)_ | `bin/cli/program.mjs`, `bin/cli/api.mjs` | Kontekst/profil oddaljenega načina CLI za ukaze `omniroute`; preglasi aktivni kontekst v lokalni shrambi kontekstov. Ekvivalentno `--context `. | | `OMNIROUTE_CONTEXT_KEYCHAIN_DISABLED` | `0` | `bin/cli/contexts.mjs` | Onemogoči izbirno zaledje `keytar` za ključavnico OS za poverilnice kontekstov CLI. Ko je omogočeno, poverilnice ostanejo v `config.json` z načinom `0600`, CLI pa enkrat izda opozorilo o nadomestnem načinu; namenjeno namernemu delovanju headless/v vsebnikih. | | `OMNIROUTE_MCP_ENFORCE_SCOPES` | `false` | `open-sse/mcp-server/server.ts` | Vsili nadzor dostopa na podlagi obsegov pri klicih orodij MCP. | | `OMNIROUTE_MCP_SCOPES` | _(vsi)_ | `open-sse/mcp-server/server.ts` | Z vejico ločeni obsegi: `admin`, `combos`, `health`, `models`, `routing`, `budget`, `metrics`, `pricing`, `memory`, `skills`. | | `OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS` | `false` | `open-sse/mcp-server/descriptionCompressor.ts` | Stisni opise orodij MCP pred serializacijo manifesta. Vrednosti za omogočitev: `1`, `true`, `on`. | | `OMNIROUTE_MCP_DESCRIPTION_COMPRESSION` | `rtk` | `open-sse/mcp-server/descriptionCompressor.ts` | Algoritem/profil stiskanja. Vrednosti za onemogočitev: `0`, `false`, `off`. | | `OMNIROUTE_MCP_FETCH_TIMEOUT_MS` | `10000` | `open-sse/mcp-server/fetchTimeout.ts` | Časovni proračun za prekinitev (ms) za interna upravljalska branja strežnika MCP (health, resilience, combos, quota, usage). | | `OMNIROUTE_MCP_UPSTREAM_TIMEOUT_MS` | `60000` | `open-sse/mcp-server/fetchTimeout.ts` | Proračun časa (ms) do prekinitve za MCP skoke, ki čakajo na ponudnika (`route_request`, `web_search`, `web_fetch`). | | `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | `src/lib/localCorpus/configured.ts` | Največje število instanc indeksa lokalnega korpusa, predpomnjenih v pomnilniku (LRU, ena na indeksirani korenski imenik). Omejeno navzdol na najmanj `1`. | | `MODEL_SYNC_INTERVAL_HOURS` | `6` | `src/shared/services/modelSyncScheduler.ts` | Interval sinhronizacije kataloga modelov v urah. | | `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES` | `70` | `src/lib/usage/providerLimits.ts` | Interval poizvedovanja omejitev hitrosti in kvot ponudnika. | | `PROVIDER_LIMITS_SYNC_SPACING_MS` | `1500` | `src/lib/usage/providerLimits.ts` | Razmik (ms) med zaporednimi pridobivanji OAuth kvot pri množični sinhronizaciji; OAuth povezave se pridobivajo ena naenkrat, da se izognemo sunkovni obremenitvi vira. `0` to izklopi (sočasno). | | `OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS` | `250` | `open-sse/services/quotaFetchThrottle.ts` | Najmanjši interval (ms) med zaporednimi pridobivanji kvot iz vira na poti predpreverjanja/nadzora posamezne zahteve; razmika sočasne omrežne klice, da veliko računov na enem IP-ju ne povzroči sunkovne obremenitve vira. Povezano v pridobivalce kvot Codex (`/wham/usage`), DeepSeek, Bailian (obe mesti pridobivanja), OpenCode in Crof (#6009, #6911). Generična pot dispečerja `usage.ts::getUsageForProvider` (github/glm/minimax/nanogpt/xai/itd.) še ni zajeta — spremlja se ločeno. Zadetki predpomnilnika niso prizadeti. `0` onemogoči; omejeno na `0..60000`. | | `OMNIROUTE_QUOTA_FETCH_JITTER_MS` | `120` | `open-sse/services/quotaFetchThrottle.ts` | Dodatni naključni razmik (ms) na zahtevo, vzorčen pri vsakem rezerviranem pridobivanju kvote iz vira. Privzeto 120; omejeno na `0..60000`; `0` odstrani samo naključni razmik (jitter). Nastavite `OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS=0`, da onemogočite celotno dušenje. Naključni razmik ne zagotavlja preprečitve blokad s strani vira. | | `PROVIDER_LIMITS_POST_USAGE_REFRESH_DELAY_MS` | `5000` | `src/lib/usage/providerLimits.ts` | Zakasnitev (ms) pred osvežitvijo omejitev ponudnika po dejanskem dogodku porabe, kar API-ju kvot vira da čas, da zabeleži porabo. | | `OMNIROUTE_LOGIN_BROWSER_PATH` | samodejno zaznavanje | `open-sse/services/adobeFireflyBrowserLogin.ts` | Absolutna pot do izvršljive datoteke sistemskega brskalnika Chrome ali Edge, uporabljene za interaktivno prijavo v Adobe Firefly in obnavljanje izven zaslona. | | `ADOBE_FIREFLY_BROWSER_REFRESH` | omogočeno | `open-sse/services/adobeFireflySession.ts` | Ohranja sveže stanje IMS in brskalniškega tveganja s sejami Chrome CDP, vezanimi na račun. Nastavite na `0`, da onemogočite obnavljanje prek brskalnika. | | `ADOBE_FIREFLY_SESSION_DISK` | omogočeno | `open-sse/services/adobeFireflySession.ts` | Trajno shranjuje popravljene seje Adobe pod `DATA_DIR` tudi po ponovnih zagonih procesa. Nastavite na `0`, da seje ostanejo le v pomnilniku. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | `12000` | `open-sse/services/adobeFireflySession.ts` | Najmanjši razmik v milisekundah med pošiljanji zahtevkov za generiranje v Adobe Firefly; `0` onemogoči razmike. | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | Dodatno obdobje mirovanja v milisekundah po vsakem tretjem uspešnem pošiljanju v Adobe. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyClient.ts` | Osnovni čas umika (backoff) v milisekundah po prehodnih odzivih Adobe 408; združen z razmiki pošiljanj v največ petih poskusih. | | `OMNIROUTE_DISABLE_BACKGROUND_SERVICES` | `false` | `src/instrumentation-node.ts` | Onemogoči vse storitve v ozadju (sinhronizacija, ceniki, osveževanje modelov). Uporabno za CI/testiranje. | | `OMNIROUTE_HEADLESS` | _(ni nastavljeno)_ | `src/lib/system/headless.ts` | Zagon samo s proxy mehanizmom: preskoči izbirne podsisteme, `/dashboard` → 404. Enako kot `omniroute serve --headless`. Glejte [HEADLESS.md](../guides/HEADLESS.md). | | `OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS` | _(nenastavljeno)_ | `src/lib/config/runtimeSettings.ts` | Vsili vklop opravil v ozadju pri zaznavi avtomatiziranega testiranja. Nastavite `1` za razveljavitev testne hevristike. | | `OMNIROUTE_BUDGET_RESET_JOB_INTERVAL_MS` | `600000` | `src/lib/jobs/budgetResetJob.ts` | Pogostost preverjanja ponastavitve proračuna (ms). Spodnja meja `10000`. | | `OMNIROUTE_CONNECTION_RECOVERY_INTERVAL_MS` | `60000` | `src/lib/quota/connectionRecovery.ts` | Pogostost proaktivne obnove povezav po ohladitvi (ms): ponovno potrdi povezave, katerih začasna vrednost `rate_limited_until` je potekla, izven kritične poti zahtev. Spodnja meja `5000`. | | `OMNIROUTE_DISABLE_CONNECTION_RECOVERY` | `false` | `src/lib/quota/connectionRecovery.ts` | Onemogoči razporejevalnik proaktivne obnove povezav po ohladitvi (lena obnova v `getProviderCredentials` še vedno velja). | | `OMNIROUTE_REASONING_CACHE_CLEANUP_INTERVAL_MS` | `1800000` | `src/lib/jobs/reasoningCacheCleanupJob.ts` | Pogostost čiščenja predpomnilnika sklepanja (ms). Spodnja meja `60000`. | | `OMNIROUTE_REASONING_MIN_BUDGET` | _nenastavljeno_ (onemogočeno) | `open-sse/services/reasoningTokenBuffer.ts` | Izbirna spodnja meja za izhodne proračune modelov za razmišljanje: klicateljev `max_tokens` v intervalu `[256, floor)` se dvigne na spodnjo mejo (omejeno z zgornjo mejo izhoda modela). Nenastavljeno = proračuni odjemalca se nikoli ne povečajo (#9507). | | `OMNIROUTE_REASONING_EFFORT_PROBE_PROVIDERS` | _nenastavljeno_ (onemogočeno) | `open-sse/services/learnedReasoningEffortCaps.ts` | Izbirni, z vejico ločeni ID-ji ponudnikov (ali `*`): ko odgovor 400/422 na `reasoning_effort` ne navede sprejemljivega nabora, poskusite enkrat znova eno stopnjo nižje (nikoli pod `low`) in se te stopnje naučite le, če preizkus dobi odgovor (#14895). | | `OMNIROUTE_LOG_EXPORT_CRON` | `0 * * * *` | `src/lib/jobs/logExportJob.ts` | Cron izraz (UTC) za opravilo izvoza dnevnika klicev, ki izprazni vsako omogočeno destinacijo izvoza dnevnikov. Pri izvozu teles raje uporabite `*/5 * * * *`. | | `OMNIROUTE_LOG_EXPORT_RUN_TIMEOUT_MS` | `900000` | `src/lib/logExport/childRunner.ts` | Časovna omejitev stenske ure podrejenega procesa na destinacijo v milisekundah. Prekoračitev zabeleži neuspeh in ubije proces brez napredovanja nepotrjene serije. Neveljavne/nepozitivne/necele vrednosti uporabijo privzeto. | | `OMNIROUTE_LOG_EXPORT_CHILD_MAX_OLD_SPACE_MB` | `1024` | `src/lib/logExport/childRunner.ts` | Omejitev V8 old-space podrejenega procesa izvoza Node v MB (ne skupni RSS). Privzeto pušča prostor za 500 vrstic omejenih artefaktov s telesi; prevelike serije lahko kljub temu izčrpajo kopico podrejenega procesa. Neuspeh svetuje zmanjšanje velikosti serije ali povečanje te omejitve. Neveljavne/nepozitivne/necele vrednosti uporabijo privzeto. Izvozi Bun se vrnejo na izvajanje znotraj procesa brez te omejitve. | | `OMNIROUTE_CONFIG_HOT_RELOAD_MS` | `5000` | `src/lib/config/hotReload.ts` | Interval poizvedovanja (ms) za vroče ponovno nalaganje konfiguracije. Vrednosti pod `1000` so zavrnjene. | | `OMNIROUTE_DISABLE_REDIS_AUTH_CACHE` | _(omogočeno)_ | `src/lib/db/apiKeys.ts` | Nastavite `1` za obhod predpomnilnika preverjanja pristnosti API-ključev, podprtega z Redis (prisili branja iz baze podatkov). | | `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | `0` | `open-sse/services/compression/engines/rtk/filterLoader.ts` | Zaupaj uporabniško upravljanim pravilom filtrov projekta RTK brez strogih preverjanj podpisov. | | `OMNIROUTE_LITE_MAX_TOOL_LENGTH` | `2000` | `open-sse/services/compression/lite.ts` | Omejitev števila znakov za proaktivno prirezovanje rezultatov orodij Lite, ko `lite.maxToolLength` ni nastavljen. Razpon 256–1000000. Nastavitev nadzorne plošče ima prednost pred to spremenljivko okolja. | | `OMNI_COMPRESSION_WORKERS` | `2` | `open-sse/services/compression/compressionWorkerPool.ts` | Največje število hkratnih sinhronih delavcev RTK/Caveman; odvečna opravila čakajo po načelu FIFO. | | `OMNI_COMPRESSION_WORKER_TIMEOUT_MS` | `120000` | `open-sse/services/compression/compressionWorkerPool.ts` | Časovna omejitev na opravilo v milisekundah. Delavci, ki prekoračijo omejitev, se prekinejo, zahteva pa spodleti odprto in nespremenjena. | | `OMNI_COMPRESSION_WORKER_IDLE_MS` | `60000` | `open-sse/services/compression/compressionWorkerPool.ts` | Življenjska doba v mirovanju v milisekundah, preden se neuporabljen delavec stiskanja prekine. | | `OMNI_COMPRESSION_WORKER_MAX_OLD_MB` | `1024` | `open-sse/services/compression/compressionWorkerPool.ts` | Zgornja meja kopice stare generacije V8 (old-generation heap) v MB za vsakega delavca stiskanja, v vseh načinih (spodnja meja `128`). Opravilo, ki to mejo preseže, odpove odprto (nestisnjeno), namesto da bi povečevalo kopico prehoda. | | `COMPRESSION_PIPELINE_BREAKER_ENABLED` | `false` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Glavno stikalo odklopnika (circuit-breaker) po pogonih za zložen cevovod T02. **Po izbiri (privzeto izklopljeno)** — ko je vklopljeno, se pogon, ki večkrat zapored vrže izjemo čez zahteve, za obdobje ohladitve preskoči (fail-open); izklopljeno = bajtno identično podedovano vedenje. | | `COMPRESSION_PIPELINE_BREAKER_THRESHOLD` | `3` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Zaporedne napake čez zahteve, preden se odklopnik pogona odpre. | | `COMPRESSION_PIPELINE_BREAKER_COOLDOWN_MS` | `30000` | `open-sse/services/compression/pipelineEngineBreaker.ts` | Milisekunde, kolikor časa odprt pogon ostane preskočen, pred polodprtim preizkusom. | | `COMPRESSION_CCR_RETRIEVAL_RAMP_FACTOR` | `2` | `open-sse/services/compression/engines/ccr/index.ts` | Naraščanje povratne informacije o pridobitvi CCR T08/H8: vsako predhodno pridobivanje shranjenega bloka linearno dvigne njegovo efektivno vrednost `minChars` (pogosto pridobivana vsebina se manj stiska; `>=3` pridobitve = nikoli stisnjeno). `1` onemogoči naraščanje (binarni preskok samo na pragu). | | `COMPRESSION_CCR_DURABLE_STORE` | `true` | `open-sse/services/compression/engines/ccr/index.ts` | Trajna shramba blokov CCR (#9061). Podpre shrambo v pomnilniku s SQLite, tako da blok preživi izmet iz LRU, TTL, ponovni zagon ali pridobitev, ki pristane na drugi instanci. Nastavite `false`, da bloki ostanejo samo v pomnilniku. Bloki nad 512KB in oblačna izvajalna okolja ostanejo v vsakem primeru samo v pomnilniku. | | `COMPRESSION_PREFIX_FREEZE_ENABLED` | `false` | `open-sse/services/compression/prefixFreeze.ts` | Glavno stikalo za zamrznitev predpone na podlagi opazovane uporabe T08/H5. **Po izbiri (privzeto izklopljeno)** — ko je vklopljeno, se sistemski poziv, opazovan `>=` praga, obravnava kot stabilna predpona, primerna za predpomnjenje, in se ohrani pred stiskanjem tudi za ponudnike, ki jih statična hevristika predpomnjenja zgreši (zamrznitev samo _ohranja_, nikoli ne spreminja). | | `COMPRESSION_PREFIX_FREEZE_THRESHOLD` | `3` | `open-sse/services/compression/prefixFreeze.ts` | Število opazovanj sistemskega poziva, preden se obravnava kot zamrznjena stabilna predpona. | | `OMNIROUTE_BOOTSTRAPPED` | `false` | `src/app/(dashboard)/dashboard/page.tsx` | Bootstrap skripta jo nastavi na `true` po začetni namestitvi. Nadzoruje vidnost čarovnika za namestitev. | | `OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE` | `0` | `open-sse/executors/antigravity.ts` | Rešilni izhod: dovoli, da telo zahteve preglasi polje projekta Antigravity. | | `ANTIGRAVITY_CREDITS` | `off` | `open-sse/services/antigravityCredits.ts` | Politika kreditov Google One AI: `off` nikoli ne vstavi kreditov, `retry` jih vstavi enkrat po upravičeni kvotni napaki 429, `always` pa jih vstavi že pri prvi zahtevi. | | `ANTIGRAVITY_ALLOW_SIGNATURE_BYPASS` | `0` | `open-sse/translator/request/openai-to-gemini.ts` | Dovoli prevajalniku zahtev Antigravity, da preskoči strogo preverjanje podpisov zahtev CLI, ko zgornji tok zavrne prave podpise (način za razhroščevanje/zastareli CLI). Neničelna vrednost omogoči obhod. | | `AGY_TOKEN_FILE` | `~/.gemini/antigravity-cli/antigravity-oauth-token` | `src/app/api/providers/agy-auth/apply-local/route.ts` | Preglasi pot do datoteke z žetonom Antigravity CLI (agy) za samodejno zaznan uvoz lokalne prijave. | ### Most OAuth CLI (interno) | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ------------------- | -------------------- | ------------------------------- | ---------------------------------------------------- | | `OMNIROUTE_SERVER` | samodejno zaznavanje | `src/lib/oauth/config/index.ts` | URL strežnika za avtentikacijski most CLI↔OmniRoute. | | `OMNIROUTE_TOKEN` | _(nenastavljeno)_ | `src/lib/oauth/config/index.ts` | Avtentikacijski žeton za most CLI. | | `OMNIROUTE_USER_ID` | `cli` | `src/lib/oauth/config/index.ts` | ID uporabnika za seje mostu CLI. | | `SERVER_URL` | _(nenastavljeno)_ | `src/lib/oauth/config/index.ts` | Podedovani vzdevek za `OMNIROUTE_SERVER`. | | `CLI_TOKEN` | _(nenastavljeno)_ | `src/lib/oauth/config/index.ts` | Podedovani vzdevek za `OMNIROUTE_TOKEN`. | | `CLI_USER_ID` | _(nenastavljeno)_ | `src/lib/oauth/config/index.ts` | Podedovani vzdevek za `OMNIROUTE_USER_ID`. | --- ## 11. Poverilnice ponudnikov OAuth Vgrajene poverilnice za **razvoj na localhostu**. Za oddaljene namestitve registrirajte svoje poverilnice v razvijalski konzoli posameznega ponudnika. | Spremenljivka | Ponudnik | Opombe | | ------------------------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CLAUDE_OAUTH_CLIENT_ID` | Claude Code (Anthropic) | Javni odjemalec — skrivnost ni potrebna. | | `CLAUDE_CODE_REDIRECT_URI` | Claude Code | Preglasi preusmeritveni URI. Privzeto: `https://platform.claude.com/oauth/code/callback` | | `CODEX_OAUTH_CLIENT_ID` | Codex / OpenAI | Javni odjemalec. | | `GEMINI_OAUTH_CLIENT_ID` | Gemini (Google) | Zahteva pripadajoč `_SECRET`. | | `GEMINI_OAUTH_CLIENT_SECRET` | Gemini (Google) | — | | `KIMI_CODING_OAUTH_CLIENT_ID` | Kimi Coding (Moonshot) | Javni odjemalec. | | `MUSE_CODE_OAUTH_CLIENT_ID` | Muse Code (Meta) | Izbirna zamenjava za javni ID odjemalca device-flow v Muse CLI. Pustite nenastavljeno, če želite uporabiti vgrajenega javnega odjemalca. | | `ANTIGRAVITY_OAUTH_CLIENT_ID` | Antigravity (Google) | Zahteva pripadajoč `_SECRET`. | | `ANTIGRAVITY_OAUTH_CLIENT_SECRET` | Antigravity (Google) | — | | `GITHUB_OAUTH_CLIENT_ID` | GitHub Copilot | Javni odjemalec. | | `GHE_COPILOT_OAUTH_CLIENT_ID` | GHE Copilot | Izbirna zamenjava za ID OAuth odjemalca za GitHub Enterprise Copilot. Če ni nastavljena, se uporabi javna privzeta vrednost iz `GITHUB_OAUTH_CLIENT_ID`. | | `COPILOT_INTEGRATION_ID` | GitHub Copilot | Izbirna zamenjava za ID integracije odjemalca GitHub Copilot, ki se pošlje v glavah `Copilot-Integration-Id` in `Editor-Plugin-Version`. Privzeto `copilot-developer-cli`. | | `WINDSURF_API_KEY` | Windsurf / Devin (v3.8) | Rezervni API ključ, ki ga uporabi `open-sse/executors/devin-cli.ts`, ko ni na voljo poverilnice za posamezno povezavo. Izbirno. | | `CLI_DEVIN_BIN` | Devin CLI (v3.8) | Pot po meri do izvršljive datoteke Devin CLI (`devin`). Razreši jo `open-sse/executors/devin-cli.ts`. | | `GITLAB_DUO_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | ID OAuth odjemalca za GitLab Duo. Registrirajte aplikacijo na `https://gitlab.com/-/profile/applications` s preusmeritvenim URI-jem `/callback` in obsegi `api, read_user, openid, profile, email`. Nadomestno se uporabi `GITLAB_OAUTH_CLIENT_ID`. | | `GITLAB_DUO_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | Skrivnost OAuth odjemalca za GitLab Duo. Izbirno — tok PKCE ne zahteva skrivnosti. Nadomestno se uporabi `GITLAB_OAUTH_CLIENT_SECRET`. | | `GITLAB_DUO_BASE_URL` | GitLab Duo (v3.8) | Preglasi osnovni URL GitLaba (samogostujoč GitLab). Privzeto `https://gitlab.com`. Nadomestno se uporabi `GITLAB_BASE_URL`. | | `GITLAB_BASE_URL` | GitLab Duo (v3.8) | Podedovana nadomestna možnost za `GITLAB_DUO_BASE_URL`. Uporabi se, ko različica `_DUO_` ni nastavljena. | | `GITLAB_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | Podedovana nadomestna možnost za `GITLAB_DUO_OAUTH_CLIENT_ID`, ki jo uporablja `src/lib/oauth/constants/oauth.ts`. | | `GITLAB_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | Podedovana nadomestna možnost za `GITLAB_DUO_OAUTH_CLIENT_SECRET`, ki jo uporablja `src/lib/oauth/constants/oauth.ts`. | | `QODER_OAUTH_CLIENT_SECRET` | Qoder | — | | `QODER_OAUTH_AUTHORIZE_URL` | Qoder | Nastavite za omogočitev Qoder OAuth. | | `QODER_OAUTH_TOKEN_URL` | Qoder | — | | `QODER_OAUTH_USERINFO_URL` | Qoder | — | | `QODER_OAUTH_CLIENT_ID` | Qoder | — | | `QODER_PERSONAL_ACCESS_TOKEN` | Qoder | Nadomestni neposredni API ključ (zaobide OAuth). | | `QODER_CLI_WORKSPACE` | Qoder | ID delovnega prostora za Qoder CLI. | | `OMNIROUTE_QODER_WORKSPACE` | Qoder | Vzdevek za `QODER_CLI_WORKSPACE`. | | `QODER_CLI_CONFIG_DIR` | Qoder | Prepiše imenik konfiguracije Qoder CLI (izolirana PAT seja, prepreči prepisovanje prijave v brskalniku). | | `QODER_CLI_MAX_CONCURRENCY` | Qoder | Največje število hkratnih zagonov qodercli (zagoni print ali pozivi ACP); dodatne zahteve čakajo v vrsti FIFO. Nenastavljeno (privzeto) = brez omejitve. | | `QODER_CLI_QUEUE_TIMEOUT_MS` | Qoder | Kako dolgo zahteva Qoder čaka na prosto mesto qodercli (samo če je nastavljena omejitev), preden spodleti z napako 429 `qodercli_busy` + `Retry-After`. Privzeto `120000`. | | `QODER_CLI_TRANSPORT` | Qoder | `print` (privzeto) za vsako zahtevo zažene `qodercli --print`; `acp` ohranja en trajni proces `qodercli --acp` na PAT. | | `QODER_CLI_ACP_IDLE_TIMEOUT_MS` | Qoder | Prenos ACP: trajni proces qodercli prekine po tem času nedejavnosti. Privzeto `600000`. | | `QODER_CLI_ACP_STARTUP_TIMEOUT_MS` | Qoder | Prenos ACP: rok, v katerem mora qodercli odgovoriti na ACP `initialize`. Privzeto `60000`. | | `QODER_CLI_ACP_MAX_SESSIONS_PER_PROCESS` | Qoder | Prenos ACP: trajni proces qodercli recikliraj po toliko sejah. Privzeto `500`. | | `BLACKBOX_WEB_VALIDATED_TOKEN` | Blackbox Web | Žeton `tk` sprednjega dela, ki se pošlje kot `validated` na `/api/chat`. Zahtevan, ko Blackbox uveljavlja ujemanje žetonov; sicer OmniRoute uporabi naključni UUID. Glejte težavo #2252. | | `VISION_BRIDGE_BASE_URL` | Varovalo Vision Bridge | OpenAI-združljiv osnovni URL za klice vision-bridge, ki niso Anthropic. Privzeto uporabi starejšo okoljsko spremenljivko za OpenAI URL ali api.openai.com. Usmerite na OmniRoute-ovo samozanko `/v1` ali katero koli OpenAI-združljivo končno točko (Gemini OpenAI-compat, OpenRouter). Težava #2232. Ko je URL OmniRoute-ova lastna `/v1`, podzahteva describe pošlje `x-omniroute-admission-bypass: internal` in preveri pristnost z razrešeno poverilnico samozanke (senčilna vrednost `sk_omniroute` v lokalnem načinu ali `OMNIROUTE_API_KEY` / `ROUTER_API_KEY` — #1350), tako da delujejo namestitve z `REQUIRE_API_KEY=true`. | | `VISION_BRIDGE_API_KEY` | Varovalo Vision Bridge | API ključ za zgornji URL. Preglasi okoljske spremenljivke OpenAI / Google posameznih ponudnikov za klice vision-bridge, ki niso Anthropic. Modeli Anthropic ohranijo svojo namensko pot ključa Anthropic. Težava #2232. | | `OMNIROUTE_VISION_BRIDGE_NEGATIVE_CACHE_MS` | Varovalo Vision Bridge | Kako dolgo se v predpomnilniku hrani rezultat usmerjanja "ni uporabnega kandidata", v ms (privzeto `30000`). Neveljavne ali negativne vrednosti se vrnejo na privzeto; `0` onemogoči negativni predpomnilnik. Vir: `src/lib/guardrails/visionBridgeRouter.ts`. | > [!WARNING] > > 1. Pojdite na [Google Cloud Console → Credentials](https://console.cloud.google.com/apis/credentials) > 2. Ustvarite OAuth 2.0 ID odjemalca (vrsta: "Spletna aplikacija") > 3. Dodajte URL svojega strežnika kot pooblaščeni URI za preusmeritev > 4. Zamenjajte vrednosti poverilnic v `.env`. --- ## 12. Preglasitve User-Agent ponudnikov Preglasite glavo `User-Agent`, ki se pošlje vsakemu nadrejenemu (upstream) ponudniku. To med izvajanjem dinamično razreši osnovni razred izvajalca: ``` process.env[`${PROVIDER_ID}_USER_AGENT`] ``` > **Vir:** `open-sse/executors/base.ts` → `buildHeaders()` | Spremenljivka | Privzeta vrednost | Kdaj posodobiti | | -------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CLAUDE_USER_AGENT` | `claude-cli/2.1.280 (external, cli)` | Ko Anthropic izda novo različico CLI | | `CLAUDE_DISABLE_TOOL_NAME_CLOAK` | `false` | `executors/base.ts` + `executors/cliproxyapi.ts` | Nastavite na `1`/`true`, da se imena orodij ogrodij tretjih strank dobesedno posredujejo Anthropic na obeh poteh proti Anthropic (izvorni OAuth in CLIProxyAPI). Privzeto izvajalec deterministično dodeli vzdevke imenom orodij, ki niso Claude Code (kanonična preslikava Claude Code, kjer obstaja, sicer PascalCase), in jih v odzivu obrne prek `_toolNameMap`, tako da ogrodja z orodji snake_case niso zavrnjena kot tretji odjemalci, prepoznani po prstnem odtisu. Samo za razhroščevanje. | | `CODEX_USER_AGENT` | `codex-cli/0.155.0 (Windows 10.0.26200; x64)` | Ko OpenAI posodobi Codex CLI | | `CODEX_CLIENT_VERSION` | `0.155.0` | Preglasi različico odjemalca Codex neodvisno od celotnega niza UA | | `GROK_CLI_CLIENT_VERSION` | `1.0.41` | Preglasi `x-grok-client-version` za sklepanje, sinhronizacijo modelov in OAuth s kodo naprave ter privzeti User-Agent Grok CLI za sklepanje in sinhronizacijo modelov. Sprejme SemVer z izbirnimi metapodatki predizdaje/gradnje, do 128 znakov po obrezovanju belega prostora na robovih. Nenastavljene, prazne, neveljavne vrednosti ali vrednosti s prelomi vrstic uporabijo priloženo pripeto različico. Obstoječa preglastitev celotnega User-Agent za sklepanje ohranja prednost. | | `CLAUDE_CODE_CLIENT_VERSION` | `2.1.280` | Preglasi oglaševano različico Claude Code neodvisno od `CLAUDE_USER_AGENT`. Anthropic dostop do nekaterih modelov pogojuje s to vrednostjo (#12417). | | `CLAUDE_CODE_CLIENT_BUILD_REVISION` | `1e2` | Preglasi 3-znakovno pripono, ki jo OmniRoute pripne k `cc_version=` v obračunskem bloku Claude. Zvišajte jo skupaj s `CLAUDE_CODE_CLIENT_VERSION` — če pripnete samo različico, oglašujete par `version.revision`, ki ga noben dejanski binarni program ne oddaja. | | `GITHUB_COPILOT_CLI_VERSION` | `1.0.91` | Preglasi oglaševano različico Copilot CLI neodvisno od `GITHUB_USER_AGENT` | | `GITHUB_USER_AGENT` | `GitHubCopilotChat/0.54.0` | Ko se GitHub Copilot Chat posodobi | | `ANTIGRAVITY_USER_AGENT` | `antigravity/2.0.1 darwin/arm64` | Ko se Antigravity IDE posodobi | | `KIRO_USER_AGENT` | `AWS-SDK-JS/3.0.0 kiro-ide/1.0.0` | Ko se Kiro IDE posodobi | | `KIRO_OAUTH_CLIENT_ID` | `kiro-cli` | Preglasi `clientId` družbene prijave s kodo naprave Kiro (javni ID) | | `KIRO_VERIFY_FULL_CRC` | `false` | Izbirno: popolno preverjanje CRC sporočil po posameznih okvirjih v toku dogodkov Kiro (razhroščevanje poškodovanih tokov) | | `KIRO_CREDIT_PRICE_USD` | `0.02` | USD na kredit Kiro; pretvori kredite `meteringEvent` v natančen strošek na zahtevo | | `KIRO_REQUIRE_CREDITS` | `false` | Zavrne odziv Kiro, ki ne poroča o merjenju kreditov, namesto da bi ga zabeležil kot neobračunanega | | `QODER_USER_AGENT` | `Qoder-Cli` | Ko se Qoder CLI posodobi | | `CURSOR_USER_AGENT` | `Cursor/3.3` | Ko se Cursor posodobi | > [!TIP] > Preglasitve User-Agent lahko dodate za **katerega koli** ponudnika z vzorcem `{PROVIDER_ID}_USER_AGENT`. Izvajalec dinamično sestavi ime okoljske spremenljivke. --- ## 13. Združljivost prstnih odtisov CLI Ko je omogočena, OmniRoute prerazporedi glave HTTP in polja telesa JSON tako, da se ujemajo z natančnim podpisom uradnih orodij CLI. To zmanjša tveganje, da bi bil račun označen, hkrati pa ohrani vaš naslov IP posredniškega strežnika. **Vir:** `open-sse/config/cliFingerprints.ts`, `open-sse/executors/base.ts` ### Po ponudnikih | Spremenljivka | Aktivacija | Učinek | | ------------------------ | ---------- | ------------------------------------- | | `CLI_COMPAT_CODEX` | `=1` | Posnema podpis zahteve Codex CLI | | `CLI_COMPAT_CLAUDE` | `=1` | Posnema podpis zahteve Claude Code | | `CLI_COMPAT_GITHUB` | `=1` | Posnema podpis zahteve GitHub Copilot | | `CLI_COMPAT_ANTIGRAVITY` | `=1` | Posnema podpis zahteve Antigravity | | `CLI_COMPAT_CURSOR` | `=1` | Posnema podpis zahteve Cursor | | `CLI_COMPAT_KIMI_CODING` | `=1` | Posnema podpis zahteve Kimi Coding | | `CLI_COMPAT_KILOCODE` | `=1` | Posnema podpis zahteve Kilo Code | | `CLI_COMPAT_CLINE` | `=1` | Posnema podpis zahteve Cline | ### Globalno | Spremenljivka | Aktivacija | Učinek | | ---------------- | ---------- | ----------------------------------------------------------------- | | `CLI_COMPAT_ALL` | `=1` | Omogoči združljivost prstnih odtisov za **vse** ponudnike hkrati. | ### Preglasitve identitete Kimi Coding CLI | Spremenljivka | Privzeta vrednost | Izvorna datoteka | Opis | | ----------------------- | ------------------- | ---------------------------------------- | --------------------------------------------------------------- | | `KIMI_CLI_VERSION` | `1.36.0` | `src/lib/oauth/providers/kimi-coding.ts` | Preglasi različico Kimi CLI, poslano med klici OAuth/API. | | `KIMI_CODING_DEVICE_ID` | _(zajeta privzeta)_ | `src/lib/oauth/providers/kimi-coding.ts` | Preglasi zajeti ID naprave Kimi, uporabljen v glavah odjemalca. | > [!NOTE] > Ta funkcija deluje skupaj s preglasitvami User-Agent (§12). Sistem prstnih odtisov obravnava vrstni red glav in polj telesa, preglasitve User-Agent pa obravnavajo določen niz UA. Obe funkciji je mogoče omogočiti neodvisno. --- ## 14. Ponudniki ključev API Ključi API za ponudnike, ki uporabljajo neposredno preverjanje pristnosti. **Priporočena nastavitev:** Nadzorna plošča → Ponudniki → Dodaj ključ API. Nastavitev prek spremenljivk okolja je alternativna možnost za uvedbe Docker ali uvedbe brez grafičnega vmesnika. Prepoznani vzorec: `{PROVIDER_ID}_API_KEY` | Spremenljivka | Ponudnik | | ------------------ | ----------------------------------------------------- | | `DEEPSEEK_API_KEY` | DeepSeek | | `NVIDIA_API_KEY` | NVIDIA NIM | | `JINA_AI_API_KEY` | Jina AI (Foundation API + nadomestni Reader) | | `JINA_API_KEY` | Jina AI (vzdevek za `JINA_AI_API_KEY`) | | `GEMINI_API_KEY` | Gemini (Google AI Studio) vdelave + nadomestni klepet | | `GOOGLE_API_KEY` | Gemini (vzdevek za `GEMINI_API_KEY`) | > [!NOTE] > Statični vnosi `${PROVIDER}_API_KEY` za Groq, xAI, Mistral, Perplexity, Together AI, Fireworks, Cerebras, Cohere, Nebius in Qianfan so bili odstranjeni v v3.8.0, ker jih izvajalno okolje ne bere več — ti ponudniki se zanašajo izključno na nadzorno ploščo / `data/provider-credentials.json` / šifrirano zbirko podatkov. Za postopek migracije glejte razdelek _Revizija: odstranjene / neuporabljene spremenljivke_ na dnu tega dokumenta. > [!TIP] > Ključi, nastavljeni prek nadzorne plošče, so šifrirano shranjeni v SQLite in imajo prednost pred spremenljivkami okolja. > > **Jina:** vdelave `jina-ai/…`, prerazvrščanje, razvrščanje, segmentiranje in `jina-search` **ne** bremenijo ključa okolja gruče, kadar obstaja povezava `jina-ai` (ali skupna povezava `jina-reader`) z nadzorne plošče — `getProviderCredentials` najprej zapolni manjkajoče vrednosti. `JINA_AI_API_KEY` / `JINA_API_KEY` se uporabita samo, kadar ni na voljo uporabnega ključa z nadzorne plošče. Dnevniki klicev pripišejo nadomestno uporabo spremenljivke okolja kot `connection_id=env:JINA_AI_API_KEY`. Kartica Reader (`jina-reader`, `r.jina.ai`) nikoli ne streže `/v1/embeddings` ali `/v1/rerank`. > > **Gemini:** `gemini/gemini-embedding-2` (vzdevek `google/gemini-embedding-2`) najprej uporabi povezavo `gemini` z nadzorne plošče. `GEMINI_API_KEY` / `GOOGLE_API_KEY` se uporabita samo, kadar ni na voljo uporabnega ključa z nadzorne plošče. Dnevniki klicev pripišejo nadomestno uporabo spremenljivke okolja kot `connection_id=env:GEMINI_API_KEY`. Izvorni večmodalni promet uporablja `x-goog-api-key` za `:embedContent` / `:batchEmbedContents` — N elementov OpenAI `input` ustvari N vektorjev. --- ## 15. Nastavitve časovnih omejitev Vse vrednosti so v **milisekundah**. Centralizirano razreševanje v `src/shared/utils/runtimeTimeouts.ts`. ### Hierarhija časovnih omejitev ``` REQUEST_TIMEOUT_MS (globalna preglasitev) ├─→ FETCH_TIMEOUT_MS (klici ponudnikov višjega toka, privzeto: 600000) │ ├─→ FETCH_HEADERS_TIMEOUT_MS (podedovano od FETCH_TIMEOUT_MS) │ ├─→ FETCH_BODY_TIMEOUT_MS (podedovano od FETCH_TIMEOUT_MS) │ ├─→ TLS_CLIENT_TIMEOUT_MS (podedovano od FETCH_TIMEOUT_MS) │ │ └── TLS_FIRST_BYTE_WATCHDOG_MS (neodvisno, privzeto: 10000) │ ├── RESPONSES_FIRST_BYTE_TIMEOUT_MS (neodvisno, privzeto: 15000) │ ├── OPENCODE_RESPONSES_HEADERS_WAIT_MS (neodvisno, privzeto: 0 = izklopljeno, predlagano: 30000) │ ├── OPENCODE_RESPONSES_HEADERS_WAIT_MAX_ROTATIONS (neodvisno, privzeto: 2) │ ├── FETCH_CONNECT_TIMEOUT_MS (neodvisno, privzeto: 30000) │ └── FETCH_KEEPALIVE_TIMEOUT_MS (neodvisno, privzeto: 4000) ├─→ STREAM_IDLE_TIMEOUT_MS (podedovano od REQUEST_TIMEOUT_MS, privzeto: 600000) ├─→ STREAM_ACTIVE_TIMEOUT_MS (neodvisno, privzeto: 1260000; 0 onemogoči) ├─→ STREAM_READINESS_TIMEOUT_MS (podedovano od REQUEST_TIMEOUT_MS, privzeto: 80000) ├─→ STREAM_READINESS_MAX_TIMEOUT_MS (omejuje prilagodljive podaljške pripravljenosti, privzeto: 180000) └─→ API_BRIDGE_PROXY_TIMEOUT_MS (podedovano od REQUEST_TIMEOUT_MS, privzeto: 30000) ├─→ API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS (izpeljano, privzeto: 300000) ├── API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS (privzeto: 60000) ├── API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS (privzeto: 5000) └── API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS (privzeto: 0 = onemogočeno) ``` | Spremenljivka | Privzeto | Opis | | ----------------------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `REQUEST_TIMEOUT_MS` | _(ni nastavljeno)_ | Globalna bližnjica — preglasi privzeti vrednosti obeh `FETCH_TIMEOUT_MS` in `STREAM_IDLE_TIMEOUT_MS`. | | `FETCH_TIMEOUT_MS` | `600000` | Skupna časovna omejitev HTTP-zahteve za klice na zagornje ponudnike. | | `STREAM_IDLE_TIMEOUT_MS` | `600000` | Najdaljša tišina med surovimi bajti z zagornje strani pred prekinitvijo. Modeli z razširjenim razmišljanjem se redko ustavijo za več kot 90 s. | | `STREAM_ACTIVE_TIMEOUT_MS` | `1260000` | Največja skupna življenjska doba aktivnega SSE-toka; ob bajtih z zagornje strani se nikoli ne ponastavi in je neodvisna od `REQUEST_TIMEOUT_MS`. Izpeljana iz največje vrednosti `timeoutMs` na model v registru (1200000, Codex) plus rezerva 60000, tako da model, ki sme porabiti celoten proračun, nikoli ni prekinjen sredi odgovora. Za onemogočitev nastavite na `0`. | | `OMNIROUTE_SSE_COMMENTS` | _(onemogočeno)_ | Ali sme OmniRoute oddajati vrstice SSE-komentarjev `:` (npr. utrip `: keepalive` in metapodatkovne končnice `x-omniroute-*`). Privzeto onemogočeno (#10524), ker strogi OpenAI-združljivi odjemalci izvedejo JSON.parse na vsaki SSE-vrstici in se zrušijo ob komentarjih `:`; utripi `data:` niso prizadeti. Nastavite `on`/`true`/`1`/`yes`, da se ponovno vključite. Uporablja `open-sse/utils/sseHeartbeat.ts`. | | `SSE_COALESCE_MS` | `0` (izključeno) | Po izbiri: združi zaporedne dogodke `content_block_delta` modela Claude (isti indeks bloka in vrsta delte), poslane odjemalcem Claude, s pošiljanjem vsaj vsakih N ms. Brez izgub; dogodki `signature_delta` in robni dogodki se nikoli ne združujejo. Velja za vsako vrsto delte, razen če je spodaj nastavljena spremenljivka za posamezno vrsto. Uporablja `open-sse/utils/sseDeltaCoalesce.ts`. | | `SSE_COALESCE_THINKING_MS` | `0` (izključeno) | Preglasitev `SSE_COALESCE_MS` za posamezno vrsto `thinking_delta`. | | `SSE_COALESCE_TEXT_MS` | `0` (izključeno) | Preglasitev `SSE_COALESCE_MS` za posamezno vrsto `text_delta`. | | `SSE_COALESCE_INPUT_JSON_MS` | `0` (izključeno) | Preglasitev `SSE_COALESCE_MS` za posamezno vrsto `input_json_delta`. | | `SSE_FRAME_COALESCE_MS` | `0` (izključeno) | Po izbiri: združi SSE-okvirje, posredovane v okviru N ms, v en zapis proti odjemalcu. Prvi okvir in končni okvirji (`[DONE]`, `message_stop`, `error`, `response.completed`/`failed`/`incomplete`) se nikoli ne zavlačujejo; ob vklopljenem združevanju ITL meri vrzeli med paketi. Uporablja `open-sse/utils/sseOutputSink.ts`. | | `SSE_STALL_WATCHDOG` | `timer` | Implementacija čuvaja za zastoj bajtov pri pretakanih odgovorih. `timer` za vsak kos podatkov z zagornje strani znova nastavi en časovnik (sproži se točno ob proračunu zastoja); `interval` ohranja eno preverjanje na tok s periodo `clamp(budget/4, 1s, 5s)`, tako da se zastoj sproži v okviru proračuna + periode. Uporablja `open-sse/utils/streamStallWatchdog.ts`. | | `STREAM_READINESS_TIMEOUT_MS` | `80000` | Čas do prejema prvega SSE-dogodka, ki ni ping. Podeduje `REQUEST_TIMEOUT_MS`, če je nastavljena. | | `STREAM_READINESS_MAX_TIMEOUT_MS` | `180000` | Največje prilagodljivo okno pripravljenosti prvega dogodka za velike, z orodji obtežene ali intenzivno razmišljevalne pretakane zahteve. | | `OMNIROUTE_AGENT_GOAL_POLICY_ENABLED` | `true` | Stikalo za takojšnji izklop hevristike `/goal`. Nastavite `false`/`0`/`off` za popolno onemogočanje zaznavanja — časovne omejitve pripravljenosti in obnovitve toka se zaradi telesa/glave zahteve nikoli ne povečajo, kar zmanjša ojačevanje časovnih omejitev, nadzorovano s strani odjemalca. | | `OMNIROUTE_AGENT_GOAL_READINESS_MAX_TIMEOUT_MS` | `600000` | Največje okno pripravljenosti prvega dogodka za zaznane zagonе agenta `/goal` ali zahteve, prisiljene z `x-omniroute-agent-goal`. | | `OMNIROUTE_AGENT_GOAL_STREAM_RECOVERY` | `true` | Samodejno omogoči zgodnjo obnovitev toka za zaznane zagonе agenta `/goal`. Nastavite `false`/`0`/`off` za onemogočanje vključitve, specifične za cilj. To lahko le DODA obnovitev poleg privzete nastavitve operaterja — nikoli ne preglasi izrecne izključitve prek `STREAM_RECOVERY_ENABLED`/nastavitev v bazi podatkov. | | `OMNIROUTE_CODEX_DROP_NONSTANDARD_EVENTS` | `true` | Odstrani nestandardne SSE-dogodke `codex.*` (npr. `codex.rate_limits`), ki zrušijo `responses.stream()` OpenAI SDK-ja z napako 502. Privzeto VKLOPLJENO (#11014). Nastavite `0`/`false`/`no`/`off`, da jih posredujete naprej. | | `OMNIROUTE_CODEX_APPSERVER_WS` | _(ni nastavljeno)_ | Po izbiri: prenos Codex app-server. Končna točka WebSocket (`ws://`/`wss://`) lokalnega stranskega procesa (sidecar) `codex app-server`. Ko je nastavljena skupaj z žetonom, se zahteve Codex usmerjajo prek JSON-RPC v stranski proces namesto v HTTP Responses API. Nastavljivo tudi za vsako povezavo posebej prek `providerSpecificData.codexAppServerUrl`. Uporablja `open-sse/executors/codex/appServerConfig.ts`. | | `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` | _(ni nastavljeno)_ | Vdelani žeton zmogljivosti (capability)/nosilni (bearer) žeton, predstavljen aplikacijskemu strežniku. Preglasitev za posamezno povezavo: `providerSpecificData.codexAppServerToken`. | | `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN_FILE` | _(ni nastavljeno)_ | Pot do datoteke, ki hrani žeton zmožnosti aplikacijskega strežnika (iz `codex app-server --ws-token-file`). Uporabi se, ko `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` ni nastavljen. Preglasitev na ravni povezave: `providerSpecificData.codexAppServerTokenFile`. | | `OMNIROUTE_CODEX_APPSERVER_CWD` | `/tmp` | Delovni imenik, v katerem se izvaja korak aplikacijskega strežnika. Preglasitev na ravni povezave: `providerSpecificData.codexAppServerCwd`. | | `OMNIROUTE_CODEX_APPSERVER_APPROVAL` | _(ni nastavljeno)_ | Pravilnik odobritve, posredovan koraku aplikacijskega strežnika (npr. `never`, `on-request`). Preglasitev na ravni povezave: `providerSpecificData.codexAppServerApprovalPolicy`. | | `OMNIROUTE_CODEX_APPSERVER_SANDBOX` | _(ni nastavljeno)_ | Pravilnik peskovnika, posredovan koraku aplikacijskega strežnika (npr. `read-only`, `workspace-write`, `danger-full-access`). Če ni nastavljen, izvajalec privzame `workspace-write` (utrjeno; prej `danger-full-access`). Preglasitev na ravni povezave: `providerSpecificData.codexAppServerSandbox`. | | `OMNIROUTE_CODEX_APPSERVER_AUTO_APPROVE` | `false` | Samodejno odobri lastne odobritvene pozive aplikacijskega strežnika (izvajanje ukazov/datotek/dovoljenj na gostitelju). Privzeto izklopljeno — pozivi se samodejno zavrnejo; klici orodij ogrodja niso prizadeti (potujejo po ločenem prehodu `item/tool/call`). Sprejema `true`/`1`/`yes`. Preglasitev na ravni povezave: `providerSpecificData.codexAppServerAutoApprove`. | | `FETCH_HEADERS_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Čas za prejem glav odgovora. | | `OMNIROUTE_FETCH_START_TIMEOUT_CAP_MS` | `110000` | Najdaljše čakanje na glave odgovora pri zahtevah s pretakanjem (ms). `0` onemogoči to zgornjo mejo; izrecna ponudnikova nastavitev `fetchStartTimeoutCapMs` ima prednost. | | `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` | `30000` (30s) | Najdaljše čakanje na začetek odgovora (ms) za vsak neposredni poskus brez posrednika. Ob časovni omejitvi se poskus enkrat ponovi na novem vtiču; nastavite `0`, da onemogočite omejitev in ohranite prejšnje vedenje. | | `OMNIROUTE_LOCAL_DIRECT_HEADERS_TIMEOUT_MS` | `300000` (5 min) | Spodnja meja čakanja na začetek odgovora (ms) za neposredne poskuse brez posrednika, katerih ciljni gostitelj je zasebni/LAN/loopback (na primer `localhost`, `host.docker.internal`, `192.168.x.x`), tako da hladni zagon izvorne Ollame ni prekinjen zaradi zgornje 30-sekundne privzete vrednosti. Deluje kot spodnja meja: dejansko čakanje je večja od te vrednosti in `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS`; `0` ali neveljavna vrednost odstrani lokalno spodnjo mejo. Oddaljeni gostitelji niso prizadeti. | | `OMNIROUTE_DIRECT_RESPONSE_RETRY_TIMEOUT_MS` | `600000` (10 min) | Zgornja meja (ms) za PONOVNI poskus na novem vtiču po zgornji časovni omejitvi začetka odgovora združenega poskusa (#13703). Velja le, kadar je klicatelj že priložil svoj signal roka (razrešena kaskada povezava/model/ponudnik/`FETCH_TIMEOUT_MS`); ta signal je dejanska omejitev in se na predvideni poti sproži prvi, zato je to velikodušna rezervna meja in ne fiksna zgornja meja — brez nje bi ponovni poskus ponovno uporabil isto kratko okno `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` kot združeni poskus in zdrave sklepalne modele s počasnim TTFB zavrnil s kodo 504. Nikoli ni dovoljena pod fiksno spodnjo mejo zgoraj; kadar klicatelj sploh ne poda signala roka, ponovni poskus ohrani fiksno spodnjo mejo nespremenjeno. | | `FETCH_BODY_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Čas za prejem celotnega telesa odgovora. | | `FETCH_CONNECT_TIMEOUT_MS` | `30000` | Časovna omejitev vzpostavitve TCP-povezave. | | `FETCH_KEEPALIVE_TIMEOUT_MS` | `4000` | Časovna omejitev nedejavnosti keep-alive vtiča. | | `TLS_CLIENT_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | Časovna omejitev posrednika TLS-odtisov (wreq-js). | | `TLS_FIRST_BYTE_WATCHDOG_MS` | `10000` | Omejuje čas do prvega bajta posebej na telesu transporta TLS-odtisa wreq-js; `TLS_CLIENT_TIMEOUT_MS` sam ne more zaznati zastalega telesa, saj se razreši takoj, ko prispejo glave (#12656). Ob časovni omejitvi se bralnik wreq prekliče in preide na neposredni/posredniški dispečer; `0` onemogoči nadzornika. | | `RESPONSES_FIRST_BYTE_TIMEOUT_MS` | `15000` | Samo izvajalec OpenCode, in le ko je zastavica funkcije `OPENCODE_RESPONSES_STALL_ROTATION` vklopljena (privzeto izklopljena): omejuje čakanje na prvi bajt telesa pretakanega odgovora Responses po njegovih glavah (#13484). Pretok Responses se odpre z `response.created`, zato tišina po tem oknu pomeni zastoj: račun se ohladi in zahteva enkrat preide na naslednji račun; drugi zastoj hitro spodleti. `0` onemogoči zaščito tudi ob vklopljeni zastavici. | | `OPENCODE_RESPONSES_HEADERS_WAIT_MS` | `0` (= izklopljeno) | Samo izvajalec OpenCode: omejuje čakanje na glave odgovora navzgornega strežnika pri pretakanem klicu Responses, ko je na voljo še drug račun — zahteva v čakalni vrsti preneha čakati in gre naprej, namesto da bi zadrževala celotno okno glav. Prizadeti so le pretakani klici Responses (pretok Responses se odpre z `response.created`, zato tišina tam pomeni čakalno vrsto, ne ustvarjanja); dokončanja klepeta in klici brez pretakanja ostanejo nedotaknjeni, okno pa le skrajša dejansko zgornjo mejo začetka pridobivanja, nikoli je ne podaljša. Predlagana vrednost ob omogočitvi: `30000`. `0` onemogoči. | | `OPENCODE_RESPONSES_HEADERS_WAIT_MAX_ROTATIONS` | `2` | Samo izvajalnik OpenCode: kolikokrat na zahtevo se lahko zgoraj navedena meja čakanja na glave premakne na naslednji račun. Zadnji preostali račun vedno ohrani celotno okno glav. | | `OPENCODE_PARK_AND_RESUME` | `false` | Samo izvajalnik OpenCode: parkira zahtevo s srčnim utripom po ponovljenih prehodnih napakah 429 (ali svežem označevalniku obremenitve nabora), nato ponovi eno omejeno stopnjo z največ 3 zaporednimi računi, namesto da bi razpršil celotno floto (#13924). Privzeto izklopljeno: vsaka napaka 429 preklopi na naslednji račun natanko tako kot prej. | | `OPENCODE_PARK_REPLAY_SERVE_SETASIDE` | `false` | Samo izvajalnik OpenCode: ko pomnilnik zavrnitev posrednika odloži vse račune s poteklim ohlajanjem v stopnji ponovitve funkcije park-and-resume, jih vseeno postreže, namesto da ne bi ponovil ničesar (#14851, nadaljevanje #14750). Privzeto izklopljeno: stopnja ponovitve je v tem primeru prazna, kot pred #14750. | | `STREAM_READINESS_STALL_RETRY` | `false` | Samo pretakani klepet: ko se prvo telo izvornega toka ustavi, preden proizvede uporaben dogodek, izda en omejen drugi poskus po isti usmerjevalni poti z istim proračunom pripravljenosti in brez kazni za račun. Privzeto izklopljeno: ustavljeno prvo telo spodleti zahtevo brez ponovnega poskusa. | | `OPENCODE_POOL_RESELECT` | `false` | Samo izvajalnik OpenCode: po napaki 429 od ponudnika, razvrščenega po izhodnih koših, na računu brez posrednika v kontekstu okolnega nabora prosi nabor povezav za drugega člana za naslednji poskus, namesto da bi ponovno poskusil isti izhodni naslov. Razvršča, nikoli ne izključuje: izčrpan nabor ohrani trenutno vedenje. Privzeto izklopljeno: vsaka napaka 429 preklopi na naslednji račun natanko tako kot prej. | | `OPENCODE_POOL_STRAIN_MARKER_PATH` | _(ni nastavljeno)_ | Samo izvajalnik OpenCode: prepis poti označevalnika obremenitve nabora, ki se prebere pred parkiranjem (`{since, reason, ttl_s}`, privzeto `/tmp/opencode-pool-strain.json`, #13924). Svež označevalnik sproži parkiranje brez ponovnega štetja; če je odsoten ali zastarel, se vrne na števec izbruhov. | | `API_BRIDGE_PROXY_TIMEOUT_MS` | `30000` | Časovna omejitev posredniškega skoka za zahteve mostu `/v1`. | | `FIRECRAWL_BASE_URL` | `https://api.firecrawl.dev` | Usmeri izvajalnik spletnega pridobivanja Firecrawl na samogostujočo instanco (ključ API je izven oblaka izbiren). | | `FIRECRAWL_TIMEOUT_MS` | `30000` | Časovna omejitev na zahtevo za izvajalnik spletnega pridobivanja Firecrawl. | | `TAVILY_BASE_URL` | _(ni nastavljeno)_ | Osnovni URL za pridobivalec kvote Tavily `/usage` (Omejitve ponudnika); prezrt, ko kaže na `api.tavily.com`. Če ni nastavljen, se vrne na osnovni URL povezave. | | `API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS` | `300000` | Skupna časovna omejitev strežniške zahteve za most. | | `API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS` | `60000` | Čas za pošiljanje odzivnih glav prek mostu. | | `API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS` | `5000` | Časovna omejitev nedejavnosti keep-alive mostu. | | `API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS` | `0` | Časovna omejitev surovega vtičnika (0 = onemogočeno). | | `SHUTDOWN_TIMEOUT_MS` | `30000` | Obdobje milosti ob SIGTERM/SIGINT pred prisilnim izhodom. | | `OMNIROUTE_DEFAULT_FETCH_TIMEOUT_MS` | `120000` | Rezervna vrednost, ki jo uporabi `src/shared/utils/fetchTimeout.ts`, ko `FETCH_TIMEOUT_MS` ni nastavljen. | | `OMNIROUTE_PROVIDER_PROBE_TIMEOUT_MS` | `8000` | Časovna omejitev (ms) za prednastavitvi `validationRead` in `modelsProbe` v `src/shared/network/safeOutboundFetch.ts`. Povečajte za počasne končne točke (Cerebras, Cloudflare AI, Groq), da preprečite nihanje med stanjema aktivno/napaka na nadzorni plošči. Za neveljavne (<1000) ali neštevilske vrednosti se vrne na 8000 ms. | | `OMNIROUTE_RELAY_FETCH_TIMEOUT_MS` | `25000` | Časovna omejitev pridobivanja, specifična za relej, v `open-sse/utils/proxyFetch.ts` (#9158). Zataknjen relej mora spodleteti pred časovno omejitvijo odjemalca/agenta (~30 s), da klicatelji vidijo napako, specifično za relej, namesto splošne časovne omejitve izvornega toka. Omejen na `29000`, da se vedno sproži prvi. | | `OMNIROUTE_RETRY_BACKOFF_MS` | `10` | Skupni odmik ponovitve za poti neposredno/relej/posrednik z enkratno ponovitvijo v `open-sse/utils/proxyFetch.ts` (#9158). `0` = takojšnja ponovitev. | | `OMNIROUTE_CLAUDE_TLS_TIMEOUT_MS` | `60000` | Izvorna časovna omejitev zahteve wreq-js (`claudeTlsClient.ts`). | | `OMNIROUTE_CLAUDE_TLS_GRACE_MS` | `10000` | Absolutna milost trdega roka JS, dodana povrh izvorne časovne omejitve. | | `OMNIROUTE_PPLX_TLS_TIMEOUT_MS` | `30000` | Izvorna časovna omejitev zahteve wreq-js (`perplexityTlsClient.ts`). | | `OMNIROUTE_PPLX_TLS_GRACE_MS` | `10000` | Absolutna dodatna rezerva trdega roka JS, dodana izvorni časovni omejitvi. | | `OMNIROUTE_PPLX_SEARCH_HINT` | `0` (off) | Kličočemu sistemskemu sporočilu doda »Vgrajeno imaš spletno iskanje. Na vprašanja odgovarjaj neposredno z uporabo rezultatov iskanja.« (`perplexity-web/protocol.ts`). Privzeto izklopljeno — Perplexity vseeno išče, stavek pa se pri odjemalcih za kodiranje pojavlja v odgovorih kot meta-komentar. Za obnovitev nastavite `1`/`true`/`yes`/`on`. | | `OMNIROUTE_GROK_TLS_TIMEOUT_MS` | `60000` | Izvorna časovna omejitev zahteve wreq-js (`grokTlsClient.ts`). | | `OMNIROUTE_GROK_TLS_GRACE_MS` | `10000` | Absolutna dodatna rezerva trdega roka JS, dodana izvorni časovni omejitvi. | | `OMNIROUTE_NOTION_TLS_TIMEOUT_MS` | `30000` | Izvorna časovna omejitev zahteve wreq-js (`notionTlsClient.ts`); `notion-web` jo za posamezno zahtevo pri dolgih generiranjih dvigne na `180000`. | | `OMNIROUTE_NOTION_TLS_GRACE_MS` | `10000` | Absolutna dodatna rezerva trdega roka JS, dodana izvorni časovni omejitvi. | | `OMNIROUTE_BROWSER_POOL` | `on` | Skupna zaloga brskalnikov Playwright za klepet s spletnimi piškotki, podprt z brskalnikom (`browserPool.ts`); za onemogočitev nastavite `off`. | | `OBSCURA_BIN` | `auto-detect` | Pot do binarne datoteke `obscura`, ki jo zaloga brskalnikov in izvajalec Cloudflare Playground uporabljata kot primarni pogon (`open-sse/services/obscura.ts`); če ni nastavljena, se samodejno zazna iz sistemske spremenljivke PATH. | | `OBSCURA_CDP_ENDPOINT` | _(ni nastavljeno)_ | Usmeri na že zagnano instanco Obscura (`http://host:port`) namesto zagona nove; modul tega procesa ne upravlja (`open-sse/services/obscura.ts`). | | `OBSCURA_PORT` | `random free port` | Izrecna vrata za zagnani `obscura serve`; če niso nastavljena, se prosta vrata izberejo samodejno (`open-sse/services/obscura.ts`). | | `WEB_COOKIE_USE_BROWSER` | `0` | Zahtevo klepeta s spletnimi piškotki preusmeri na pot, podprto z brskalnikom (`browserBackedChat.ts`); `1` za omogočitev. | | `KIMI_WEB_BASE_URL` | `https://www.kimi.ai` | Osnovni URL za izvajalec Kimi Web (mednarodni kimi.ai Connect-RPC) (`kimi-web.ts`); preglasite samo za zrcalne/proxy končne točke. | | `KIMI_WEB_CHAT_URL` | `/apiv2/kimi.gateway.chat.v1.ChatService/Chat` | Polna končna točka klepeta za izvajalec Kimi Web (`kimi-web.ts`). | | `OMNIROUTE_LOGIN_BROWSER_PATH` | _(samodejno zaznano)_ | Pot do sistemske izvršljive datoteke Chrome/Edge za interaktivno prijavo v brskalniku Adobe Firefly (`adobeFireflyBrowserLogin.ts`); preglasi samodejno zaznavanje glede na operacijski sistem. | | `OMNIROUTE_STANDALONE_DIR` | _.build/ izhod standalone_ | Preglasitev izhodnega imenika standalone ob izgradnji, ki ga uporabi korak kolokacije po izgradnji (`scripts/build/colocate-standalone.mjs`); orodje za izgradnjo, ne za izvajanje. | Poskusi ciljev kombinacije prevzamejo razrešeno časovno omejitev zahteve proti višnjemu strežniku (`FETCH_TIMEOUT_MS` oziroma `REQUEST_TIMEOUT_MS`, kadar ta določa privzeto vrednost za fetch). `targetTimeoutMs` v kombinaciji, privzetih vrednostih kombinacije ali preglasitvi ponudnika nastavite le za pospešitev nadomestnega preklopa kombinacije; vrednosti nad trenutno časovno omejitvijo višnjega strežnika se omejijo na to omejitev. `comboTimeoutMs` je ločen časovni proračun celotne kombinacije (dejanski čas) čez vse cilje preklopa ob odpovedi. Pustite ga nenastavljenega ali `0`, da ohranite neomejeno iteracijo (velja pa še vedno 10-minutna trdo kodirana zaustavitev ob zatikanju v `comboPredicates.ts`). Pozitivna vrednost to varovalo za kombinacijo nadomesti. `comboTimeoutMs` naj bo daljši od `targetTimeoutMs`, da ima preklop ob odpovedi čas tudi po počasnem prvem cilju. ### Pragovi odklopnika Nastavitev odklopnika na ravni ponudnika. Privzete vrednosti odražajo skalirane vrednosti, ki se uporabljajo od različice v3.6 za 500+ povezav. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ------------------------------------------------------------- | --------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_THRESHOLD` | `8` | `open-sse/config/constants.ts` | Prag zaporednih neuspehov za OAuth ponudnike, preden se prekinjevalnik sproži. | | `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_RESET_MS` | `60000` | `open-sse/config/constants.ts` | Okno ponastavitve (ms) za prekinjevalnik OAuth ponudnika. | | `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_THRESHOLD` | `12` | `open-sse/config/constants.ts` | Prag zaporednih neuspehov za ponudnike z API ključem. | | `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_RESET_MS` | `30000` | `open-sse/config/constants.ts` | Okno ponastavitve (ms) za prekinjevalnik ponudnika z API ključem. | | `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_THRESHOLD` | `2` | `open-sse/config/constants.ts` | Prag zaporednih neuspehov za lokalne ponudnike (Ollama, LM Studio, ...). | | `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_RESET_MS` | `15000` | `open-sse/config/constants.ts` | Okno ponastavitve (ms) za prekinjevalnik lokalnega ponudnika. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_THRESHOLD` | `10` | `open-sse/config/constants.ts` | Prekinjevalnik na ravni ponudnika: število neuspehov znotraj okna, preden celoten OAuth ponudnik preide v ohlajanje. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_WINDOW_MS` | `900000` | `open-sse/config/constants.ts` | Prekinjevalnik na ravni ponudnika: drseče okno štetja neuspehov (ms) za OAuth ponudnike. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_COOLDOWN_MS` | `300000` | `open-sse/config/constants.ts` | Prekinjevalnik na ravni ponudnika: ohlajanje (ms), ko je dosežen prag OAuth ponudnika. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_DEGRADATION_THRESHOLD` | `5` | `open-sse/config/constants.ts` | OAuth ponudnik preide v stanje DEGRADED pri tem številu neuspehov. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_MAX_BACKOFF_MULTIPLIER` | `8` | `open-sse/config/constants.ts` | Največji multiplikator eskalacije resetTimeout za OAuth ponudnika. | | `OMNIROUTE_PROVIDER_BREAKER_OAUTH_BACKOFF_ESCALATION_COUNT` | `2` | `open-sse/config/constants.ts` | OAuth ponudnik eskalira po tem številu odprtih ciklov. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_THRESHOLD` | `15` | `open-sse/config/constants.ts` | Prekinjevalnik na ravni ponudnika: število neuspehov znotraj okna, preden celoten ponudnik z API ključem preide v ohlajanje. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_WINDOW_MS` | `1800000` | `open-sse/config/constants.ts` | Prekinjevalnik na ravni ponudnika: drseče okno štetja neuspehov (ms) za ponudnike z API ključem. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_COOLDOWN_MS` | `600000` | `open-sse/config/constants.ts` | Prekinjevalnik na ravni ponudnika: ohlajanje (ms), ko je dosežen prag ponudnika z API ključem. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_DEGRADATION_THRESHOLD` | `7` | `open-sse/config/constants.ts` | Ponudnik z API ključem preide v stanje DEGRADED pri tem številu neuspehov. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_MAX_BACKOFF_MULTIPLIER` | `4` | `open-sse/config/constants.ts` | Največji multiplikator eskalacije resetTimeout za ponudnika z API ključem. | | `OMNIROUTE_PROVIDER_BREAKER_API_KEY_BACKOFF_ESCALATION_COUNT` | `3` | `open-sse/config/constants.ts` | Ponudnik z API ključem eskalira po tem številu odprtih ciklov. | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_THRESHOLD` | `2` | `open-sse/config/constants.ts` | Prekinjevalnik na ravni ponudnika: število neuspehov, preden celoten lokalni ponudnik preide v ohlajanje. | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_WINDOW_MS` | `300000` | `open-sse/config/constants.ts` | Prekinjevalnik na ravni ponudnika: drseče okno štetja neuspehov (ms) za lokalne ponudnike. | | `OMNIROUTE_PROVIDER_BREAKER_LOCAL_COOLDOWN_MS` | `60000` | `open-sse/config/constants.ts` | Prekinjevalnik na ravni ponudnika: ohlajanje (ms), ko je dosežen prag lokalnega ponudnika. | | `OMNIROUTE_API_KEY_COOLDOWN_MS` | `60000` | `open-sse/services/apiKeyRotator.ts` | Ohlajanje na ključ (ms), ki ga uporabi rotacija več API ključev, ko odgovor 429 z zgornjega toka ne vsebuje `Retry-After` (#14573). Nepozitivne ali neštevilske vrednosti se vrnejo na privzeto. | | `PIN_DROP_BACKOFF_LEVEL` | `2` | `open-sse/services/combo.ts` | Globina povratnega čakanja (backoff), pri kateri se ponudnik pripetega elementa predpomnilnika konteksta šteje za trajno nezdravega in se pripetje opusti za preklop v rezervo. | | `PIN_DROP_GRACE_MS` | `20000` | `open-sse/services/combo.ts` | Okno proti nihanju (ms), ki dopušča kratka prehodna ohlajanja, preden se pripetje predpomnilnika konteksta opusti. | ### Scenariji | Scenarij | Konfiguracija | | ---------------------------------------- | -------------------------------------------------- | | **Dolgotrajno generiranje kode** | `REQUEST_TIMEOUT_MS=900000` (15 min) | | **Omejena skupna življenjska doba toka** | `STREAM_ACTIVE_TIMEOUT_MS=1260000` (21 min) | | **Hitra odpoved za produkcijski API** | `API_BRIDGE_PROXY_TIMEOUT_MS=10000` | | **Modeli z razširjenim razmišljanjem** | `STREAM_IDLE_TIMEOUT_MS=300000` (5 min med delčki) | --- ## 16. Beleženje Sistem za beleženje zapisuje tako v stdout kot v rotirane dnevniške datoteke. Vsa konfiguracija se bere iz `src/lib/logEnv.ts`. | Spremenljivka | Privzeto | Opis | | ----------------------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `APP_LOG_LEVEL` | `info` | Najnižja raven beleženja: `debug`, `info`, `warn`, `error`. | | `APP_LOG_FORMAT` | `text` | Oblika izpisa: `text` (človeku berljiva) ali `json` (strukturirana). | | `APP_LOG_TO_FILE` | `true` | Zapisovanje dnevnikov v datoteko poleg stdout. | | `APP_LOG_FILE_PATH` | `logs/application/app.log` | Pot do dnevniške datoteke (glede na koren projekta ali `DATA_DIR`). | | `APP_LOG_MAX_FILE_SIZE` | `50M` | Največja velikost datoteke pred rotacijo. Sprejme: `50M`, `1G`, `512K` ali navadne bajte. | | `APP_LOG_RETENTION_DAYS` | `7` | Število dni hranjenja rotiranih aplikacijskih dnevniških datotek. | | `APP_LOG_MAX_FILES` | `20` | Največje število varnostnih kopij rotiranih dnevniških datotek. | | `CALL_LOG_RETENTION_DAYS` | `7` | Število dni hranjenja zapisov dnevnika zahtev/klicev v podatkovni zbirki. | | `CALL_LOG_MAX_ENTRIES` | `10000` | Največje število zapisov dnevnika klicev v medpomnilniku v pomnilniku. | | `CALL_LOGS_TABLE_MAX_ROWS` | `100000` | Največje število vrstic v tabeli SQLite `call_logs` pred čiščenjem. | | `ENABLE_REQUEST_LOGS` | _(ni nastavljeno)_ | Vsili vklop ali izklop podrobnega beleženja zahtev in preglasi nastavitev nadzorne plošče. | | `MAX_PENDING_REQUEST_AGE_MS` | `3600000` (1 ura) | Največja starost osirotelih zapisov dnevnika aktivnih zahtev pred čiščenjem v pomnilniku. | | `CALL_LOG_PIPELINE_CAPTURE_STREAM_CHUNKS` | `false` | Shrani dele toka v artefakte cevovoda, ko je `call_log_pipeline_enabled=true`. Izbirno (`true`) — privzeto izklopljeno zaradi varčevanja s prostorom na disku. | | `CALL_LOG_PIPELINE_MAX_SIZE_KB` | `512` | Največja velikost artefakta dnevnika klicev cevovoda v KB, ko je `call_log_pipeline_enabled=true`. | | `PROXY_LOGS_TABLE_MAX_ROWS` | `100000` | Največje število vrstic v tabeli SQLite `proxy_logs` pred čiščenjem. | | `PROXY_LOG_INCLUDE_IPS` | `false` | Vključi naslove IP odjemalca/izhoda in predpone računov v konzolne dnevnike `[ProxyEgress]`. Zapisi dnevnika posredniškega strežnika na nadzorni plošči/v podatkovni zbirki ohranijo vse podrobnosti. | | `PROXY_LOG_FIRST_CHUNK_TIMING` | `false` | Nastavite na `"true"` ali `"1"`, da se v vrstice dnevnika posredniškega strežnika zabeleži `first_chunk_ms` (čas od začetka pošiljanja do prvega uporabnega bajta telesa). Vsako telo iz nadrejenega strežnika ovije v leni prehodni tok in posodobi vrstico, ko prispe bajt; privzeto je izklopljeno, zato odgovori prehajajo nespremenjeni. | | `APP_LOG_ROTATION_CHECK_INTERVAL_MS` | `60000` (1 min) | Kako pogosto `src/lib/logRotation.ts` znova preveri velikost aktivne dnevniške datoteke. | | `CHAT_LOG_TEXT_LIMIT` | `65536` | Največja dolžina niza, ohranjenega v artefaktih dnevnika klepeta (privzeto 64 KB). | | `CHAT_LOG_ARRAY_TAIL_ITEMS` | `128` | Število elementov polja, ohranjenih od konca pri krajšanju vsebin dnevnika klepeta. | | `CHAT_LOG_MAX_DEPTH` | `6` | Največja globina gnezdenja, preden se vsebine dnevnika klepeta skrajšajo. | | `CHAT_LOG_MAX_OBJECT_KEYS` | `80` | Največje število ključev objekta, ohranjenih v vsebinah dnevnika klepeta (0 = neomejeno). | | `CHAT_LOG_MAX_BODY_KB` | `1024` | Velikost celotnega telesa zahteve/odgovora (KB), nad katero je celotna kopija nadomeščena z osnovnim povzetkom. Povečajte to vrednost, če je pri dolgih agentskih pogovorih na nadzorni plošči namesto dejanskih sporočil prikazan nadomestni zapis. | | `CHAT_DEBUG_FILE` | `false` | Ko je nastavljeno na true, `serializeArtifactForStorage` preskoči krajšanje glede na velikost. Samo za razhroščevanje. | --- ## 17. Optimizacija pomnilnika | Spremenljivka | Privzeto | Opis | | ----------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `OMNIROUTE_MEMORY_MB` | _samodejno_ (bare metal); **`1024` v sliki Docker** | **Priporočena** meja kopice (heap) V8 za Docker/samostojno namestitev (MB). Če ni nastavljena, se dinamično umeri (~35 % sistemskega RAM-a, omejeno na `[512, 4096]`); `512` je le spodnja meja, kadar skupnega pomnilnika ni mogoče prebrati. Pri `run-standalone.mjs` (Docker CMD) se **izrecna** vrednost doda kot `--max-old-space-size` in **prevlada** nad nasprotujočo zastavico kopice v NODE_OPTIONS (pravilo zadnje zastavice V8). `omniroute serve` še vedno raje uporabi obstoječo kopico NODE_OPTIONS (#5238). Ne nastavljajte obeh na različni vrednosti — proces zabeleži opozorilo, ki navede obe vrednosti in zmagovalno. **Uradna slika Docker vedno nastavi `1024`, zato umerjanje tam nikoli ne teče.** Coding-agent `/v1/responses` potrebuje `8192`–`12288` plus rezervo cgroup — glejte [Vodnik po Dockerju — RAM med izvajanjem](../guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents). | | `OMNIROUTE_RSS_PRESSURE_MB` | _samodejno_ (`max(3072, 2 × OMNIROUTE_MEMORY_MB)`; izklopljeno, kadar `OMNIROUTE_MEMORY_MB` ni nastavljen) | `open-sse/utils/resourcePressure.ts` | Absolutna varovalka RSS procesa (MB) za izvorni/zunanji pomnilnik, ki ga V8 `heapUsed` ne vidi; nad njo novi zahtevki prejmejo 503 `resource_pressure`. RSS po skoku redko pade, zato jo kombinirajte z `OMNIROUTE_PRESSURE_SELF_RESTART`. | | `PROMPT_CACHE_MAX_SIZE` | `50` | Največje število predpomnjenih vnosov sistemskih pozivov. | | `PROMPT_CACHE_MAX_BYTES` | `2097152` (2 MB) | Največja skupna velikost predpomnilnika pozivov. | | `PROMPT_CACHE_TTL_MS` | `300000` (5 min) | TTL vnosa predpomnilnika pozivov. | | `SEMANTIC_CACHE_MAX_SIZE` | `100` | Največje število predpomnjenih odgovorov s temperature=0. | | `SEMANTIC_CACHE_MAX_BYTES` | `4194304` (4 MB) | Največja skupna velikost semantičnega predpomnilnika. | | `SEMANTIC_CACHE_TTL_MS` | `1800000` (30 min) | TTL vnosa semantičnega predpomnilnika. | | `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | Koreni lokalnega korpusa, ki hkrati ohranijo živ indeks v pomnilniku (`src/lib/localCorpus/configured.ts`). LRU: ob dosegi meje se indeks najdlje neuporabljenega korena odstrani in obnovi ob njegovi naslednji poizvedbi. Omejeno na najmanj `1`; neštevilska vrednost se vrne na privzeto. | | `STREAM_HISTORY_MAX` | `50` | Največje število nedavnih dogodkov pretoka v medpomnilniku živega pogleda nadzorne plošče. | | `CONTEXT_LENGTH_DEFAULT` | _(ni nastavljeno)_ | Globalna nadomestitev dolžine konteksta (žetoni) za vsakega ponudnika, ki nima spremenljivke `CONTEXT_LENGTH_`. Ko je nastavljena, **nadomesti** katalog, nadomestitev nadzorne plošče in vrednosti registra za te ponudnike; ko ni nastavljena, OmniRoute uporabi svojo vgrajeno verigo, katere zadnje pribežališče je `128000`. Glejte [Dolžina konteksta po ponudniku](#per-provider-context-length-context_length_provider). | | `USAGE_TOKEN_BUFFER` | `100` | Dodatna rezerva žetonov, pridržana pri sledenju kvot uporabe. | ### Dolžina konteksta po ponudniku (`CONTEXT_LENGTH_`) `open-sse/services/contextManager.ts` (`getEnvOverride()` / `resolveTokenLimit()`) bere tudi obliko **za posameznega ponudnika**, katere ime se med izvajanjem zgradi iz ID-ja ponudnika, zato je ni mogoče navesti po vrsticah v zgornji tabeli ali v `.env.example`. **Ime.** `CONTEXT_LENGTH_`, kjer je `` ID ponudnika, zapisan z velikimi črkami, pri čemer je vsak znak zunaj `A-Z` / `0-9` nadomeščen z `_`. ID ponudnika je kanonični ID po razrešitvi vzdevkov (del `provider` v nizu `provider/model`, ko je kratki vzdevek razrešen). Vozlišča, združljiva z OpenAI ali Anthropic po meri, uporabljajo svoj ustvarjeni ID vozlišča, zato je UUID del imena spremenljivke. Vrednost je pozitivno celo število žetonov; vse drugo (prazno, `0`, negativno, neštevilčno) je prezrto in razreševanje se nadaljuje z naslednjim korakom. | ID ponudnika | Ime spremenljivke | | ----------------------------------------------------------- | -------------------------------------------------------------------------- | | agentrouter | CONTEXT_LENGTH_AGENTROUTER | | openrouter | CONTEXT_LENGTH_OPENROUTER | | openai-compatible-chat-0f8e2c1a-5b7d-4e3f-9a6c-2d1b8e4f7a90 | CONTEXT_LENGTH_OPENAI_COMPATIBLE_CHAT_0F8E2C1A_5B7D_4E3F_9A6C_2D1B8E4F7A90 | **Prednost.** Za par `provider/model` zmaga prvi korak, ki vrne vrednost: 1. `CONTEXT_LENGTH_` za tega ponudnika. 2. `CONTEXT_LENGTH_DEFAULT` (globalna okoljska preglasitev). 3. Okno na ravni modela: trajna preglasitev konteksta (nastavljena na nadzorni plošči ali samodejno pripeta s strani usklajevalnika odkrivanja, glej `CONTEXT_WINDOW_RECONCILE_INTERVAL`), sicer sinhronizirana vrednost kataloga / models.dev. 4. Vrednost `defaultContextLength` iz registra ponudnika. 5. Hevristike imena modela (`claude` 200000, `gemini` 1000000, `gpt` / `o1` / `o3` / `o4` / `codex` 400000). 6. Vgrajene privzete vrednosti po posameznih ponudnikih, nato `128000`. Oba okoljska koraka veljata za **celotnega ponudnika**: vsak model tega ponudnika dobi isto omejitev in preglasita preglasitve na ravni modela z nadzorne plošče. Če potrebuje drugačno okno le en model ponudnika, raje uporabite preglasitev na ravni modela na nadzorni plošči. **Obseg.** Ta veriga poganja preverjanje kontekstnega okna ob zahtevi (zavrnitev `context_length_exceeded` / "Input exceeds context window" v `open-sse/handlers/chatCore.ts`), proračune stiskanja pozivov in omejitve konteksta kombinacij. Vrednost `context_length`, ki jo oglašuje `GET /v1/models`, lahko še vedno izhaja iz metapodatkov kataloga ali registra in ni zagotovljeno, da odraža okoljsko preglasitev. **Primer.** Ponudnik, katerega model sprejme okno z 1 050 000 žetoni, medtem ko katalog poroča o 128 000: ```dotenv CONTEXT_LENGTH_AGENTROUTER=1050000 ``` Po spremembi znova zaženite strežnik: vrednost se prebere iz okolja strežniškega procesa. V **namizni aplikaciji** strežnik teče kot podrejeni proces in ne vidi sistemske spremenljivke, nastavljene po zagonu aplikacije; vrstico vstavite v datoteko `.env`, ki jo aplikacija naloži (vrstni red iskanja v [Vodnik za Electron: Iskanje okoljske datoteke](../guides/ELECTRON_GUIDE.md#environment-file-lookup)), nato aplikacijo popolnoma zaprite in znova zaženite. ### Stiskanje | Spremenljivka | Privzeto | Opis | | ------------------------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | ni nastavljeno | Zaupaj projektni datoteki `.rtk/filters.json` brez zgoščene vrednosti `.rtk/trust.json`. Uporabljajte samo v nadzorovanem lokalnem razvoju. | ### Pomnilniški mehanizem (načrt 21) ### Obremenitev zanke dogodkov zaradi pomnilnika, veščin in osveževanja žetonov (#10349) OmniRoute je **en sam proces Node**. Izvleček/pridobivanje pomnilnika, vbrizgavanje veščin in osveževanje žetonov ponudnika tečejo na **isti zanki dogodkov** kot `GET /healthz` in nadzorna plošča. Niso delovna nit. | Opravilo | Koda | Privzeto | Nadzor operaterja | | ---------------------------------- | ---------------------------------- | ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | Izvleček / pridobivanje pomnilnika | `src/lib/memory/` | Nadzorna plošča **memoryEnabled** (privzeto vklopljeno) | Izklopite v **Nastavitve → Pomnilnik**. Poleg onemogočanja funkcije v nastavitvah ni ločene okoljske spremenljivke za izklop. | | Vbrizgavanje veščin | `src/lib/skills/injection.ts` | Nadzorna plošča **skillsEnabled** (privzeto vklopljeno) | Izklopite v **Nastavitve → Pomnilnik/Veščine** (`skillsEnabled`). Spodnje nastavitve peskovnika le omejujejo izvajanje, ko je vbrizgavanje že vklopljeno. | | Osveževanje žetonov | `src/sse/services/tokenRefresh.ts` | Vklopljeno za povezane OAuth/spletne ponudnike | Odklopite ponudnika ali pustite, da žetoni ostanejo veljavni; danes ni okoljske spremenljivke `TOKEN_REFRESH=0`. | Če je `/healthz` počasen na sicer mirnem sistemu, najprej onemogočite pomnilnik + veščine, nato preverite obremenitev kataloga/stiskanja (#10303, #9685). Te funkcije sicer oddajo nadzor na točkah `await`, a se vseeno potegujejo za eno samo nit. Nastavitveni parametri plasti vdelav, vektorske shrambe in ponovnega razvrščanja za vztrajni pomnilniški podsistem (`src/lib/memory/`). | Spremenljivka | Privzeto | Opis | | ------------------------------------ | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MEMORY_EMBEDDING_CACHE_TTL_MS` | `300000` (5 min) | TTL za predpomnilnik vdelav v pomnilniku (na podpis vira/modela/dimenzije). | | `MEMORY_EMBEDDING_CACHE_MAX` | `1000` | Največje število LRU vnosov, shranjenih v predpomnilniku vdelav. | | `MEMORY_TRANSFORMERS_MODEL` | `Xenova/all-MiniLM-L6-v2` | ID repozitorija HF za opcijski lokalni MiniLM cevovod `@huggingface/transformers` (~23 MB int8, ~400 MB RAM). | | `MEMORY_STATIC_MODEL` | `minishlab/potion-base-8M` | ID repozitorija HF za statični vdelovalnik potion/Model2Vec s pregledovalno tabelo. Po potrebi se prenese v imenik predpomnilnika. | | `MEMORY_STATIC_CACHE_DIR` | `/embeddings` | Imenik za predpomnjenje datotek statičnega modela potion. Če ni nastavljen, privzeto pod `DATA_DIR`. | | `HF_HUB_ENDPOINT` | `https://huggingface.co` | Preglasi osnovni URL Hugging Face Hub, ki ga uporablja `staticPotion.ts` (npr. zrcalna končna točka za izolirane postavitve). | | `MEMORY_VEC_TOP_K` | `20` | Privzeti top-K, ki ga uporablja vektorsko iskanje brute-force `sqlite-vec` znotraj `src/lib/memory/vectorStore.ts`. | | `MEMORY_RRF_K` | `60` | Konstanta `k` za Reciprocal Rank Fusion pri hibridnem pridobivanju FTS5 + vektorskem (recept sqlite-vec). | | `VECTOR_STORE_DISABLE_VEC` | `false` | Preskusna/diagnostična vmesna točka v `getVectorStore()` (`src/lib/memory/vectorStore.ts`): če je `true`, prisili vektorsko shrambo na `null` (simulira okolje v oblaku/WASM brez `sqlite-vec`) in pridobivanje pomnilnika degradira na iskanje po ključnih besedah FTS5. V produkciji pustite nenastavljeno. | | `NOTION_API_KEY` | _(nenastavljeno)_ | API ključ za ozadje Notion (uporablja ga prednastavitev znanega ozadja v `genericBackend.ts`). | | `NOTION_API_URL` | `https://api.notion.com/v1` | Osnovni URL za Notion API (lahko se pregasi za samogostujoče alternative Notion). | | `OBSIDIAN_API_KEY` | _(nenastavljeno)_ | API ključ za ozadje Obsidian Vault (uporablja ga prednastavitev znanega ozadja v `genericBackend.ts`). | | `OBSIDIAN_API_URL` | `http://localhost:27123` | Osnovni URL za Obsidian Vault API (lahko se pregasi za oddaljeni sef). | | `MEMORY_TYPED_DECAY_ENABLED` | `false` | Glavno stikalo za razpad tipiziranega pomnilnika TV6. **Opcijsko (privzeto izklopljeno)** — čiščenje **izbriše** razpadle spomine. Ko je izklopljeno, sta `access_count`/`last_accessed_at` zgolj telemetrija in ničesar se nikoli ne izbriše. | | `MEMORY_TYPED_DECAY_EPISODIC_DAYS` | `30` | TTL (dnevi), po katerem neuporabljeni `episodic` spomin razpade. `0` tudi epizodične spomine naredi imune. Trajni tipi (`factual`/`procedural`/`semantic`) so vedno imuni. Ura razpada se ponovno osnuje na `last_accessed_at`. | | `MEMORY_TYPED_DECAY_ACCESS_IMMUNITY` | `3` | Spomin, vnesen `>=` tolikokrat, postane imun na razpad ne glede na tip. `0` onemogoči imuniteto dostopa. | | `MEMORY_TYPED_DECAY_SWEEP_INTERVAL` | `0` (onemogočeno) | Interval (sekunde) za opcijsko periodično čiščenje razpadov v `src/lib/memory/typedDecay.ts`. `0`/nenastavljeno = brez periodičnega čiščenja. Dvojno opcijsko: zahteva tudi `MEMORY_TYPED_DECAY_ENABLED=true`. | | `OMNIROUTE_STRICT_SYSTEM_PROVIDERS` | _(nenastavljeno)_ | Z vejico ločeni ID-ji ponudnikov (neobčutljivi na velikost črk), ki sprejmejo sporočilo `system` **samo na indeksu 0** (`src/lib/memory/injection.ts`). Pri teh je vrivanje pomnilnika sredi polja, varno za predpomnilnik, nevarno v večpotekovnih pogovorih, zato se pomnilnik namesto tega združi/doda kot vodilno sistemsko sporočilo. Privzeto le `xiaomi-mimo`/`mimo`; razširite za samogostujoče OpenAI-združljive končne točke (npr. Qwen3.5+/3.6), katerih predloga klepeta uveljavlja enako omejitev enega vodilnega sistemskega sporočila. | ### Primer Docker z malo RAM-a `128` velja samo za nadzorno ploščo. Kodirni agentji na tej kopici med dolgimi `/v1/responses` padejo s `FATAL ERROR`. Tega primera ne uporabljajte kot prehod za Claude/Codex/Grok. ```bash OMNIROUTE_MEMORY_MB=128 PROMPT_CACHE_MAX_SIZE=20 PROMPT_CACHE_MAX_BYTES=524288 # 512 KB SEMANTIC_CACHE_MAX_SIZE=25 SEMANTIC_CACHE_MAX_BYTES=1048576 # 1 MB STREAM_HISTORY_MAX=10 ``` --- ## 18. Sinhronizacija cen Samodejna sinhronizacija podatkov o cenah modelov iz zunanjih virov. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ----------------------- | ------------- | ------------------------ | -------------------------------------- | | `PRICING_SYNC_ENABLED` | `false` | `src/lib/pricingSync.ts` | Izbirna periodična sinhronizacija cen. | | `PRICING_SYNC_INTERVAL` | `86400` (24h) | `src/lib/pricingSync.ts` | Interval sinhronizacije v sekundah. | | `PRICING_SYNC_SOURCES` | `litellm` | `src/lib/pricingSync.ts` | Viri podatkov, ločeni z vejicami. | --- ## Sinhronizacija Arena ELO | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ---------------------------- | ------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `ARENA_ELO_SYNC_ENABLED` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | Periodična sinhronizacija ELO lestvice Arena AI, nastavljiva prek zastavic funkcij na nadzorni plošči ali onemogočljiva z vrednostjo `false`. | | `MODELS_CATALOG_PREFIX_MODE` | `dual` | `src/shared/constants/featureFlagDefinitions.ts`, `src/app/api/v1/models/catalog.ts` | Oblika predpone, uporabljena za ID-je modelov v `GET /v1/models`. `dual` za vsak model objavi tako kratko predpono vzdevka kot kanonično predpono ponudnika (združljivost za nazaj — približno podvoji katalog); `alias` izpiše en ID na model; `canonical` izpiše samo polno predpono ID-ja ponudnika (ponudniki, katerih vzdevek je že kanonični ID, ohranijo en sam vnos). Odjemalci lahko nastavitev za posamezno zahtevo preglasijo z `?prefix=alias`. Glejte [API_REFERENCE](API_REFERENCE.md#model-id-prefixes-prefix). | | `ARENA_ELO_SYNC_INTERVAL` | `86400` (24h) | `src/lib/arenaEloSync.ts` | Interval sinhronizacije v sekundah. | --- ## Ponudnik za PromptQL Playground (neuradno/eksperimentalno) Z obratnim inženirstvom izdelan most za seje GraphQL za prompt.ql.app (`src/shared/constants/providers/web-cookie.ts`). Vse nastavitve so izbirne — privzete vrednosti kažejo na javne končne točke Playground; preglasite jih le za samostojno gostujočo ali nadomestno uvedbo PromptQL. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ---------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | `PROMPTQL_GRAPHQL_ENDPOINT` | `https://data.prompt.ql.app/promptql/playground-v2-hge/v1/graphql` | `open-sse/executors/promptql.ts` | Končna točka GraphQL, uporabljena za klepet in operacije sej. | | `PROMPTQL_CREDITS_ENDPOINT` | `https://data.pro.ql.app/v1/graphql` | `open-sse/executors/promptql.ts`, `open-sse/services/usage/promptql.ts` | Končna točka GraphQL za poizvedovanje o stanju in porabi dobroimetja. | | `PROMPTQL_TOKEN_REFRESH_URL` | `https://auth.pro.ql.app/ddn/project/token` | `open-sse/executors/promptql.ts` | Končna točka za osveževanje žetona po najboljših močeh. | | `PROMPTQL_POLL_TIMEOUT_MS` | `180000` | `open-sse/executors/promptql.ts` | Najdaljši čas (ms) preverjanja `thread_events` pred potekom časovne omejitve. | --- ## Spletni ponudnik HyperAgent (neuradno/poskusno) Z vzvratnim inženiringom izdelan sejni most za hyperagent.com (`src/shared/constants/providers/web-cookie.ts`). Izbirno — privzeto kaže na javno končno točko za obračunavanje/porabo; spremenite ga samo za samostojno gostovano oziroma alternativno namestitev HyperAgent. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ---------------------- | --------------------------------------------------- | --------------------------------------- | ------------------------------------------------------------------------ | | `HYPERAGENT_USAGE_URL` | `https://hyperagent.com/api/settings/billing/usage` | `open-sse/services/usage/hyperagent.ts` | Končna točka za pridobivanje blokov dobroimetja za obračunavanje/porabo. | --- ## Kvote porabe Kilo Code Poizvedovanje po osebnem stanju v USD in porabi Kilo Pass za ponudnika Kilo Code. Izbirno — privzeto kaže na javni API Kilo; spremenite ga samo za posredniško/testno okolje. Preverjanje pristnosti uporablja obstoječi dostopni žeton OAuth povezave. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | -------------- | --------------------- | ------------------------------------- | -------------------------------------------------------------------------- | | `KILO_API_URL` | `https://api.kilo.ai` | `open-sse/services/usage/kilocode.ts` | Osnovni URL za pridobivanje osebnega stanja Kilo Code in porabe Kilo Pass. | --- ## Spletni ponudnik Adobe Firefly (neuradno/poskusno) Osveževanje seje prek brskalnika za spletnega ponudnika Adobe Firefly (`open-sse/services/adobeFireflyBrowserLogin.ts`, `open-sse/services/adobeFireflySession.ts`, `open-sse/services/adobeFireflyClient.ts`). Izbirno — vse privzete nastavitve so prilagojene običajni namizni namestitvi. > **Odstranjeno v #9255.** Staro izvajalno okolje Chrome, povezano prek CDP (adobeFireflyChromeRuntime.ts), je > nadomestila storitev prijave v brskalniku Playwright, zato njegove nastavitve ne obstajajo več. Spremenljivke > ADOBE_FIREFLY_CHROME_ CDP_PORT / VISIBLE / HEADED / PING / FORCE_RESTART ter > ADOBE_FIREFLY_LOGIN_WAIT_MS in ADOBE_FIREFLY_FORTER_WAIT_MS se ne berejo nikjer v > kodni zbirki — njihova nastavitev nima učinka. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ------------------------------------ | ------------------ | ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | Nastavite na `1` za pravi brezglavi Chrome (znano je, da ne deluje pri ustvarjanju; samo za razhroščevanje). | | `ADOBE_FIREFLY_BROWSER_REFRESH` | `1` | `open-sse/services/adobeFireflySession.ts` | Vklop/izklop proaktivnega ogrevanja brskalnika. `0` onemogoči proaktivno ogrevanje (obnovitev po napaki 408 sredi paketa še vedno velja). | | `ADOBE_FIREFLY_SESSION_DISK` | `1` | `open-sse/services/adobeFireflySession.ts` | Nastavite na `0`, da onemogočite shranjevanje seje Adobe Firefly na disk. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | _(ni nastavljeno)_ | `open-sse/services/adobeFireflySession.ts` | Najmanjši razmik (ms), uveljavljen med zaporednimi oddajami, ki preglasi vgrajeno privzeto vrednost. | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | _(ni nastavljeno)_ | `open-sse/services/adobeFireflySession.ts` | Dodatni razmik (ms), dodan po uspešnem paketu, ki preglasi vgrajeno privzeto vrednost. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | _(ni nastavljeno)_ | `open-sse/services/adobeFireflyClient.ts` | Osnovna zakasnitev (ms) pred oddajo zahteve za ustvarjanje, ki preglasi vgrajeno privzeto vrednost. | --- ## 19. Sinhronizacija modelov (razvoj) | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ----------------------------------- | ------------------ | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `MODELS_DEV_SYNC_ENABLED` | _(ni nastavljeno)_ | `src/lib/modelsDevSync.ts` | Prisilna preglasitev sinhronizacije cen models.dev. Če ni nastavljeno, upošteva Nastavitve > UI (`modelsDevSyncEnabled`). `0`/`false`/`off`/`no` **prevlada nad podatkovno zbirko** ter preskoči redno sinhronizacijo in preglede SQL/JSON funkcije `getModelsDevPricing()` (za obnovitev, ko se nadzorna plošča zatakne v isti dogodkovni zanki). `1`/`true`/`on`/`yes` prisilno omogoči sinhronizacijo. Shranjevanje/brisanje cen še vedno pokliče `backupDbFile("pre-write")`, ki zaradi 60-minutnega omejevanja pogostosti ali spremenljivke `DISABLE_SQLITE_AUTO_BACKUP` ne izvede nobenega dejanja. | | `MODELS_DEV_SYNC_INTERVAL` | `86400` (24 h) | `src/lib/modelsDevSync.ts` | Interval sinhronizacije kataloga modelov med razvojem v sekundah. | | `CONTEXT_WINDOW_RECONCILE_INTERVAL` | `86400` (24 h) | `src/lib/contextWindowResolver.ts` | Interval (v sekundah) za samodejno popravljalni usklajevalnik kontekstnega okna (5004): okna, ki jih ponudnik navede prek odkrivanja `/models`, pripne kot preglasitve `auto:discovery`, kadar se razlikujejo od kataloga. Za onemogočanje nastavite na `0`. Znova uporabi že sinhronizirane podatke (brez novega pridobivanja); nikoli ne prepiše preglasitev `manual`. | --- ## 20. Nastavitve, specifične za ponudnike | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ---------------------------------------------- | -------------------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OPENROUTER_CATALOG_TTL_MS` | `86400000` (24h) | `src/lib/catalog/openrouterCatalog.ts` | TTL predpomnilnika kataloga modelov OpenRouter. | | `MODEL_CATALOG_INCLUDE_NAMES` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | Vključi prikazno prijazna polja `name` v odzivih `/v1/models`. Onemogočite za odjemalce, ki pričakujejo samo ID-je. | | `CATALOG_BUILD_TIMEOUT_MS` | `8000` (8s) | `src/app/api/v1/models/catalogCache.ts` | Zgornja meja čakanja na hladni poti za združeno ponovno izgradnjo kataloga `GET /v1/models` (#12627). Ob izteku časa se vrne zadnji veljaven odziv 200, če obstaja. | | `OMNIROUTE_SYNCED_CATALOG_STALE_AFTER_MS` | `2592000000` (30 dni) | `src/lib/db/models/activeSyncedCatalog.ts` | Starost, po kateri sinhronizirani seznam modelov povezave preneha biti merodajen za usmerjanje in se ob napaki odpre proti registru (#12849). Vrstice brez časovnega žiga štejejo za zastarele. | | `OMNIROUTE_ANALYTICS_CACHE_TTL_MS` | `60000` (60s) | `src/lib/usage/analyticsResponseCache.ts` | Kako dolgo se počasen odziv `GET /api/usage/analytics` ponovno uporabi za isti poizvedbeni niz (#15629). `0` onemogoči predpomnilnik. | | `OMNIROUTE_ANALYTICS_CACHE_MIN_COMPUTE_MS` | `1000` (1s) | `src/lib/usage/analyticsResponseCache.ts` | Predpomnjeni so samo analitični odzivi, katerih izgradnja je trajala vsaj toliko časa, tako da majhne namestitve vedno vidijo sveže podatke. | | `OMNIROUTE_CACHE_METRICS_MIN_COMPUTE_MS` | ni nastavljeno (izklopljeno) | `src/app/api/cache/route.ts` via `src/lib/usage/analyticsResponseCache.ts` | Samostojna izbira (#16361). Če je nastavljeno na nenegativno celo število N, se del zgodovine uporabe odziva `GET /api/cache` (vsote predpomnilnika pozivov + trend) postreže iz skupnega predpomnilnika analitičnih odzivov, kadar je njegova izgradnja trajala vsaj N ms, za vsako omejeno okno `trendHours`, za čas `OMNIROUTE_ANALYTICS_CACHE_TTL_MS` (zgodovina lahko zaostaja največ za ta TTL; `DELETE /api/cache` ga razveljavi). Nenastavljeno ali neveljavno = zgodovina se ob vsaki zahtevi bere v živo. | | `NANOBANANA_POLL_TIMEOUT_MS` | `120000` | `open-sse/handlers/imageGeneration.ts` | Najdaljše čakanje na opravila generiranja slik NanoBanana. | | `NANOBANANA_POLL_INTERVAL_MS` | `2500` | `open-sse/handlers/imageGeneration.ts` | Pogostost poizvedovanja o stanju opravil NanoBanana. | | `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyUpscale.ts` | Osnovna zakasnitev eksponentnega umika pri ponovnem pošiljanju zahtevka za povečavo ločljivosti Adobe Firefly. | | `AWS_REGION` | _(ni nastavljeno)_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | Regija, uporabljena za sestavljanje končnih točk AWS Bedrock (Kiro, zvok). | | `AWS_DEFAULT_REGION` | _(ni nastavljeno)_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | Rezervna vrednost, če `AWS_REGION` ni nastavljen. | | `CLOUDFLARE_ACCOUNT_ID` | _(ni nastavljeno)_ | `open-sse/executors/cloudflare-ai.ts` | ID računa za Cloudflare Workers AI. | | `CLOUDFLARE_PLAYGROUND_CHROME_PATH` | _(ni nastavljeno)_ | `open-sse/executors/cloudflare-playground.ts` | Polna pot do namizne izvedljive datoteke Chrome za izvajalnik Cloudflare AI Playground, ki se uporabi, kadar preverjanje prstnega odtisa v brezglavem načinu blokira Playwrightov priloženi Chromium. | | `CODEBUDDY_SYSTEM_PROMPT_MAX_LEN` | ∅ (∞) — _(ni nastavljeno = brez omejitve dolžine)_ | `open-sse/executors/codebuddy/shared.ts` | Izbirna omejitev dolžine sistemskih pozivov klicatelja, poslanih CodeBuddyju (CN in International). Privzeto se z nevtralnim zamenja samo poziv, ki nosi oznako identitete kodnega agenta (Tencentov filter vsebine take zavrne); dolgi pozivi se ohranijo. Celo število > 0 zamenja tudi vsak sistemski poziv, daljši od tega števila znakov; nenastavljeno, `0` ali neceloštevilska vrednost omejitev onemogoči. Vsaka zamenjava zabeleži, katero pravilo se je sprožilo (oznaka identitete ali dolžina). | | `CLOUDFLARE_API_BASE` | `https://api.cloudflare.com/client/v4` | `src/app/api/settings/proxy/cloudflare-deploy/route.ts` | Preglasi osnovni naslov Cloudflare REST API, ki ga uporablja namestitveni program posrednika Workers iz sklaza proxyjev (#4640 / 9router#1360). | | `NEXT_PUBLIC_CLOUDFLARE_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/CloudflareRelayModal.tsx` | Privzeto ime projekta workerja, predlagano v modalnem oknu »Deploy Relay« razdelka Proxy Pool. | | `NEXT_PUBLIC_CLOUDFLARE_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | Nastavite na `false`, da skrijete možnost releja Cloudflare Workers na zavihku Proxy Pool. | | `CLOUDFLARED_BIN` | samodejno zaznavanje | `src/lib/cloudflaredTunnel.ts` | Pot po meri do izvršljive datoteke `cloudflared`. | | `CLOUDFLARED_PROTOCOL` | `http2` | `src/lib/cloudflaredTunnel.ts` | Transportni protokol tunela: `http2` (privzeto), `quic` ali `auto`. | | `CLOUDFLARED_CONFIG` | _(ni nastavljeno)_ | `src/lib/cloudflaredTunnel.ts` | Pot do lokalno upravljane datoteke `config.yml` za cloudflared (z vrednostmi `tunnel:`, `credentials-file:`, `ingress:`). Ko je nastavljena, OmniRoute zažene `tunnel --config run` (imenovani tunel) namesto kratkotrajnega hitrega tunela. | | `CLOUDFLARED_HOSTNAME` | _(iz ingress konfiguracije)_ | `src/lib/cloudflaredTunnel.ts` | Prepis javnega imena gostitelja imenovanega tunela (npr. `ai.example.com`), ki je prijavljeno kot `publicUrl`/`apiUrl`. Če ni nastavljeno, se prebere iz prvega imena gostitelja `ingress` v konfiguraciji. | | `DENO_DEPLOY_API_BASE` | `https://api.deno.com/v2` | `src/app/api/settings/proxy/deno-deploy/route.ts` | Prepis osnove REST API Deno Deploy, ki jo uporablja uvajalnik releja Proxy Pool (#4643 / 9router#1437). | | `NEXT_PUBLIC_DENO_RELAY_DEFAULT_PROJECT` | `omniroute-deno-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/DenoRelayModal.tsx` | Privzeto ime aplikacije Deno Deploy, predlagano v modalnem oknu »Deploy Relay« razdelka Proxy Pool. | | `NEXT_PUBLIC_DENO_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | Nastavite na `false`, da skrijete možnost releja Deno Deploy na zavihku Proxy Pool. | | `SEARCH_CACHE_TTL_MS` | `300000` (5 min) | `open-sse/services/searchCache.ts` | TTL za predpomnjenje odzivov iskalnega API-ja (Perplexity, Brave itd.). | | `ENABLE_CC_COMPATIBLE_PROVIDER` | `false` | `src/shared/utils/featureFlags.ts` | Razkrije poskusni uporabniški vmesnik ponudnika, združljivega s CC, za releje, namenjene samo za Claude Code. | | `NINEROUTER_HOST` | `127.0.0.1` | `open-sse/executors/ninerouter.ts` | Prepis gostitelja, na katerem posluša vgrajena instanca 9router. | | `NINEROUTER_PORT` | `20130` | `open-sse/executors/ninerouter.ts` | Prepis vrat, na katerih posluša vgrajena instanca 9router. | | `EMBED_WS_PROXY_HOST` | `127.0.0.1` | `src/lib/services/embedWsProxy.ts` | Gostitelj povezave za WebSocket proxy vgrajene storitve (privzeto samo loopback). | | `EMBED_WS_PROXY_PORT` | `20131` | `src/lib/services/embedWsProxy.ts` | Vrata za strežnik WebSocket proxy vgrajene storitve. | | `CLIPROXYAPI_HOST` | `127.0.0.1` | `open-sse/executors/cliproxyapi.ts` | Gostitelj mostu CLIProxyAPI (podedovana integracija). | | `CLIPROXYAPI_PORT` | `5544` | `open-sse/executors/cliproxyapi.ts` | Vrata mostu CLIProxyAPI. | | `CLIPROXYAPI_API_KEY` | _(prazno)_ | `open-sse/handlers/chatCore/cliproxyapiCredentials.ts` | Rezervni ključ podatkovne ravni, ko nastavitev `cliproxyapi_api_key` manjka. | | `CLIPROXYAPI_MANAGEMENT_KEY` | _(prazno)_ | `src/lib/services/cliproxyAccountHealth.ts` | Upravljalni ključ za branje stanja računov iz zunanje upravljane instance CLIProxyAPI. | | `CLIPROXYAPI_CONFIG_DIR` | `~/.cli-proxy-api` | `src/lib/versionManager/processManager.ts` | Konfiguracijski imenik CLIProxyAPI. | | `CLIPROXY_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Gostiteljski vmesnik, na katerem docker-compose objavi stranski proces `cliproxyapi` (#12578). Njegov podatkovni nosilec hrani poverilnice OAuth/API ponudnikov, pripeta slika pa nima okoljske možnosti preglasitve `api-keys` za podatkovno ravnino (le nameščena `config.yaml`), zato `0.0.0.0` izpostavi storitev s poverilnicami celotnemu lokalnemu omrežju (LAN). | | `MUX_SERVICE_PORT` | `8322` | `src/lib/services/bootstrap.ts` | Preglasi vrata, na katerih posluša vgrajeni demon za orkestracijo agentov Mux (coder/mux) (vedno 127.0.0.1). | | `OPENWA_SERVICE_PORT` | `8323` | `src/lib/services/bootstrap.ts` | Preglasi vrata, na katerih posluša vgrajeni demon open-wa (avtomatizacija WhatsApp Web) (vedno 127.0.0.1). | | `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Gostitelj za vezavo/povezavo vgrajene storitve Dario (privzeto samo loopback). | | `DARIO_PORT` | `3456` | `open-sse/executors/dario.ts` | Vrata vgrajene storitve Dario. | | `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Gostitelj za vezavo/povezavo vgrajene storitve Dario (privzeto samo loopback). | | `DARIO_PORT` | `3456` | `open-sse/executors/dario.ts` | Vrata vgrajene storitve Dario. | | `LOCAL_HOSTNAMES` | _(prazno)_ | `open-sse/config/providerRegistry.ts` | Z vejico ločena dodatna imena gostiteljev, ki se obravnavajo kot »lokalna« (imena storitev Docker itd.). | `ENABLE_CC_COMPATIBLE_PROVIDER` je namenjen samo posrednikom tretjih strank, ki sprejemajo izključno odjemalce Claude Code. OmniRoute prepiše zahteve, da jih ti posredniki sprejmejo. Če želite uporabljati samo Claude Code CLI ali niste prepričani, kaj ti posredniki so, pustite to onemogočeno in raje dodajte običajnega ponudnika, združljivega z Anthropic. --- ## 21. Zdravje proxy-strežnikov | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ------------------------------------------------- | -------------------------------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `PROXY_FAST_FAIL_TIMEOUT_MS` | `2000` | `src/lib/proxyHealth.ts` | Časovna omejitev hitrega preverjanja zdravja (fast-fail). | | `PROXY_LATENCY_WINDOW_HOURS` | `3` | `src/lib/db/proxies.ts` | Časovno okno (v urah) za izračun povprečne zakasnitve proxy-kandidatov v strategiji združevanja, optimizirani glede na zakasnitev. | | `PROXY_HEALTH_CACHE_TTL_MS` | `30000` | `src/lib/proxyHealth.ts` | TTL predpomnilnika rezultatov preverjanja zdravja. | | `PROXY_HEALTH_UNHEALTHY_CACHE_TTL_MS` | `2000` | `src/lib/proxyHealth.ts` | TTL predpomnilnika za spodletela preverjanja zdravja proxy-strežnikov. Ohranite ga krajšega od `PROXY_HEALTH_CACHE_TTL_MS`, da se ob prehodnih časovnih omejitvah proxy-strežnikov pri visoki sočasnosti poskusi hitro ponovijo, ne da bi se pri tem onemogočil mehanizem fast-fail za resnično nedelujoče proxy-strežnike. | | `PROXY_HEALTH_ENABLED` | `true` | `src/lib/proxyHealth/scheduler.ts` | Nastavite na `false`, da onemogočite razporejevalnik zdravja proxy-strežnikov v ozadju, ki periodično preverja registrirane proxy-strežnike. | | `PROXY_HEALTH_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | Interval pregleda razporejevalnika zdravja v ozadju, v ms (najmanj `60000`). | | `PROXY_HEALTH_RELAY_INTERVAL_MS` | `21600000` | `src/lib/proxyHealth/relayCadence.ts` | Interval sondiranja v ms za proxyje edge-relay (`deno`/`vercel`/`cloudflare`), katerih sonde prebudijo obračunani serverless izolat (najmanj `60000`). | | `PROXY_HEALTH_RECOVERY_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | Interval obnovitvenega prehoda v ozadju v ms: kako pogosto se prej nezdravi proxyji ponovno sondirajo, da se obnovljeni proxy brez ponovnega zagona vrne v rotacijo. Vrednosti pod `60000` se vrnejo na privzeto. | | `PROXY_HEALTH_TEST_URL` | `https://httpbin.org/ip` | `src/lib/proxyHealth/probeTarget.ts` | Cilj sonde dosegljivosti, ki ga uporabljata razporejevalnik in končna točka `/api/settings/proxies/auto-test`. Usmerite ga na interni/samogostujoč URL, da se izognete javnemu privzetemu. | | `PROXY_HEALTH_TEST_CONCURRENCY` | `10` | `src/lib/proxyHealth/probeTarget.ts` | Število sond, zagnanih hkrati na serijo, v skupni rabi razporejevalnika in končne točke `/api/settings/proxies/auto-test`. Spodnja meja je 1, zgornja pa 50. | | `PROXY_HEALTH_TEST_STAGGER_MS` | `100` | `src/lib/proxyHealth/probeTarget.ts` | Zamik v ms med dvema odhodoma sond znotraj serije. Brez njega celotna serija odide istočasno in skupni izhodni IP lahko sproži omejevanje hitrosti na cilju. Nastavite na `0`, da razmike onemogočite; omejeno na 5000. | | `PROXY_HEALTH_USE_PROVIDER_TARGET` | `true` | `src/lib/proxyHealth/providerProbeTarget.ts` | Nastavite "false", da prenehate sondirati dejanskega gostitelja dodeljenega ponudnika proxyja (`GET /models`, brez ključa API) in namesto tega vedno uporabite `PROXY_HEALTH_TEST_URL`. | | `PROXY_HEALTH_AUTO_DEACTIVATE` | `false` | `src/lib/proxyHealth/statusPolicy.ts` | Ko je `false` (privzeto), so samodejne sonde dosegljivosti (razporejevalnik + gumb "Test All" na končni točki `/api/settings/proxies/auto-test`) **samo za branje** in nikoli ne zapišejo statusa proxyja — aktivno/neaktivno nastavlja samo operater, zato nezanesljiva sonda ne more pustiti dodeljenega proxyja obtičati (#6246). Nastavite `true`, da obnovite staro vedenje test-and-set. | | `FLUSH_EMPTY_RETRY_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Izbirna zastavica funkcije (glejte [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); preglasitev v bazi nadzorne plošče ima prednost). `true` (ali `1`, `yes`) ponovi prazne prevedene obrate pretakanja po običajni poti poverilnic (do `STREAM_RECOVERY.EMPTY_TURN_RETRY_MAX` ponovitev), namesto da bi razkril prazen 200 ali 502 s prazno vsebino. | | `EMPTY_STREAM_SIBLING_RECOVERY_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Izbirna zastavica funkcije (glejte [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); preglasitev v bazi nadzorne plošče ima prednost). `true` (ali `1`, `yes`) aktivira sondo vsebine praznega pretoka za Claude/Codex in po obratu `empty_content` porabi obstoječo omejeno ponovitev na drugi primerni povezavi, brez ohlajanja ali zaklepa modela. | | `STREAM_LATE_OUTPUT_PROBE_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Izbirna zastavica funkcije (glejte [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); preglasitev v bazi nadzorne plošče ima prednost). `true` (ali `1`, `yes`) po prvih 64 še naprej vzorči en posredovan kos od 16, tako da pozen viden izhod še vedno označi pretok kot takega, ki je oddal izhod (osamljen 5xx po izhodu ostane v obsegu zahteve namesto zaklepa le modela). | | `PROXY_POOL_EGRESS_OBSERVATION` | `false` | `src/shared/utils/featureFlags.ts` | Izbirna funkcijska zastavica (glejte [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); nadomestitev v DB nadzorne plošče ima prednost). `true` (ali `1`, `yes`) prikaže opazovanje izhodnega prometa bazena, ki je samo za branje, pod proxy-bazenom na nadzorni plošči (različni izhodni IP-ji, povezave in največ opaženih za enim samim IP-jem v zadnjih 24 urah, iz dnevnika proxyja). Nikoli se ne uporablja za usmerjanje. | | `PROXY_OPERATOR_EGRESS_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | Izbirna funkcijska zastavica (glejte [FEATURE_FLAGS.md](./FEATURE_FLAGS.md); nadomestitev v DB nadzorne plošče ima prednost). `true` (ali `1`, `yes`) sprejme datirane opažene naslove, ki jih potisne operater, za vsakega člana bazena in jih združi z branjem žurnala za prikaz in vrstni red bazena. | | `PROXY_OPERATOR_EGRESS_WINDOW_HOURS` | `24` | `src/lib/db/proxyOperatorEgress.ts` | Opazovalno okno v urah za izhodne vrstice, ki jih potisne operater (prebrano ob vsakem branju; ponovni zagon ni potreben). Omejeno na 1..168; vrednost zunaj obsega, neštevilska ali prazna vrednost se vrne na 24 z enim samim opozorilom na ravni celotnega procesa, nikoli z izjemo. | | `PROXY_AUTO_REMOVE` | `false` | `src/lib/proxyHealth/scheduler.ts` | Nastavite `true`, da načrtovalnik samodejno odstrani proxyje po ponavljajočih se zaporednih spodletelih poskusih. | | `PROXY_AUTO_REMOVE_AFTER` | `3` | `src/lib/proxyHealth/scheduler.ts` | Zaporedni spodleteli poskusi, preden načrtovalnik samodejno odstrani proxy (ko je `PROXY_AUTO_REMOVE=true`). | | `PROXY_AUTO_DISABLE` | `false` | `src/lib/proxyHealth/scheduler.ts` | Nastavite `true`, da načrtovalnik proxy po ponavljajočih se zaporednih spodletelih poskusih mehko onemogoči (status `dead`, nikoli izbrisan), namesto da bi ga odstranil. Nedestruktivna alternativa za `PROXY_AUTO_REMOVE`: proxy takoj izpade iz razreševanja bazena/rotacije (filter statusa alive, ki ga uporablja razreševanje scope-pool, ga že izključuje) in se samodejno ponovno aktivira, ko ponovno začne prestajati sonde. Ima skupni prag s `PROXY_AUTO_REMOVE_AFTER`. Če sta obe zastavici `true`, ima prednost `PROXY_AUTO_REMOVE`. | | `PROXY_HEALTH_PASSIVE_SKIP` | `false` | `src/lib/proxyHealth/scheduler.ts` | Izbirni pasivni preskok: ko je `true`, načrtovalnik preskoči živo sondo za končno točko, ki jo nedavni produkcijski promet že potrjuje (vsaj en uspeh in nobena pripisana napaka proxyja v oknu, opažen natanko en ponudnik). Privzeto izključeno: vsak proxy je sondiran. | | `PROXY_PASSIVE_WINDOW_MS` | `300000` | `src/lib/proxyHealth/passiveVerdict.ts` | Okno produkcijskega prometa v ms, ki ga upošteva pasivni preskok (omejeno `60000..599999`). Krajše od 10-minutnega intervala pobiranja, tako da nedavna napaka prevlada, namesto da bi bila razredčena. | | `OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | Dovoli, da tokovi OAuth in preverjanja ponudnika obidejo pripeti proxy in se povežejo neposredno, ko predhodni preizkusi dosegljivosti proxyja spodletijo. Dejansko prednostno zaporedje je nadomestitev DB funkcijskih zastavic > spremenljivka okolja > privzeta vrednost. | | `RATE_LIMIT_MAX_WAIT_MS` | `30000` (30s) | `src/lib/resilience/settings.ts` | Privzeti proračun **čakanja v vrsti**: koliko časa lahko zahteva čaka na prosto mesto pri ponudniku in miruje v čakalni vrsti, preden je zavrnjena, ne da bi sploh dosegla upstream. Časovnik se izbriše, ko se naloga začne izvajati — izvajanje je ločeno omejeno z `RATE_LIMIT_EXECUTION_MAX_WAIT_MS`. Okoljska spremenljivka določa samo privzeto vrednost: trajno shranjena `resilienceSettings.requestQueue.maxWaitMs`, nato pa še `rateLimitOverrides.maxWaitMs` za posamezno povezavo, imata vsaka prednost pred njo. | | `RATE_LIMIT_EXECUTION_MAX_WAIT_MS` | `600000` (10 min) | `open-sse/services/rateLimitManager.ts` | Zgornja meja, kako dolgo lahko sprejeta zahteva ostane v izvajanju, preden njena rezervacija omejevanja hitrosti poteče — ločeno od proračuna čakanja v vrsti, da počasen začetek pridobivanja (fetch) na neinkrementalnih prehodih ne povzroči časovne prekinitve (#12027). | | `RATE_LIMIT_MAX_QUEUE_DEPTH` | `0` (disabled) | `open-sse/services/rateLimitManager.ts` | Omejitev sprejema v čakalno vrsto: zavrni s 429 `queue_full`, ko je toliko zahtev že v čakalni vrsti. `0` = neomejeno (privzeto). | | `RATE_LIMIT_AUTO_ENABLE` | _(ni nastavljeno)_ | `open-sse/services/rateLimitManager.ts` | Prisili varnostno mrežo samodejnega vklopa omejevanja hitrosti na vklop/izklop ne glede na trajno shranjeno nastavitev nadzorne plošče (`resilienceSettings.requestQueue.autoEnableApiKeyProviders`). Sprejme `true`/`1`/`on` za prisilni vklop, `false`/`0`/`off` za prisilni izklop. Ko je aktivna (privzeto), so aktivne povezave z API ključi samodejno zaščitene z omejevanjem hitrosti. Nastavitev `rateLimitProtection: false` za posamezno povezavo onemogoči izrecno zaščito, vendar se ne izključi iz te varnostne mreže; nastavitev te okoljske spremenljivke na `false` je globalni mehanizem za izvajanje povezav z API ključi brez čakalnih vrst omejevanja hitrosti. | | `PROVIDER_COOLDOWN_ENABLED` | _(ni nastavljeno → izklopljeno)_ | `open-sse/services/providerCooldownTracker.ts` | Izbirno (opt-in) globalno sledenje ohlajanja ponudnika/povezave med zahtevami. Privzeto IZKLOPLJENO (prekriva se z Ohlajanjem povezave / Prekinitvenim stikalom ponudnika). Sprejme `true`/`1`/`on` za omogočitev. | | `PROVIDER_COOLDOWN_MIN_MS` | `5000` | `open-sse/services/providerCooldownTracker.ts` | Najmanjše ohlajanje (ms), preden se neuspešni ponudnik/povezava ponovno poskusi. Eksponentno se povečuje z zaporednimi neuspehi. Uporablja se samo, ko je `PROVIDER_COOLDOWN_ENABLED`. | | `PROVIDER_COOLDOWN_MAX_MS` | `300000` (5 min) | `open-sse/services/providerCooldownTracker.ts` | Največja omejitev ohlajanja (ms), po kateri se neuspešni ponudnik/povezava v vsakem primeru ponovno poskusi. Uporablja se samo, ko je `PROVIDER_COOLDOWN_ENABLED`. | | `STREAM_RECOVERY_ENABLED` | _(ni nastavljeno → izklopljeno)_ | `src/lib/resilience/settings.ts` (začetna vrednost) → `open-sse/services/streamRecovery.ts` (logika) | **Kaj:** pregledna obnovitev prirezanih upstream tokov (prenos iz free-claude-code). Zadrži začetno okno SSE do `STREAM_RECOVERY.HOLDBACK_MS` (750 ms), tako da se prekinitev _pred potrditvijo_ — takšna, ki se zgodi, preden kateri koli bajt doseže odjemalca — ponovno odpre in nevidno ponovi. **Kdaj omogočiti:** nestabilni upstreami, ki se pogosto prirežejo na 0 bajtov na začetku toka; pustite IZKLOPLJENO, če si ne morete privoščiti do 750 ms dodatnega časa do prvega žetona pri vsakem toku. Sprejme `true`/`1`/`on`. Vzpostavi začetno vrednost trajno shranjene nastavitve Resilience; ko je nastavljena, ima prednost nastavitev nadzorne plošče. | | `STREAM_RECOVERY_MIDSTREAM_ENABLED` | _(ni nastavljeno → izklopljeno)_ | `src/lib/resilience/settings.ts` (osnova) → `open-sse/services/streamRecovery.ts` (logika) | **Kaj:** nadaljevanje sredi pretoka (faza 4.4) — po odrezavitvi _post-commit_ (ko so bajti že dosegli odjemalca) ponovno pošlje zahtevo z delnim besedilom kot asistentovo predizpolnitev (assistant prefill) in zšije manjkajočo končnico. Samo navadnobesedilni pretoki, združljivi z OpenAI; nikoli se ne sproži, ko je klic orodja v teku. **Kdaj omogočiti:** pri dolgih generiranjih, ki se prekinejo sredi odgovora, in ko sprejemate, da obnovljeni rep prispe v enem sunku namesto žeton po žeton. Neodvisno od `STREAM_RECOVERY_ENABLED` (drugačen profil tveganja). Sprejema `true`/`1`/`on`. | | `STREAM_THROUGHPUT_WATCHDOG_ENABLED` | _(ni nastavljeno → izklopljeno)_ | `src/lib/resilience/settings.ts` → `open-sse/services/throughputWatchdog.ts` | Neobvezni (opt-in) nadzorni mehanizem koristnega izhoda aktivnih pretokov. Zaznava pretokе, ki še naprej pošiljajo kose, a ostanejo pod konfigurirano hitrostjo asistentovega izhoda; utripi (heartbeats), dogodki porabe, prazne delte ter faze orodij/razmišljanja se ne štejejo kot napredek. Ločen od časovnih omejitev nedejavnosti in trdih končnih rokov. | | `STREAM_THROUGHPUT_WATCHDOG_WARMUP_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | Obdobje odloga pred oceno prepustnosti, omejeno na 0–600000 ms. | | `STREAM_THROUGHPUT_WATCHDOG_WINDOW_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | Drsno okno koristnega izhoda, omejeno na 1000–600000 ms; pred prekinitvijo je potrebno eno celotno okno. | | `STREAM_THROUGHPUT_WATCHDOG_MIN_BYTES_PER_SECOND` | `4` | `src/lib/resilience/settings/normalize.ts` | Najmanjša hitrost bajtov asistentovega izhoda UTF-8 (konzervativni približek za žetone), omejena na 1–1000000. | | `STREAM_THROUGHPUT_WATCHDOG_MIN_USEFUL_BYTES` | `1` | `src/lib/resilience/settings/normalize.ts` | Najmanjši neničelni vzorec koristnega izhoda, ki se šteje za merljivega, omejen na 1–1000000 bajtov. | | `HEALTHCHECK_STAGGER_MS` | `3000` | `src/lib/tokenHealthCheck.ts` | Interval razmika (v ms) med preverjanji zdravja žetonov ponudnikov ob zagonu. | | `HEALTHCHECK_JITTER_MIN_MS` | `500` | `src/lib/tokenHealthCheck.ts` | Najmanjši naključni jitter (v ms), dodan k `HEALTHCHECK_STAGGER_MS` med preverjanji zdravja žetonov ponudnikov, za preprečitev navalov (Issue #1220). | | `HEALTHCHECK_JITTER_MAX_MS` | `5000` | `src/lib/tokenHealthCheck.ts` | Največji naključni jitter (v ms), dodan k `HEALTHCHECK_STAGGER_MS` med preverjanji zdravja žetonov ponudnikov, za preprečitev navalov (Issue #1220). | | `HEALTHCHECK_BATCH_SIZE` | `20` | `src/lib/tokenHealthCheck.ts` | Velikost paketa sočasnih preverjanj pri začetnem pomahu preverjanj zdravja žetonov; večje vrednosti preverjajo več povezav vzporedno, manjše vrednosti zmanjšujejo obremenitev zaradi navalov (Issue #7875, regresija #7719). | | `REQUEST_RETRY` | `2` | `src/sse/services/cooldownAwareRetry.ts` | Število samodejnih ponovitev po odgovorih o ohlajanju na ravni modela, preden se odjemalcu vrne napaka. | | `MAX_RETRY_INTERVAL_SEC` | `30` | `src/sse/services/cooldownAwareRetry.ts` | Najdaljši interval umika (v sekundah) med ponovnimi poskusi po ohladitvi. Omejen s to vrednostjo ne glede na `Retry-After` izvornega strežnika. | | `HEADROOM_URL` | `http://localhost:8787` | `src/lib/headroom/detect.ts` | URL proxyja Headroom za varčevanje žetonov. Življenjski cikel nadzorne plošče (`api/headroom/*`) privzeto zažene lokalni CLI `headroom-ai` na povratni zanki (loopback); preglasite samo, če želite usmeriti na zunanji sidecar proxy v Dockerju. | ### Konstante za uglaševanje obnovitve toka Obnašanje zadrževanja ob obnovitvi je uglašeno s trdo kodiranimi konstantami v `open-sse/config/constants.ts` (`STREAM_RECOVERY`), ki so tukaj prikazane za referenco — njihovo spreminjanje zahteva urejanje kode, ne okoljske spremenljivke: - `STREAM_RECOVERY.HOLDBACK_MS = 750` — kako dolgo je začetno okno SSE zadržano, da se lahko zgodnje odrezanje ponovi, preden se kateri koli bajt potrdi odjemalcu. - `STREAM_RECOVERY.BUFFER_MAX_BYTES = 65536` — trda zgornja meja zadržanega okna; potrditev (izplakovanje + prepuščanje) sledi takoj, ko se nabere toliko bajtov, ne glede na časovnik. - `STREAM_RECOVERY.EARLY_RETRY_MAX = 4` — največje število transparentnih ponovnih odprtij izvornega toka, dokler zadržanje še ni potrjeno. > **Omejitev hitrosti na ponudnika z drsečim oknom (brez okoljske spremenljivke):** iz FCC prenesena > _rezervna_ omejitev hitrosti na ponudnika z drsečim oknom obstaja v kodi > (`open-sse/services/providerDefaultRateLimit.ts`, povezana prek > `open-sse/services/rateLimitManager.ts`), vendar se dobavlja s **prazno privzeto preslikavo** > in danes **nima operaterske okoljske spremenljivke** — omogočena je le prek preskusne kljuke / > urejanja kode. Namenoma ni navedena v zgornji tabeli. Omejevalnik posredovanja na `(token, IP)`, > ki _ima_ nastavitveni gumb, je `RELAY_IP_PER_MINUTE` (§3 Omrežje in vrata). --- ## 22. Odpravljanje napak > [!CAUTION] > Te spremenljivke ustvarjajo **podroben izpis** in lahko razkrijejo občutljive podatke. **Nikoli jih ne omogočite v produkciji.** | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ------------------------------------- | -------------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `CURSOR_DEBUG` | _(ni nastavljeno)_ | `open-sse/executors/cursor.ts` | Nastavite na `1`, da omogočite podrobne dnevnike izvajalnika Cursor (dekodirani fragmenti SSE itd.). | | `CURSOR_STREAM_DEBUG` | _(ni nastavljeno)_ | `open-sse/executors/cursor.ts` | Nazaj združljiv vzdevek za `CURSOR_DEBUG`. | | `CURSOR_DUMP_FILE` | _(ni nastavljeno)_ | `open-sse/executors/cursor.ts` | Izbirna pot do datoteke, v katero se zapisujejo neobdelani dekodirani fragmenti Cursor, ko je nastavljeno `CURSOR_DEBUG=1`. | | `CURSOR_STREAM_TIMEOUT_MS` | `300000` | `open-sse/executors/cursor.ts` | Časovna omejitev nedejavnosti toka (ms) za izvajalnik Cursor. | | `CURSOR_KV_GRACE_MS` | `2000` | `open-sse/executors/cursor.ts` | Dodatno časovno okno (ms) po mehkem zaključku composer `kv_after_text`, ko so bajti še vedno v medpomnilniku — s tem ima naknadni klic orodja `exec_mcp` čas, da dokonča svoj okvir. | | `CURSOR_TOOL_DIRECTIVE` | omogočeno (`!== "0"`) | `open-sse/executors/cursor.ts` | Direktiva za potrditev orodja, zaradi katere composer-2.5 zanesljivo izvede klice orodij. Nastavite na `0`, da jo onemogočite. | | `OMNIROUTE_SYSTEM_INSTRUCTION_APPEND` | _(ni nastavljeno)_ | `open-sse/translator/request/claude-to-openai.ts`, `open-sse/translator/response/openai-to-claude.ts` | Besedilo sistemskega poziva, ki ga določi upravljavec in se sistemskemu sporočilu doda PO prevodu (vstavljanje po prevodu), tako da doseže poti codex/Responses in `/v1/messages`. Uporablja se tudi kot predpona direktive, odstranjena iz ponovljenih blokov sistemske preambule. Če želite funkcijo onemogočiti, pustite nenastavljeno. | | `OMNIROUTE_STRIP_SYSTEM_PREAMBLE` | `0` (izklopljeno) | `open-sse/translator/response/openai-to-claude.ts`, `open-sse/utils/directivePreambleStripper.ts` | Nastavite na `1`, da z začetka toka openai→claude odstranite ponovljene bloke preambule sistemskega poziva. Privzeto je izklopljeno — hevristike so prilagojene angleški prozi in spreminjajo vsebino odgovora, zato bi odgovor, ki se upravičeno začne s takim razdelkom, ta razdelek izgubil. | | `CURSOR_IMAGE_FETCH_TIMEOUT_MS` | `15000` | `open-sse/utils/cursorImages.ts` | Časovna omejitev pridobivanja posamezne slike (ms) za oddaljeni vizualni vhod `image_url`. | | `CURSOR_STATE_DB_PATH` | _(samodejno zaznano)_ | `open-sse/utils/cursorVersionDetector.ts` | Preglasi iskanje podatkovne zbirke stanja okolja Cursor IDE, ki se uporablja za zaznavanje različice IDE. | | `CURSOR_AGENT_CLI_VERSION` | _(zaznaj / pripni)_ | `open-sse/utils/cursorAgentCliVersion.ts` | ID gradnje Agent CLI (`YYYY.MM.DD-`) za `x-cursor-client-version: cli-…` pri izvajanju agenta. | | `CURSOR_AGENT_BIN` | _(ni nastavljeno)_ | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Pot do binarne datoteke Cursor Agent, ki se uporablja za ustvarjanje slik. Če ni nastavljena, obravnavalnik uporabi `providerSpecificData.agentBin`, nato pa PATH. | | `CURSOR_IMG_TIMEOUT_MS` | `210000` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Časovna omejitev po stenski uri za posamezno sliko (ms) pri opravilih Cursor Agent za ustvarjanje slik. | | `CURSOR_IMG_MAX_CONCURRENT` | `2` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Omejitev sočasnosti skupne licence za opravila Cursor za ustvarjanje slik. | | `CURSOR_IMG_MODEL` | zahteva / `auto` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Preglasi `--model` v Cursor CLI za opravila ustvarjanja slik. | | `UC_IMAGE_POLL_INTERVAL_MS` | `2000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | Interval preverjanja rezultatov ustvarjanja slik UC (uncensored.com) (ms). | | `UC_IMAGE_POLL_TIMEOUT_MS` | `60000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | Časovna omejitev preverjanja rezultatov ustvarjanja slik UC po stenski uri (ms). | | `UC_VIDEO_POLL_INTERVAL_MS` | `3000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | Interval preverjanja rezultatov ustvarjanja videoposnetkov UC (uncensored.com) (ms). | | `UC_VIDEO_POLL_TIMEOUT_MS` | `300000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | Časovna omejitev preverjanja rezultatov ustvarjanja videoposnetkov UC po stenski uri (ms). | | `CURSOR_DATA_DIR` | _(samodejno zaznano)_ | `open-sse/utils/cursorAgentCliVersion.ts` | Preglasi podatkovni imenik Cursor Agent CLI (`…/versions/`); ista spremenljivka, kot jo uporablja uradni agent. | | `CURSOR_TOKEN` | _(ni nastavljeno)_ | `scripts/ad-hoc/cursor-tap.cjs` | Neposredni žeton bearer za Cursor, ki ga uporabljajo razvijalska orodja. | | `OMNIROUTE_LOG_REQUEST_SHAPE` | onemogočeno (izbirno prek `"1"`) | `src/app/api/v1/chat/completions/route.ts` | Beleži označevalnike vrste/dolžine vsebine za velike koristne vsebine klepeta, ko je nastavljeno `"1"`. Privzeto je izklopljeno, da se zmanjša količina dnevniškega šuma. | | `DEBUG_RESPONSES_SSE_TO_JSON` | _(ni nastavljeno)_ | `open-sse/handlers/responseTranslator.ts` | Nastavite na `true`, da se beležijo podrobnosti prevajanja Responses API iz SSE→JSON. | | `DEBUG_CLAUDE_NONSTREAM` | _(ni nastavljeno)_ | `open-sse/handlers/responseTranslator.ts` | Nastavite na `true`, da se na poti prevajanja odgovora Claude prikažejo prazni fragmenti textContent (samo za odpravljanje napak). | | `NEXT_PUBLIC_OMNIROUTE_E2E_MODE` | _(ni nastavljeno)_ | Ogrodje za preizkuse E2E | Nastavite na `true`, da omogočite način preizkušanja E2E (ohlapnejše preverjanje pristnosti, preizkusne kljuke). | --- ## 23. Integracija z GitHubom Uporabnikom omogočite prijavljanje težav neposredno z nadzorne plošče. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | --------------------- | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `GITHUB_ISSUES_REPO` | _(ni nastavljeno)_ | `src/app/api/v1/issues/report/route.ts` | Repozitorij v obliki `owner/repo`. | | `GITHUB_ISSUES_TOKEN` | _(ni nastavljeno)_ | `src/app/api/v1/issues/report/route.ts` | GitHubov osebni žeton za dostop z obsegom `issues:write`. | | `GITHUB_TOKEN` | _(ni nastavljeno)_ | pomočniki za razvrščanje težav/oblačne agente | Splošni GitHubov žeton za dostop, ki se uporablja kot nadomestna možnost za `GITHUB_ISSUES_TOKEN` in ga uporabljajo pomočniki oblačnih agentov v `src/lib/cloudAgent/*`. | --- ## Scenariji uvajanja Za smernice SRE za posredniško zaledje (obnašanje ts/bifrost/auto, umestitev 9router v primerjavi s CLIProxyAPI in strategijo nadomestnega delovanja pri visoki prepustnosti) glejte [Strategija posredniškega zaledja](/docs/reference/RELAY_BACKEND_STRATEGY.md). ### Minimalno lokalno razvojno okolje ```bash JWT_SECRET=$(openssl rand -base64 48) API_KEY_SECRET=$(openssl rand -hex 32) INITIAL_PASSWORD=dev123 PORT=20128 NODE_ENV=development ``` ### Produkcijsko okolje Docker ```bash JWT_SECRET= API_KEY_SECRET= INITIAL_PASSWORD= STORAGE_ENCRYPTION_KEY= DATA_DIR=/data PORT=20128 API_PORT=20129 NODE_ENV=production AUTH_COOKIE_SECURE=true REQUIRE_API_KEY=true NEXT_PUBLIC_BASE_URL=https://omniroute.example.com BASE_URL=http://localhost:20128 OMNIROUTE_MEMORY_MB=8192 CORS_ORIGIN=https://your-frontend.example.com ``` ### Izolirano okolje / CI ```bash JWT_SECRET=test-jwt-secret-for-ci API_KEY_SECRET=test-api-key-secret-for-ci INITIAL_PASSWORD=testpass NODE_ENV=production OMNIROUTE_DISABLE_BACKGROUND_SERVICES=true APP_LOG_TO_FILE=false ``` ### VPS z obratnim posredniškim strežnikom (nginx + Cloudflare) ```bash JWT_SECRET= API_KEY_SECRET= STORAGE_ENCRYPTION_KEY= PORT=20128 AUTH_COOKIE_SECURE=true REQUIRE_API_KEY=true NEXT_PUBLIC_BASE_URL=https://omniroute.example.com BASE_URL=http://127.0.0.1:20128 CORS_ORIGIN=https://omniroute.example.com ENABLE_TLS_FINGERPRINT=true CLI_COMPAT_ALL=1 ``` --- ## 24. Izolirano okolje za veščine (v3.8.0+) Omejitve in varnostne nastavitve, ki se uporabljajo, ko ogrodje Skills (`src/lib/skills/`) izvaja uporabniško določene avtomatizacije v izoliranem okolju. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | --------------------------------- | --------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `SKILLS_SANDBOX_TIMEOUT_MS` | `10000` (10 s) | `src/lib/skills/builtins.ts` | Časovna omejitev dejanskega časa za posamezno izvajanje kode veščine v izoliranem okolju. Gre za strogo omejitev; vse, kar traja dlje, se prekine. | | `SKILLS_EXECUTION_TIMEOUT_MS` | _(uporabi `SKILLS_SANDBOX_TIMEOUT_MS`)_ | `src/lib/skills/` | Časovna omejitev za usklajevanje veščin na visoki ravni. Nastavite jo višje od `SKILLS_SANDBOX_TIMEOUT_MS`, da omogočite večstopenjske delovne tokove. | | `SKILLS_MAX_FILE_BYTES` | `1048576` (1 MB) | `src/lib/skills/builtins.ts` | Največje število bajtov, ki jih lahko veščina prebere iz posamezne datoteke v izoliranem okolju. | | `SKILLS_MAX_HTTP_RESPONSE_BYTES` | `256000` (250 KB) | `src/lib/skills/builtins.ts` | Največje število bajtov, zajetih iz posameznega odgovora HTTP znotraj veščine. | | `SKILLS_MAX_SANDBOX_OUTPUT_CHARS` | `100000` | `src/lib/skills/builtins.ts` | Stroga omejitev števila znakov stdout/stderr, vrnjenih iz priklica izoliranega okolja. | | `SKILLS_SANDBOX_NETWORK_ENABLED` | `false` | `src/lib/skills/builtins.ts` | Nastavite na `1`/`true`, da omogočite odhodni omrežni promet iz izoliranega okolja. Zaradi varnosti je okolje privzeto **izolirano**. | | `SKILLS_ALLOWED_SANDBOX_IMAGES` | _(prazno)_ | `src/lib/skills/builtins.ts` | Z vejicami ločen seznam dovoljenih slik vsebnikov za izvajanje v izoliranem okolju. Prazna vrednost pomeni, da je dovoljena samo vgrajena privzeta slika. | | `SKILLS_SANDBOX_DOCKER_IMAGE` | _(vgrajena privzeta vrednost)_ | `src/lib/skills/` | Slika vsebnika, uporabljena pri zagonu izoliranega okolja, podprtega z Dockerjem. Preglasite jo, da pripnete prilagojeno, varnostno utrjeno osnovno sliko. | | `SKILLS_SANDBOX_RUNTIME` | `auto` | `src/lib/skills/sandbox.ts`, `src/lib/skills/containerProvider.ts` | Izvajalno okolje vsebnikov za izolacijo veščin: `auto` \| `docker` \| `apple` \| `wsl` \| `orbstack` \| `podman`. `auto` izbere najboljše nameščeno izvajalno okolje glede na gostiteljski operacijski sistem (Apple Container/OrbStack v sistemu macOS, WSL Container v sistemu Windows, Podman v sistemu Linux), pri čemer kot nadomestno možnost uporabi Docker. | > [!CAUTION] > Omogočanje možnosti `SKILLS_SANDBOX_NETWORK_ENABLED=true` odpre pot za odhodni promet iz poljubne kode veščine. V skupnih namestitvah jo uporabljajte skupaj z `OUTBOUND_SSRF_GUARD_ENABLED=true` in strogo politiko `CORS_ORIGIN`/posredniškega strežnika. --- ## 25. Kvote ponudnikov, tuneli, varnostne kopije in razno med izvajanjem Končne točke za kvote ponudnikov, omrežni tuneli (Tailscale, Ngrok, MITM proxy za razhroščevanje), izhodni bazen 1Proxy, varnostne kopije baz podatkov in manjši prepisi po posameznih funkcijah, na katere se sklicuje izvajalna plast ali skripte. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ---------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `REDIS_URL` | `redis://localhost:6379` | `src/shared/utils/rateLimiter.ts` | Povezovalni niz Redis za zaledje omejevalnika hitrosti. | | `ALIBABA_CODING_PLAN_HOST` | _(produkcijski gostitelj)_ | `open-sse/services/bailianQuotaFetcher.ts` | Preglasi gostitelja, ki se uporablja za pridobivanje kvot coding-plana Alibaba Bailian. | | `ALIBABA_CODING_PLAN_QUOTA_URL` | izpeljano iz gostitelja | `open-sse/services/bailianQuotaFetcher.ts` | Popolna preglasitev URL-ja kvote za Alibaba Bailian. | | `QWEN_CLOUD_COOKIE` | _(ni nastavljeno)_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Sejni piškotek konzole za prehod kvot osebnega paketa Token Plan za Qwen Cloud / Model Studio (ključ API za sklepanje ga ne more prebrati). Kopirajte celotno glavo zahteve `Cookie` — vsebuje `login_qwencloud_ticket` — iz katerega koli klica `api.json` na `cs-data.qwencloud.com` na strani home.qwencloud.com › Obračun › Naročnina (F12 › Omrežje). Občutljivo in omejeno na sejo; raje uporabite polje `qwenCloudCookie` na nadzorni plošči za posamezno povezavo. | | `QWEN_CLOUD_SEC_TOKEN` | _(ni nastavljeno)_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Ročna preglasitev `sec_token` za prehod konzole Token Plan. Občutljivo; če ni nastavljeno, ga pridobivalec razreši iz HTML-ja nadzorne plošče s pomočjo piškotka. | | `QWEN_TOKEN_PLAN_HOST` | `https://cs-data.qwencloud.com` | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Preglasitev gostitelja prehoda za pridobivalec kvot osebnega paketa Token Plan (npr. `bailian-singapore-cs.alibabacloud.com` za konzolo Model Studio). | | `QWEN_TOKEN_PLAN_DASHBOARD_URL` | `https://home.qwencloud.com/` | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | URL nadzorne plošče, uporabljen za razrešitev `sec_token` iz HTML-ja prijavljene seje. | | `XIAOMI_MIMO_CONSOLE_COOKIE` | _(ni nastavljeno)_ | `open-sse/services/usage/xiaomi-mimo.ts` | Sejni piškotek konzole za API kvot paketa Token Plan Xiaomi MiMo (`platform.xiaomimimo.com/api/v1/tokenPlan/usage` + `tokenPlan/detail` — ključ API za sklepanje ga ne more prebrati). Kopirajte celotno glavo zahteve `Cookie` — vsebuje `api-platform_serviceToken` in `userId` — iz katere koli zahteve na `platform.xiaomimimo.com` na strani Token Plan (F12 › Omrežje). Občutljivo in omejeno na sejo; raje uporabite polje `xiaomiMimoConsoleCookie` na nadzorni plošči za posamezno povezavo. | | `XIAOMI_MIMO_MONTHLY_TOKEN_LIMIT` | `4100000000` | `open-sse/services/usage/xiaomi-mimo.ts` | Mesečni proračun (krediti) za nadomestni mehanizem Xiaomi MiMo, ki ga spremlja OmniRoute in se uporabi, kadar konzolni piškotek ni konfiguriran. Privzeto ustreza 4.1B nivoja Lite; nastavite ga na kredite paketa (Standard 11B / Pro 38B / Max 82B). Preglasitev `providerSpecificData.monthlyTokenLimit` na ravni posamezne povezave ima prednost pred to okoljsko spremenljivko. | | `ALIBABA_FREE_TIER_VISION_FE_PATH` | `/costing-balance/free-quota-image-video` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Preglasitev poti front-enda konzole za pridobivanje kvote brezplačnega nivoja za vision/medije v Alibaba Model Studio. | | `ALIBABA_FREE_TIER_MULTIMODAL_FE_PATH` | `/costing-balance/free-quota-multimodal` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Preglasitev poti front-enda konzole za pridobivanje multimodalne kvote brezplačnega nivoja v Alibaba Model Studio. | | `ALIBABA_FREE_TIER_AUDIO_FE_PATH` | `/costing-balance/free-quota-audio` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Preglasitev poti front-enda konzole za pridobivanje zvočne kvote brezplačnega nivoja v Alibaba Model Studio. | | `ALIBABA_FREE_TIER_ALLOWLIST_PATH` | _(ni nastavljeno)_ | `open-sse/services/alibabaFreeTierAllowlist.ts` | Izbirna pot do lokalne JSON preglastive za vgrajeni seznam dovoljenih besedilnih modelov brezplačnega nivoja Alibaba. Če ni nastavljena, se zaporedoma uporabita `$DATA_DIR/alibaba-free-tier-allowlist.json` in nato `config/alibaba-free-tier-allowlist.json`. | | `CONTEXT_RESERVE_TOKENS` | `1024` | `open-sse/services/contextManager.ts` | Žetoni, rezervirani za izhod dokončanja pri izračunu proračunov pozivov. | | `CONTEXT_KEEP_LATEST_IMAGES` | `2` | `open-sse/services/contextManager.ts` | Koliko najnovejših vgrajenih slik se ohrani pri rezanju starejših, da se prilegajo kontekstnemu oknu (#8560). | | `MODEL_ALIAS_COMPAT_ENABLED` | omogočeno | `open-sse/services/model.ts` | Preklop plasti združljivosti psevdonimov modelov (legacy), ki jo uporabljajo starejši odjemalci. | | `OMNIROUTE_EMERGENCY_FALLBACK` | omogočeno | `open-sse/services/emergencyFallback.ts` | Nastavite `false` (ali `0`), da onemogočite nujni nadomestni mehanizem ob izčrpanju proračuna, ki neuspele zahteve preusmeri na brezplačni model `nvidia`/`openai/gpt-oss-120b`. Dejanski vrstni red prednosti je: preglasitev v bazi Feature Flags > okoljska spremenljivka > privzeta vrednost; če preglasitev ni na voljo, storitev uporabi surovo vrednost okoljske spremenljivke. | | `COMMAND_CODE_CALLBACK_PORT` | _(ni nastavljeno)_ | `src/app/api/providers/command-code/auth/shared.ts` | Lokalna vrata, uporabljena za povratne klice v slogu OAuth iz pomožnika Command Code CLI. | | `COMMAND_CODE_VERSION` | `0.33.2` | `open-sse/executors/commandCode.ts` | Vrednost, poslana kot glava `x-command-code-version` do zgornjega toka Command Code. Prepišite, da povišate različico CLI-ja. | | `COMMANDCODE_API_URL` | `https://api.commandcode.ai` | `open-sse/services/usage/command-code.ts` | Osnovni URL za zgornji tok porabe/kvote Command Code, ki ga uporablja telemetrija pridobivanja kvote na pametnem telefonu. Prepišite za samogostujoč ali alternativni API Command Code. | | `MITM_LOCAL_PORT` | `443` | `src/mitm/server.cjs` | Lokalna vrata, na katera se veže MITM razhroščevalni posrednik. | | `MITM_DISABLE_TLS_VERIFY` | `0` | `src/mitm/server.cjs` | Nastavite `1`, da onemogočite preverjanje TLS zgornjega toka (samo za razvoj). | | `MITM_IDLE_TIMEOUT_MS` | `60000` | `src/mitm/socketTimeouts.ts`, `src/mitm/server.cjs` | Časovna omejitev nedejavnih vtičnic (ms) za posredovane povezave; nedejavne vtičnice po tem času se zaprejo, da se prepreči uhajanje polodprtih tunelov. | | `BRIDGE_PORT` | `20129` | `bin/antigravity-bridge.mjs` | Vrata, na katerih posluša most Antigravity MITM. | | `ROUTER_URL` | `http://127.0.0.1:20128/v1/antigravity` | `bin/antigravity-bridge.mjs` | Končna točka usmerjevalnika, na katero most posreduje promet Antigravity. | | `CERT_DIR` | `/mitm` | `bin/antigravity-bridge.mjs` | Prepiše imenik, iz katerega most bere svoj material TLS. Model certifikata se izbere enako kot pri strežniku AgentBridge: `server.crt`/`server.key` za starejšo namestitev z listnim certifikatom, sicer `ca.crt`/`ca.key` (korenski CA, listni certifikat za vsak prestrežen gostitelj; vsiljeno z `MITM_ROOT_CA_ENABLED=true`). Most se ob zagonu zapre, če datoteke za aktivni model manjkajo. | | `MITM_VERBOSE` | `1` | `src/mitm/server.cjs`, `src/mitm/_internal/bypass.cjs` | Podrobnost beleženja odločitev usmerjanja: `0` utiša, višje vrednosti beležijo več odločitev o obhodih/usmeritvah. | | `MITM_ROOT_CA_ENABLED` | `false` | `src/mitm/manager.ts` | Nastavite `true`, da se vključite v model certifikatov korenski CA + listni certifikat za vsak gostitelj (#6684). Nove namestitve ga dobijo samodejno; namestitve z že obstoječim zaupanja vrednim starejšim listnim certifikatom ohranijo starejši certifikat s fiksnim SAN, razen če se vključite. | | `MITM_CERT_MODE` | `legacy` | `src/mitm/manager.ts`, `src/mitm/server.cjs` | Nastavi ga upravitelj MITM za zagnani posredniški proces (`root-ca` \| `legacy`) — odraža odločitev o migraciji certifikatov; ni namenjen ročni nastavitvi. | | `OMNIROUTE_NO_SUDO` | `0` | `src/mitm/systemCommands.ts` | Nastavite `1` (truthy), da odstranite vodilni `sudo` iz ukazov za zaupanje MITM-certifikatom — za namestitve brez root pravic / v uporabniških imenskih prostorih, kjer operater ročno zaupa CA (npr. prek mehanizma Node za dodatne CA-certifikate). | | `SKIP_ANTIGRAVITY_DNS` | _(ni nastavljeno)_ | `src/mitm/dns/provision.ts` | Nastavite `true`, da v celoti preskočite ustvarjanje DNS-vnosov v `/etc/hosts` za imena gostiteljev posrednika Antigravity — za vsebnike brez razpoložljivega sudo/root. | | `OMNIROUTE_SKIP_DNS_WRITE` | _(ni nastavljeno)_ | `src/mitm/dns/dnsConfig.ts` | Nastavite `1`, da preskočite pisanje v datoteko hosts pri dodajanju/odstranjevanju DNS-vnosov — za peskovniška ali testna okolja samo za branje. | | `OMNIROUTE_SKIP_SYSTEM_TRUST` | `0` | `src/mitm/cert/install.ts`, `src/mitm/tproxy/caTrust.ts` | Zaščita samo za teste/CI: nastavite `1`, da namestitev/odstranitev zaupanja certifikatom postane prazna operacija (no-op), tako da testni paket nikoli ne spreminja shrambe zaupanja operacijskega sistema. Samodejno se nastavi v nastavitvi testov in CI-delovnih tokovih. | | `CHANGELOG_BASE_REF` | _(samodejno)_ | `scripts/check/check-changelog-integrity.mjs` | Eksplicitna osnovna referenca (base ref) za pregrado proti požiranju datoteke CHANGELOG (privzeto osnovna veja PR-ja v CI-ju ali najvišja `release/v*`). | | `FREE_PROXY_AUTO_SYNC_ENABLED` | `false` | `src/lib/freeProxyProviders/scheduler.ts` | Nastavite `true`, da omogočite razporejevalnik samodejne sinhronizacije sklada brezplačnih posrednikov v ozadju. Po izbiri (opt-in), privzeto izklopljeno. | | `FREE_PROXY_AUTO_SYNC_INTERVAL_MS` | `1800000` | `src/lib/freeProxyProviders/scheduler.ts` | Interval samodejne sinhronizacije v milisekundah (privzeto 30 min). | | `FREE_PROXY_1PROXY_ENABLED` | `true` | `src/lib/freeProxyProviders/oneproxy.ts` | Omogočite vir brezplačnih posrednikov 1proxy. Nastavite na `false` za onemogočanje. | | `FREE_PROXY_1PROXY_API_URL` | _(glej oneproxy.ts)_ | `src/lib/freeProxyProviders/oneproxy.ts` | Preglasitev URL-ja API-ja 1proxy. | | `FREE_PROXY_1PROXY_MAX` | `500` | `src/lib/freeProxyProviders/oneproxy.ts` | Največje število posrednikov, pridobljenih iz 1proxy na eno sinhronizacijo. | | `FREE_PROXY_1PROXY_MIN_QUALITY` | `50` | `src/lib/freeProxyProviders/oneproxy.ts` | Najnižji prag ocene kakovosti za uvoz iz 1proxy. | | `FREE_PROXY_PROXIFLY_ENABLED` | `true` | `src/lib/freeProxyProviders/proxifly.ts` | Omogoči brezplačni vir proxyjev Proxifly. Za onemogočanje nastavite na `false`. | | `FREE_PROXY_PROXIFLY_QUANTITY` | `100` | `src/lib/freeProxyProviders/proxifly.ts` | Število proxyjev, ki se pridobijo pri vsaki sinhronizaciji Proxifly. | | `FREE_PROXY_PROXIFLY_ANONYMITY` | `elite` | `src/lib/freeProxyProviders/proxifly.ts` | Filter stopnje anonimnosti za Proxifly (`elite`, `anonymous`, `transparent`). | | `FREE_PROXY_IPLOCATE_ENABLED` | `false` | `src/lib/freeProxyProviders/iplocate.ts` | Omogoči brezplačni vir proxyjev IPLocate. Samo po izrecni izbiri. | | `FREE_PROXY_IPLOCATE_BASE_URL` | `https://raw.githubusercontent.com/iplocate/free-proxy-list/main/protocols` | `src/lib/freeProxyProviders/iplocate.ts` | Preglasitev osnovnega URL-ja seznama proxyjev IPLocate. | | `FREE_PROXY_WEBSHARE_ENABLED` | `true` | `src/lib/freeProxyProviders/webshare.ts` | Omogoči vir proxy zaledja Webshare. Za onemogočanje nastavite na `false`; zahteva tudi nastavljen `FREE_PROXY_WEBSHARE_API_KEY`. | | `FREE_PROXY_WEBSHARE_API_KEY` | _(brez)_ | `src/lib/freeProxyProviders/webshare.ts` | API žeton računa Webshare (`Authorization: Token `). Obvezen — brez njega ponudnik ostane onemogočen. | | `FREE_PROXY_WEBSHARE_API_URL` | `https://proxy.webshare.io/api/v2/proxy/list/` | `src/lib/freeProxyProviders/webshare.ts` | Preglasitev URL-ja API-ja seznama proxyjev Webshare. | | `FREE_PROXY_WEBSHARE_MAX` | `500` | `src/lib/freeProxyProviders/webshare.ts` | Največje število proxyjev, uvoženih pri vsaki sinhronizaciji Webshare. | | `NEXT_PUBLIC_VERCEL_RELAY_ENABLED` | `true` | `src/app/(dashboard)/…/ProxyPoolTab.tsx` | Prikaži/skrij gumb »Deploy Vercel Relay« na zavihku »Proxy Pool«. | | `VERCEL_API_BASE` | `https://api.vercel.com` | `src/app/api/settings/proxy/vercel-deploy/route.ts` | Preglasitev osnovnega URL-ja Vercel API-ja (za testiranje). | | `NEXT_PUBLIC_VERCEL_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/…/VercelRelayModal.tsx` | Privzeto ime projekta, vnaprej izpolnjeno v pogovornem oknu za namestitev Vercel Relay. | | `TAILSCALE_BIN` | _(samodejno zaznavanje)_ | `src/lib/tailscaleTunnel.ts` | Izrecna pot do izvršljive datoteke `tailscale`. | | `TAILSCALED_BIN` | _(samodejno zaznavanje)_ | `src/lib/tailscaleTunnel.ts` | Izrecna pot do izvršljive datoteke ozadnjega programa `tailscaled`. | | `TAILSCALE_AUTHKEY` | _(ni nastavljeno)_ | `src/lib/tailscaleTunnel.ts` | Vnaprej deljen avtentikacijski ključ Tailscale za neinteraktivni / headless način `tailscale up` (posredovan z `--auth-key=`). Če ni nastavljen, se prijava vrne na interaktivni URL za avtentikacijo v brskalniku. | | `NGROK_AUTHTOKEN` | _(ni nastavljeno)_ | `src/lib/ngrokTunnel.ts` | Preverja pristnost odhodnih tunelov ngrok. | | `DB_BACKUP_MAX_FILES` | `20` | `src/lib/db/backup.ts` | Največje število datotek varnostnih kopij SQLite, ki jih ohrani ročno/načrtovano čiščenje varnostnih kopij. Posnetki migracij so naslovljeni po vsebini in se ponovno uporabijo za enako stanje baze podatkov; znotraj sočasnega migracijskega okna se ne izbrišejo. Preglasi vrednost, shranjeno v Nastavitve → Ohranjanje varnostnih kopij baze podatkov. | | `DB_BACKUP_RETENTION_DAYS` | `0` | `src/lib/db/backup.ts` | Največja starost (v dneh), ki jo ohrani ročno/načrtovano čiščenje varnostnih kopij. `0` onemogoči brisanje glede na starost. Posnetki migracij se znotraj sočasnega migracijskega okna ne izbrišejo. Preglasi vrednost, shranjeno v Nastavitve → Ohranjanje varnostnih kopij baze podatkov. | | `OMNIROUTE_BACKUP_SCHEDULE_JOB_INTERVAL_MS` | `30000` | `src/lib/jobs/backupScheduleJob.ts` | Interval taktov (ms) strežniškega opravila, ki izvaja `backup-schedule.json`. Mora ostati precej pod 1-minutno granulacijo cron-a; vrednosti pod `5000` ali neprepoznavne vrednosti privzamejo `30000`. | | `CONTAINER_HOST` | `docker` | `scripts/check-permissions.sh` | Namig o izvajalcu vsebnikov za preverjanje dovoljenj vstopne točke. Nastavite na `podman` za katero koli topologijo Podman. Ker vsebnik ne more ugotoviti, ali je pogon lokalen ali dosežen prek Podman Machine, opozorilo ostaja nevtralno glede topologije in se sklicuje na `contrib/podman/README.md`. | | `QUOTA_STORE_DRIVER` | `sqlite` | `src/lib/quota/storeFactory.ts` | Ozadnja shramba porabe kvotne delitve: `sqlite` (privzeto) ali `redis`. | | `QUOTA_STORE_REDIS_URL` | _(ni nastavljeno)_ | `src/lib/quota/storeFactory.ts` | Povezovalni niz Redis, ki se uporabi, ko je `QUOTA_STORE_DRIVER=redis` (npr. `redis://localhost:6379`). | | `QUOTA_SATURATION_THRESHOLD` | `0.5` | `src/lib/quota/enforce.ts` | Razmerje nasičenosti nabora (0..1); ob njej ali nad njo nabor preide v strog način (brez izposoje). | | `QUOTA_SOFT_DEPRIORITIZE_FACTOR` | `0.7` | `open-sse/services/combo.ts` | Množitelj ocene (0..1), uporabljen na cilju, ko ga politika mehke kvote postavi v nižjo prednost. | | `STATUS_SOFT_DEPRIORITIZE_FACTOR` | `0.5` | `open-sse/services/combo/autoStrategy.ts` | Množitelj ocene (0..1), uporabljen na izčrpanem ponudniku (`credits_exhausted`/`rate_limited`) pri točkovanju samodejne kombinacije (auto-combo), ko je predhodni odrez kvote IZKLOPLJEN (#4540). | | `QUOTA_CONSUMPTION_RETENTION_DAYS` | `14` | `src/lib/db/quotaConsumption.ts` | Obdobje hrambe (v dneh) za segmente `quota_consumption` pred čiščenjem GC (`gcQuotaConsumption`). | | `QUOTA_PREFLIGHT_CUTOFF_ENABLED` | `false` | `src/lib/resilience/settings.ts` | Po izbiri (privzeto IZKLOPLJENO): omogoči trd odrez kvote pri samodejnem usmerjanju, ki pred točkovanjem zavrže kandidate z nizko kvoto. | | `OMNIROUTE_AUTO_FREE_FALLBACK_TO_FULL_POOL` | `false` | `open-sse/services/autoCombo/virtualFactory.ts` | Po izbiri (privzeto IZKLOPLJENO): ko filter `auto/:` ne najde nobenega povezanega kandidata, obnovi prejšnje vedenje umika na celoten (nefiltriran) nabor namesto vrnitve praznega nabora. Privzeta vrednost IZKLOPLJENO pomeni, da `:free` pomeni »samo brezplačna raven«. | | `OMNIROUTE_CHAOS_MAX_PANEL` | `5` | `open-sse/services/autoCombo/virtualFactory.ts` | Zgornja meja velikosti panela (omejena na 1–10) za različico razširjanja `auto/*:chaos` — ena zahteva se razveji na največ toliko modelov različnih ponudnikov. | | `OMNIROUTE_CHAOS_MIN_PANEL` | _(privzeto po motorju)_ | `open-sse/services/autoCombo/virtualFactory.ts` | Najmanjša nastavitev velikosti panela, posredovana obdelovalcu razpošiljanja kaosa; če ni nastavljena, velja privzeta vrednost motorja. | | `OMNIROUTE_CHAOS_PANEL_TIMEOUT_MS` | _(privzeto po motorju)_ | `open-sse/services/autoCombo/virtualFactory.ts` | Stroga časovna omejitev (ms) za celotno razvejitev (fan-out) panela kaosa; če ni nastavljena, velja privzeta vrednost motorja. | | `GROK_AUTH_PATH` | `~/.grok/auth.json` | `open-sse/services/grokQuotaFetcher.ts` | Pot do datoteke `auth.json` orodja Grok CLI, uporabljene za pridobivanje tedenske kvote grok-web; preglasite za teste ali nestandardno namestitev CLI. | | `AGENTBRIDGE_UPSTREAM_CA_CERT` | _(ni nastavljeno)_ | `src/mitm/manager.ts` | Dodatno potrdilo CA (PEM), ki se mu zaupa za povezave TLS AgentBridge z nadrejenimi (upstream) strežniki. | | `INSPECTOR_BUFFER_SIZE` | `1000` | `src/mitm/inspector/buffer.ts` | Največje število zajetih zahtev, shranjenih v krožnem medpomnilniku Traffic Inspector. | | `INSPECTOR_MAX_BODY_KB` | `1024` | `src/mitm/inspector/buffer.ts` | Največja velikost telesa zajete zahteve/odziva (v KB) pred obrezanjem. | | `INSPECTOR_HTTP_PROXY_PORT` | `8080` | `src/mitm/inspector/httpProxyServer.ts` | Lokalna vrata za HTTP-proxy Traffic Inspector. | | `INSPECTOR_HTTP_PROXY_AUTOSTART` | `false` | `src/mitm/inspector/httpProxyServer.ts` | Samodejni zagon HTTP-proxyja inšpektorja ob zagonu. | | `INSPECTOR_LLM_HOSTS_EXTRA` | _(ni nastavljeno)_ | `src/lib/inspector/captureState.ts` | Dodatna imena gostiteljev (ločena z vejico), ki se obravnavajo kot končne točke LLM za zajem. | | `INSPECTOR_MASK_SECRETS` | `true` | `src/mitm/inspector/buffer.ts` | Zakrij skrivnosti (glave za avtentikacijo / ključe API) v zajetem prometu. | | `INSPECTOR_SYSTEM_PROXY_GUARD_MINUTES` | `30` | `src/app/api/tools/traffic-inspector/capture-modes/system-proxy/route.ts` | Minute, preden varovalni mehanizem sistemskega proxyja samodejno povrne nastavitve proxyja operacijskega sistema. | | `INSPECTOR_INTERNAL_INGEST_TOKEN` | _(samodejno)_ | `src/app/api/tools/traffic-inspector/internal/ingest/route.ts` | Žeton za preverjanje pristnosti notranjega vnosa zajema v inšpektor. | | `PLAYGROUND_COMPARE_MAX_COLUMNS` | `4` | `src/app/(dashboard)/dashboard/playground/` | Največje število stolpcev drug ob drugem v načinu primerjave v Playgroundu. | | `PLAYGROUND_IMPROVE_PROMPT_DEFAULT_MODEL` | _(ni nastavljeno)_ | `src/app/(dashboard)/dashboard/playground/` | Privzeti model za dejanje »izboljšaj poziv« v Playgroundu (če ni nastavljen, se uporabi aktivni model). | | `BIFROST_ENABLED` | `1` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Glavno izklopno stikalo za stranski proxy bifrost. Ko je nastavljeno na `0`, pot vrne 503 z glavo `X-Bifrost-Killswitch` in operater je preusmerjen na pot TS. Uporabite za onemogočanje stranske storitve brez ponovne namestitve (incident usmerjevalnika prve stopnje, rotacija ključev). | | `BIFROST_BASE_URL` | _(ni nastavljeno)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Ko je nastavljen, pot stranskega proxyja Bifrost posreduje promet `/v1/chat/completions` temu prehodu Go namesto obravnavalniku posredovanja TS. Nenastavljeno → 503 z rezervno varianto. Končna poševnica se odstrani. | | `BIFROST_PORT` | `8080` | `src/lib/services/bootstrap.ts` | Vrata, na katera se veže nadzorovana vgrajena storitev Bifrost (`127.0.0.1:`), ko OmniRoute upravlja življenjski cikel stranske storitve Bifrost. Privzeto `8080`. | | `LLMLINGUA_PORT` | `20135` | `src/lib/services/bootstrap.ts` | Vrata, na katera se veže nadzorovana storitev stiskanja LLMLingua (`127.0.0.1:`). Privzeto `20135`. | | `LLMLINGUA_BASE_URL` | `http://127.0.0.1:20135` | `open-sse/services/compression/engines/llmlingua/index.ts` | Osnovni URL za lokalnega demona mikrostoritve HTTP stiskanja LLMLingua. Privzeto `http://127.0.0.1:20135`. | | `LLMLINGUA_MODEL` | `atjsh/llmlingua-2-js-tinybert-meetingbank` | `src/lib/services/installers/llmlingua.ts` | ID modela Hugging Face, ki ga naloži nadzorovana stranska storitev LLMLingua (posredovan okolju podrejenega procesa). | | `BIFROST_API_KEY` | _(ni nastavljeno)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | API ključ za prehod Bifrost (poslan kot `Authorization: Bearer ...`). Če ni nastavljen, pot pričakuje, da zahteva nosi veljaven API ključ OmniRoute; ta ključ je namenjen samo preverjanju pristnosti na strani prehoda. | | `BIFROST_STREAMING_ENABLED` | `true` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Kadar je true, pot sidecarja Bifrost pretaka odzive nazaj prek SSE skozi prehod namesto prek TS izvajalnika pretakanja. Nastavite na `0`, da vsilite odzive JSON brez pretakanja skozi prehod. | | `BIFROST_TIMEOUT_MS` | `30000` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Časovna omejitev na zahtevo pri posredovanju prehodu Bifrost (ms). Ob izteku časovne omejitve pot vrne pot TS releja prek glave `X-Bifrost-Fallback`. | | `OMNIROUTE_BIFROST_KEY` | _(nenastavljeno)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Vzdevek za `BIFROST_API_KEY` (uporabljajo ga skripti, ki berejo okolje prek `OMNIROUTE_*`). `BIFROST_API_KEY` ima prednost, kadar sta nastavljena oba. | | `OMNIROUTE_RELAY_BACKEND` | `ts` / `auto` | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | Zaledje releja za `/api/v1/relay/chat/completions`: `ts \| bifrost \| auto`. `ts` = TypeScript relej (privzeto, ko Bifrost ni konfiguriran); `auto` izbere Bifrost, kadar je nastavljen `BIFROST_BASE_URL` in `BIFROST_ENABLED` ≠ `0`, s samodejnim preklopom na TS, če sidecar ni dosegljiv; `bifrost` vsili Bifrost (strogo, brez preklopa). Avtentikacija/omejevanje hitrosti/zaščita pred injekcijo/seznam dovoljenih se vedno najprej izvedejo v Next poti. Odzivi nosijo `X-Routing-Backend` / `X-Routing-Fallback` / `X-Routing-Fallback-Reason`. | | `RELAY_ROUTING_BACKEND` | _(nenastavljeno)_ | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | Sprejet vzdevek za `OMNIROUTE_RELAY_BACKEND` (iste vrednosti `ts \| bifrost \| auto`). `OMNIROUTE_RELAY_BACKEND` ima prednost, kadar sta nastavljena oba. | | `OMNIROUTE_BIFROST_FAILURE_COOLDOWN_MS` | `5000` | `src/app/api/v1/relay/chat/completions/bifrostCooldown.ts` | Ohajalni čas (ms) po neuspelem skoku sidecarja Bifrost v načinu `auto`, preden relej znova poskusi sidecar; med trajanjem ohlajanja usmerja neposredno na TS pot, nato spet sondira. `0` onemogoči. Velja samo, kadar je `OMNIROUTE_RELAY_BACKEND=auto`. | | `OMNIROUTE_TLS_CERT` | _(nenastavljeno)_ | `bin/cli/commands/serve.mjs` | Pot do potrdila PEM TLS za strežbo ukaza `omniroute serve` prek HTTPS (enakovredno `--tls-cert`). Mora biti v paru z `OMNIROUTE_TLS_KEY`; samostojni strežnik nato zaključi TLS na istem poslušalcu (`wss://` deluje nespremenjeno). Nenastavljeno → navadni HTTP. Če je podan samo eden od potrdila/ključa ali neberljiva pot, se zabeleži opozorilo in ostane HTTP. | | `OMNIROUTE_TLS_KEY` | _(nenastavljeno)_ | `bin/cli/commands/serve.mjs` | Pot do zasebnega ključa PEM TLS za HTTPS ukaza `omniroute serve` (enakovredno `--tls-key`). Mora biti v paru z `OMNIROUTE_TLS_CERT`. Glejte `OMNIROUTE_TLS_CERT`. | | `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED` | `0` | `src/lib/security/localEndpoints.ts` | Glavno stikalo za poti `/api/local/*`. Kadar ni nastavljeno ali je `0`, vse poti `/api/local/*` v produkciji vračajo 503. Mora biti `1` pri namestitvah zunaj loopbacka, da se omogoči zaganjalnik Redis in podobni zaganjalniki lokalnih storitev na en klik. Dvojno varovanje z razvrstitvijo stražarja poti `isLocalOnlyPath()` (`LOCAL_ONLY_API_PREFIXES` v `src/server/authz/routeGuard.ts`). | | `OMNIROUTE_LOCAL_ENDPOINTS_TOKEN` | _(nenastavljeno)_ | `src/lib/security/localEndpoints.ts` | Žeton Bearer za klicatelje `/api/local/*`, ki niso na loopbacku (npr. namizna aplikacija). Kadar je nastavljen, morajo zahteve z naslovov IP zunaj loopbacka nositi `Authorization: Bearer `. Zahtevano, kadar je `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED=1` pri namestitvah zunaj loopbacka. | | `OMNIROUTE_REDIS_CONTAINER_NAME` | `omniroute-redis` | `bin/cli/commands/redis.mjs` | Ime vsebnika za zaganjalnik Redis na en klik (`omniroute redis up`). Uporabljata ga tako CLI kot grafični vmesnik `RedisLauncherPanel`. | | `OMNIROUTE_REDIS_HOST_PORT` | `6379` | `bin/cli/commands/redis.mjs` | Vrata gostitelja za zaganjalnik Redis na en klik. Spremenite jih, če gostitelj že veže 6379. Notranja vrata vsebnika ostanejo 6379. | | `OMNIROUTE_REDIS_BIND_HOST` | `127.0.0.1` | `bin/cli/commands/redis.mjs` | Vmesnik gostitelja, na katerem zaganjalnik Redis na en klik objavlja vrata. Zaganjalnik zažene Redis BREZ gesla, zato vezava na `0.0.0.0` vsakemu gostitelju v vašem LAN-u omogoči neoverjen dostop do Redisa — to razširite le, če na instanci sami nastavite tudi geslo. | | `REDIS_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Vmesnik gostitelja, na katerem docker-compose objavlja spremljevalni vsebnik Redis (#9286). Compose Redis teče brez `requirepass`; aplikacijski vsebniki ga dosežejo prek omrežja compose (`redis:6379`) — objavljena vrata obstajajo samo za orodja na strani gostitelja. `0.0.0.0` izpostavi neoverjen Redis celotnemu LAN-u. | | `REDIS_PORT` | `6379` | `docker-compose.yml` | Vrata gostitelja za spremljevalni vsebnik Redis v compose. | | `APP_BIND_HOST` | `127.0.0.1` | `docker-compose.yml`, `docker-compose.prod.yml` | Vmesnik gostitelja, na katerem docker-compose objavlja lastna vrata aplikacije za nadzorno ploščo/API/live-WS (#12568). Ker `REQUIRE_API_KEY=false` prihaja kot privzeta vrednost v `.env.example`, `0.0.0.0` izpostavi anonimni posrednik LLM `/v1` celotnemu LAN/WAN — razširite šele, ko je `REQUIRE_API_KEY=true` ali ko obratni posrednik pred njim uveljavlja lastno avtentikacijo. | | `QDRANT_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Vmesnik gostitelja, na katerem docker-compose objavlja spremljevalni vsebnik pomnilnika Qdrant (#12578). Enaka utemeljitev glede izpostavljenosti LAN-u kot pri `REDIS_BIND_HOST`. | | `BIFROST_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | Vmesnik gostitelja, na katerem docker-compose objavlja spremljevalni vsebnik usmerjevalnika Bifrost (#12578). Enaka utemeljitev glede izpostavljenosti LAN-u kot pri `REDIS_BIND_HOST`. | | `REDIS_KEY_PREFIX` | `omniroute:` | `src/shared/utils/rateLimiter.ts` | Predpona imenskega prostora, ki se uporabi za vsak ključ OmniRoute Redis (omejevalnik hitrosti, predpomnilnik avtentikacije, shramba kvot, prekinjevalnik vezja za ogrevanje). Preprečuje trke ključev, ko instanco Redis delite z drugimi aplikacijami (#11042). | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | _(ni nastavljeno — mehanizem onemogočen)_ | `src/lib/api/internalServiceAuth.ts` | Skupna skrivnost za notranje skoke REST z ohranjanjem identitete (#9260): komponente OmniRoute, ki kličejo druge lokalne poti OmniRoute, jo pošiljajo kot `x-omniroute-internal-service-token`, da se ohrani identiteta prvotnega klicatelja. Primerjava poteka s `timingSafeEqual`. | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | _(ni nastavljeno)_ | `src/lib/api/internalServiceAuth.ts` | Različica žetona notranje storitve iz datoteke s skrivnostjo: pot do datoteke, katere obrezana vsebina je žeton. Uporabi se le, ko vgrajena spremenljivka ni nastavljena. | | `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | `src/lib/catalog/openrouterProviderStats.ts` | Obogati seznam ponudnikov na nadzorni plošči s tedensko statistiko uvrstitev OpenRouter (#9324). Privzeto vklopljeno; nastavite `false`, da v celoti preskočite pridobivanje v ozadju (neblokirajoče, nikoli usodno). | | `OPENROUTER_PROVIDER_STATS_TTL_MS` | `86400000` (24h) | `src/lib/catalog/openrouterProviderStats.ts` | TTL predpomnilnika za posnetek statistik ponudnikov OpenRouter, v milisekundah. | | `OMNIROUTE_REDIS_IMAGE` | `redis:7-alpine` | `bin/cli/commands/redis.mjs` | Slika Redis, ki jo uporablja zaganjalnik Redis z enim klikom. Po potrebi preglasite na `redis:8-alpine` ali zasebno ogledalo registra. | | `QDRANT_HOST` | `qdrant` | _(profil gruče po izbiri)_ | Ime gostitelja stranske storitve Qdrant, ko je aktiven `--profile memory`. Privzeto kaže na ime storitve qdrant znotraj omrežja; preglasite za zunanjo namestitev. Uporabi se le, ko je `qdrantEnabled` v kodi `true` (`src/lib/memory/vectorStore.ts:108`). | | `QDRANT_PORT` | `6333` | _(profil gruče po izbiri)_ | REST vrata stranske storitve Qdrant. | | `QDRANT_GRPC_PORT` | `6334` | _(profil gruče po izbiri)_ | gRPC vrata stranske storitve Qdrant. Uporabljajo jih odjemalske knjižnice, ki za operacije pretakanja raje uporabljajo gRPC namesto REST. | | `QDRANT_API_KEY` | _(ni nastavljeno)_ | _(profil gruče po izbiri)_ | Neobvezen API ključ za Qdrant Cloud ali avtenticirano lokalno instanco. Prazno → glava `api-key` se ne pošlje. | | `QDRANT_COLLECTION` | `omniroute-memory` | _(profil gruče po izbiri)_ | Ime zbirke za vdelave pomnilnika pogovorov OmniRoute. Ustvari se ob prvem zagonu z `QDRANT_VECTOR_SIZE` dimenzijami. | | `QDRANT_EMBEDDING_MODEL` | `text-embedding-3-small` | _(profil gruče po izbiri)_ | Privzeto ime modela vdelav, zabeleženo v metapodatkih zbirke Qdrant. Dejanske vdelave ustvari ponudnik, na katerega kaže polje `embeddingModel` v nastavitvah OmniRoute. | | `QDRANT_VECTOR_SIZE` | `1536` | _(izbirni profil grozda)_ | Dimenzija vektorja vdelave. Mora se ujemati z modelom, s katerim izvajate vdelavo (text-embedding-3-small → 1536; ada-002 → 1536; nomic-embed-text → 768). | | `QDRANT_HNSW_EF_CONSTRUCT` | `128` | _(izbirni profil grozda)_ | Natančnost indeksa HNSW med izgradnjo. Višja vrednost = počasnejša izgradnja, hitrejše iskanje. | | `OMNIROUTE_ROTATION_ENABLED` | `true` | `open-sse/services/rotationConfig.ts` | Glavno stikalo za rotacijo računov, ki jo lahko konfigurira operater. Ko je `false`, nobeden od spodnjih razredov `OMNIROUTE_ROTATE_*` ne sproži preklopa računa (izključeno glavno stanje blokira tudi privzeto omogočene razrede 429/500/502). Omogoča nadzornemu vmesniku (npr. namizni aplikaciji VibeProxy), da zrcali svoja pravila rotacije na mehanizem preklopa računov v ozadju. | | `OMNIROUTE_ROTATION_RATE_LIMIT_RESET_SECONDS` | `0` | `open-sse/services/rotationConfig.ts` | Čas ohladitve (v sekundah), ki se uporabi za račun z omejeno hitrostjo, ko vir ne poda izrecnega namika o ponastavitvi. `0` = uporabi privzeto ohladitev mehanizma namesto fiksne preglasitve. | | `OMNIROUTE_ROTATION_DISABLE_TAG_WITHOUT_RESET` | `true` | `open-sse/services/rotationConfig.ts` | Zrcaljenje nastavitve vmesnika »ne označi kot omejeno brez časa ponastavitve«. | | `OMNIROUTE_ROTATE_ON_429` | `true` | `open-sse/services/rotationConfig.ts` | Omogočanje preklopa glede na status za napake `429`. Ko je `false` (in `OMNIROUTE_ROTATION_ENABLED=true`), napaka `429` ne sproži več rotacije računa in se namesto tega vrne odjemalcu. | | `OMNIROUTE_ROTATE_429_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Število napak `429` znotraj `OMNIROUTE_ROTATE_429_WINDOW_SECONDS`, potrebnih pred rotacijo računa. `1` (privzeto) rotira takoj in ohranja prejšnje vedenje. | | `OMNIROUTE_ROTATE_429_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | Drsno okno (v sekundah), v katerem se napake `429` štejejo za `OMNIROUTE_ROTATE_429_THRESHOLD`. | | `OMNIROUTE_ROTATE_ON_500` | `true` | `open-sse/services/rotationConfig.ts` | Omogočanje preklopa glede na status za strežniške napake `5xx` (razen `502`, ki ima svoj razred). Ko je `false`, te napake ne sprožijo več rotacije računa. | | `OMNIROUTE_ROTATE_500_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Število napak `5xx` znotraj `OMNIROUTE_ROTATE_500_WINDOW_SECONDS`, potrebnih pred rotacijo računa. `1` (privzeto) rotira takoj. | | `OMNIROUTE_ROTATE_500_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | Drsno okno (v sekundah), v katerem se napake `5xx` štejejo za `OMNIROUTE_ROTATE_500_THRESHOLD`. | | `OMNIROUTE_ROTATE_ON_502` | `true` | `open-sse/services/rotationConfig.ts` | Omogočanje nadomestnega preklopa po statusu za napake `502` (bad gateway). Ko je `false`, napake `502` ne sprožijo več rotacije računa. | | `OMNIROUTE_ROTATE_502_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Število napak `502` znotraj `OMNIROUTE_ROTATE_502_WINDOW_SECONDS`, potrebno za rotacijo računa. `1` (privzeto) izvede rotacijo takoj. | | `OMNIROUTE_ROTATE_502_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | Drsno okno (v sekundah), v katerem se napake `502` štejejo za `OMNIROUTE_ROTATE_502_THRESHOLD`. | | `OMNIROUTE_ROTATE_ON_400` | `false` | `open-sse/services/rotationConfig.ts` | Po izbiri (privzeto IZKLOPLJENO): ko je `true`, navadna napaka `400` (bad request) prav tako sproži rotacijo računa. To je zgolj dodatno — nikoli ne prepreči obstoječega vedenja mehanizma, pri katerem `400`, ki vsebuje besedilo o omejitvi hitrosti/kvoti, še vedno sproži preklop ne glede na to zastavico. | | `OMNIROUTE_ROTATE_400_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | Število napak `400` znotraj `OMNIROUTE_ROTATE_400_WINDOW_SECONDS`, potrebno za rotacijo računa (upošteva se le, ko je `OMNIROUTE_ROTATE_ON_400=true`). | | `OMNIROUTE_ROTATE_400_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | Drsno okno (v sekundah), v katerem se napake `400` štejejo za `OMNIROUTE_ROTATE_400_THRESHOLD`. | ### Načrtovalnik predogrevanja Claude S Cron-om vodeno predogrevanje za povezave Anthropic OAuth, ki so to izrecno omogočile, da se 5-urno okno omejitve hitrosti odpre s preprosto načrtovano zahtevo namesto s prvo dejansko (#8848). Načrtovalnik je izklopljen, razen če ima `OMNIROUTE_WARMUP_ENABLED` resnično (truthy) vrednost **in** je povezava označena v `settings.claudeWarmup.connections`; prazen seznam povezav pomeni, da se nič ne predogreje, tudi če je spremenljivka okolja vklopljena. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ------------------------------ | -------------------------------- | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_WARMUP_ENABLED` | _(ni nastavljeno → izklopljeno)_ | `src/lib/warmupScheduler.ts` | Glavno stikalo za razporejevalnik ogrevanja. Sprejme `1`/`true`/`yes`/`on` (neobčutljivo na velikost črk, obrezano). Katera koli druga vrednost ali nenastavljeno pusti razporejevalnik izklopljen. | | `OMNIROUTE_WARMUP_CRON` | `0 7 * * *` | `src/lib/warmupScheduler.ts` | Petpoljanski cron izraz za impulz ogrevanja, ovrednoten v časovnem pasu `America/Los_Angeles` (Anthropicov časovni pas ponastavitve) ne glede na uro gostitelja. | | `OMNIROUTE_WARMUP_CONCURRENCY` | `3` | `src/lib/warmupScheduler.ts` | Koliko povezav se ogreva vzporedno na impulz. Omejeno na `1`–`10`; neštevilska vrednost se vrne na `3`. | | `OMNIROUTE_WARMUP_MODEL` | `claude-3-5-haiku-20241022` | `src/lib/warmupScheduler.ts` | Model, uporabljen za zahtevo ogrevanja. Preglasite samo, če privzeti ni na voljo v vašem paketu; izberite najcenejši model, ki še vedno odpre okno. | ### VNC-seje za prijavo v brskalnik in vzdevek Data-Dir Vsebnikovan Chromium+VNC, uporabljen za interaktivno zajemanje poverilnic pri prijavi v brskalnik (`/api/vnc-session`), poleg tega pa še podedovani vzdevek `DATA_DIR`. Vse je neobvezno — privzete VNC-vrednosti ciljajo na priloženo sliko `omniroute-vnc-chromium:local` in se preglasijo le za sliko vsebnika po meri, vrata ali prilagoditev življenjskega cikla. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | Oznaka Docker slike za prijavni vsebnik Chromium+VNC. Zgradite `docker/vnc-browser/chromium` ali to usmerite na sliko po meri. | | `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | Binarna datoteka izvajalnega okolja vsebnikov, uporabljena za zagon VNC-vsebnika (npr. nastavite na `podman`). | | `OMNIROUTE_VNC_CONTAINER_VNC_PORT` | `3000` | `src/lib/vncSession/manifest.ts` | Vrata VNC/noVNC, izpostavljena znotraj vsebnika. | | `OMNIROUTE_VNC_CONTAINER_CDP_PORT` | `9223` | `src/lib/vncSession/manifest.ts` | Vrata protokola Chrome DevTools Protocol znotraj vsebnika. | | `OMNIROUTE_VNC_CONTAINER_PROFILE_DIR` | `/config` | `src/lib/vncSession/manifest.ts` | Pot do imenika profila Chromium znotraj vsebnika. | | `OMNIROUTE_VNC_PROFILE_DIR` | `$HOME/.omniroute/browser-login-profiles` | `src/lib/vncSession/manifest.ts` | Imenik gostitelja, ki hrani trajno shranjene profile prijave v brskalnik. | | `OMNIROUTE_VNC_IDLE_MS` | `600000` (10 min) | `src/lib/vncSession/manifest.ts` | Časovna omejitev nedejavnosti (ms), preden se neaktivna VNC-seja odstrani. | | `OMNIROUTE_VNC_MAX_MS` | `1800000` (30 min) | `src/lib/vncSession/manifest.ts` | Trda zgornja meja (ms) življenjske dobe posamezne VNC-seje. | | `OMNIROUTE_VNC_MAX_SESSIONS` | `4` | `src/lib/vncSession/manifest.ts` | Največje število hkratnih VNC-sej. | | `OMNIROUTE_VNC_READY_MS` | `45000` | `src/lib/vncSession/manifest.ts` | Časovna omejitev (ms) čakanja, da brskalnik v vsebniku postane pripravljen za CDP. | | `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | Časovna omejitev (ms) za pobiranje zajete seje/piškotkov po zaključeni prijavi. | | `OMNIROUTE_VNC_CHROMIUM_ARGS` | `--remote-debugging-port=9222 --no-first-run --no-default-browser-check` | `src/lib/vncSession/manifest.ts` | Dodatne zastavice ukazne vrstice, posredovane Chromiumu v vsebniku. | | `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | Namensko omrežje Docker, ki se mu pridruži prijavni VNC-vsebnik (#12571) namesto privzetega mostu, da sosednji vsebniki ne morejo doseči njegovih vrat mostu CDP. | | `VIBEPROXY_DATA_DIR` | _(ni nastavljeno)_ | `open-sse/services/notionThreadSessions.ts` | **Podedovani vzdevek** za `DATA_DIR`, preverjen šele potem, ko sta `DATA_DIR` in `OMNIROUTE_DATA_DIR` nenastavljena. Določa lokacijo predpomnilnika sej spletnih niti Notion (`/notion-web-thread-sessions.json`). | --- ## 26. Testno in E2E ogrodje Uporabljajo jih `scripts/dev/run-next-playwright.mjs`, `scripts/dev/smoke-electron-packaged.mjs`, `scripts/dev/run-ecosystem-tests.mjs` in `scripts/build/uninstall.mjs`. V produkcijskih namestitvah pustite vse spodnje vrednosti nenastavljene. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | -------------------------------------- | ------------------------------ | ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_E2E_BOOTSTRAP_MODE` | `auth` | `scripts/dev/run-next-playwright.mjs` | Način E2E zagona (`auth`, `fresh`, `reuse`) za izvajalnik Playwright. | | `OMNIROUTE_E2E_PASSWORD` | se vrne na `INITIAL_PASSWORD` | `scripts/dev/run-next-playwright.mjs` | Skrbniško geslo, vneseno v okolje Playwright. | | `OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | Onemogoči lokalno preverjanje stanja med izvajanjem Playwright. | | `OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | Onemogoči zanko preverjanja stanja OAuth žetonov med testi. | | `OMNIROUTE_HEALTHCHECK_SKIP_PROVIDERS` | _(nenastavljeno)_ | `src/lib/tokenHealthCheck.ts` | Ponudniki, ločeni z vejico, ki so izključeni iz proaktivnega osveževanja žetonov (npr. `codex,openai`). Ciljano usmerjena alternativa popolnemu onemogočanju preverjanja stanja — ponudniki s kratkim TTL-jem se še naprej osvežujejo, kaskadni ponudniki pa ostanejo le reaktivni. | | `OMNIROUTE_HIDE_HEALTHCHECK_LOGS` | `true` | `scripts/dev/run-next-playwright.mjs` | Odstrani hrup preverjanja stanja v izhodu stdout orodja Playwright. | | `OMNIROUTE_PLAYWRIGHT_SKIP_BUILD` | `0` | `scripts/dev/run-next-playwright.mjs` | Preskoči produkcijsko gradnjo Next.js pred zagonom Playwright (optimizacija CI). | | `OMNIROUTE_SKIP_UNINSTALL_HOOK` | `0` | `scripts/build/uninstall.mjs` | Preskoči kljuko za odstranitev OmniRoute (uporablja jo CI, da ohrani `node_modules` nedotaknjene). | | `ECOSYSTEM_SERVER_WAIT_MS` | `180000` | `scripts/dev/run-ecosystem-tests.mjs` | Čas čakanja (v ms), da strežnik postane odziven, pred zagonom testov ekosistema/protokola. | | `ELECTRON_SMOKE_URL` | `http://127.0.0.1:20128/login` | `scripts/dev/smoke-electron-packaged.mjs` | URL, na katerem preskusno ogrodje Electron pričakuje, da pakirana aplikacija streže. | | `ELECTRON_SMOKE_TIMEOUT_MS` | `45000` | `scripts/dev/smoke-electron-packaged.mjs` | Skupni časovni limit (v ms), preden preskusno ogrodje preneha. | | `ELECTRON_SMOKE_SETTLE_MS` | `2000` | `scripts/dev/smoke-electron-packaged.mjs` | Okno za ustalitev (v ms) po nalaganju strani. | | `ELECTRON_SMOKE_APP_EXECUTABLE` | _(samodejno)_ | `scripts/dev/smoke-electron-packaged.mjs` | Izrecna pot do pakirane izvedljive datoteke Electron. | | `ELECTRON_SMOKE_DATA_DIR` | _(začasna mapa)_ | `scripts/dev/smoke-electron-packaged.mjs` | Podatkovni imenik za preskusni zagon Electron. | | `ELECTRON_SMOKE_KEEP_DATA` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | Nastavite `1`, da se imenik s podatki preskusa smoke ohrani po zagonu. | | `ELECTRON_SMOKE_STREAM_LOGS` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | Nastavite `1` za pretakanje dnevnikov Electron na stdout med zagonom. | | `ELECTRON_SMOKE_COLD_RESTART` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | #7592: ponovno zažene z istim imenikom podatkov in preveri, da drugi zagon izbere izvorni gonilnik SQLite. | | `CLI_DEVIN_BIN` | _(iskanje v PATH)_ | `open-sse/executors/devin-cli.ts` | Prepiše pot do izvršljive datoteke Devin CLI. | ### Cevovod za prevajanje dokumentacije Uporablja ga `scripts/i18n/run-translation.mjs` (ukaz `npm run i18n:run`). Vseh šest spremenljivk privzeto ni nastavljenih — nastavite jih v `.env` samo na napravah, ki morajo imeti možnost zagona prevajalnika dokumentacije. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ---------------------------------------- | ------------------ | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_TRANSLATION_API_URL` | _(ni nastavljeno)_ | `scripts/i18n/run-translation.mjs` | Osnovni URL, združljiv z OpenAI, za zaledje prevajanja. | | `OMNIROUTE_TRANSLATION_API_KEY` | _(ni nastavljeno)_ | `scripts/i18n/run-translation.mjs` | Žeton Bearer za zaledje prevajanja (se nikoli ne beleži). | | `OMNIROUTE_TRANSLATION_MODEL` | _(ni nastavljeno)_ | `scripts/i18n/run-translation.mjs` | ID modela, npr. `gpt-4o-mini` ali `cx/gpt-5.4-mini`. | | `OMNIROUTE_TRANSLATION_FALLBACK_MODELS` | _(ni nastavljeno)_ | `scripts/i18n/lib/translate-backend.mjs` | Neobvezna veriga modelov, ločenih z vejico, ki se poskuša po vrsti, ko primarni model odpove (429 kvota, 401/402, 5xx, časovna omejitev, omrežje); napačno oblikovana zahteva (400/413/422) se drugje ne poskusi znova. | | `OMNIROUTE_TRANSLATION_TIMEOUT_MS` | `60000` | `scripts/i18n/run-translation.mjs` | Časovna omejitev na zahtevo v milisekundah. | | `OMNIROUTE_TRANSLATION_REASONING_EFFORT` | _(ni nastavljeno)_ | `scripts/i18n/lib/translate-backend.mjs` | Neobvezen nadzor sklepanja, ki se ob nastavitvi pošlje zaledju nespremenjen. | | `OMNIROUTE_TRANSLATION_CONCURRENCY` | `4` | `scripts/i18n/run-translation.mjs` | Vzporedne zahteve za prevajanje pri zagonu čez več datotek / lokalnih nastavitev. | --- ## 27. Vir Radar (lastno gostovanje) Izbirni dodatek, omejen s funkcijsko zastavico RADAR_ENABLED (privzeto izklopljeno — funkcijska zastavica, ki se preklaplja prek nastavitev/podatkovne zbirke in ne prek okoljske spremenljivke; glejte [docs/frameworks/RADAR.md](../frameworks/RADAR.md#flag-radar_enabled-default-off)). Prve štiri spodnje spremenljivke so izbirne preglasitve za lastno gostovani ali razvejani vir in poteke s ključi podpornikov. Peta, `RADAR_ADMIN_URL`, je ločena povezava brez privzete vrednosti do zasebne skrbniške plošče lastnika. Za celotno dokumentacijo modula in njegovo [zaporedje celovite aktivacije in vodene nastavitve](../frameworks/RADAR.md#end-to-end-activation-and-guided-setup) glejte [docs/frameworks/RADAR.md](../frameworks/RADAR.md). Splošni bralnik obvestil na domači strani/dnevnika sprememb ni konfiguriran prek okoljske spremenljivke in ni odvisen od funkcijske zastavice RADAR_ENABLED. Prekključno z metodo GET bere javni URL datoteke `news.json`, določen v `src/shared/utils/releaseNotes.ts`; ID-ji opuščenih obvestil ostanejo v lokalni shrambi brskalnika. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ----------------------------- | -------------------------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `RADAR_FEED_URL` | `https://radar.omniroute.online` | `src/lib/radar/{sync,referralsSync,offersSync,intelSync}.ts` | Osnovni URL, ki ga uporabljajo ločeno podpisani viri kataloga, napotitev, ponudb za podpornike in podatkov Intel. Preglasite ga, da kaže na lastno gostovano ali razvejano storitev. | | `RADAR_FEED_PUBKEY` | _(pripeti privzeti ključ)_ | `src/lib/radar/pinnedKeys.ts` | Javni ključ Ed25519 (SPKI v zapisu base64-DER ali PEM), ki se uporablja za preverjanje podpisov vira iz vira po meri. | | `RADAR_CONTRIBUTOR_CLAIM_URL` | `https://radar.omniroute.online/auth/github` | `src/lib/radar/links.ts` | URL, ki ga odpre gumb »Sem sodelavec« na nadzorni plošči (potek za pridobitev ključa podpornika prek GitHub OAuth). | | `RADAR_SUPPORTER_PLANS_URL` | `https://radar.omniroute.online/planos` | `src/lib/radar/links.ts` | URL, ki ga odpre gumb »Podprite projekt« na nadzorni plošči (stran za plačila/pakete). | | `RADAR_ADMIN_URL` | _(ni nastavljeno)_ | `src/lib/radar/links.ts` | Zasebna povezava do plošče za upravljanje, namenjena samo lastniku. HTTPS je obvezen, razen pri posredovanju SSH prek povratne zanke HTTP; nenastavljene ali neveljavne vrednosti ne ustvarijo navigacijskega elementa. | --- ## Revizija: odstranjene/neuporabljene spremenljivke Naslednje spremenljivke so bile prisotne v prejšnjih različicah datoteke `.env.example`, vendar v trenutni kodni zbirki **nimajo sklicev med izvajanjem**. Odstranjene so bile: | Spremenljivka | Razlog | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `STORAGE_DRIVER=sqlite` | Nobena izvorna datoteka je ne bere. SQLite je edini podprti gonilnik — izbira ni potrebna. | | `INSTANCE_NAME=omniroute` | Prisotna je v stari dokumentaciji/predlogah okolja, vendar se med izvajanjem ne uporablja. Morda bo znova uvedena v prihodnji funkciji za več instanc. | | `SQLITE_MAX_SIZE_MB=2048` | V izvorni kodi ni navedena. Velikost podatkovne zbirke ni umetno omejena. | | `SQLITE_CLEAN_LEGACY_FILES=true` | V izvorni kodi ni navedena. Čiščenje starejših datotek je bilo verjetno odstranjeno. | | `CLI_ROO_BIN` | Ni registrirana v `src/shared/services/cliRuntime.ts`. | | `CLI_KIMI_CODING_BIN` | Ni registrirana v `src/shared/services/cliRuntime.ts` (Kimi Coding uporablja OAuth in ne binarne datoteke CLI). | | `IFLOW_OAUTH_CLIENT_ID` / `IFLOW_OAUTH_CLIENT_SECRET` | Nikjer v izvorni kodi ni navedena. | | `CEREBRAS_API_KEY` / `COHERE_API_KEY` / `FIREWORKS_API_KEY` / `GROQ_API_KEY` / `MISTRAL_API_KEY` / `NEBIUS_API_KEY` / `PERPLEXITY_API_KEY` / `TOGETHER_API_KEY` / `XAI_API_KEY` | Odstranjene v v3.8.0. Izvajalno okolje teh spremenljivk okolja ne bere več — poverilnice prihajajo iz nadzorne plošče / `data/provider-credentials.json` / šifrirane podatkovne zbirke. | | `CURSOR_PROTOBUF_DEBUG` | Odstranjena v v3.8.0. Izvajalnik Cursor uporablja `CURSOR_DEBUG` / `CURSOR_STREAM_DEBUG` (glejte §22). | | `CLI_COMPAT_KIRO` | Odstranjena v v3.8.0. Kiro je v `CLI_COMPAT_OMITTED_PROVIDER_IDS` — njegov preklop nima učinka. | | `QIANFAN_API_KEY` | Odstranjena skupaj z drugimi neuporabljenimi osnutki ključev API ponudnikov v v3.8.0. | ### Popravki privzetih vrednosti | Spremenljivka | Stara vrednost v `.env.example` | Dejanska privzeta vrednost v kodi | Popravek | | ------------------------- | ------------------------------- | --------------------------------- | --------------------------------------------------------------------------------- | | `APP_LOG_RETENTION_DAYS` | `90` | `7` | ✅ Zavajajoča vrednost je odstranjena; `7` je dokumentirana kot privzeta vrednost | | `CALL_LOG_RETENTION_DAYS` | `90` | `7` | ✅ Zavajajoča vrednost je odstranjena; `7` je dokumentirana kot privzeta vrednost | ### Ponovno ustvarjanje konfiguracije OpenCode (priložnostno orodje) Uporablja ga `scripts/ad-hoc/regen-opencode-config.ts` za ponovno ustvarjanje datoteke `opencode.json` z natančnimi vrednostmi `limit.context` in `limit.output`, pridobljenimi iz delujoče instance OmniRoute. Nobena od teh vrednosti ni potrebna za običajno delovanje — skript je namenjen samo razvijalcem. | Spremenljivka | Privzeta vrednost | Izvorna datoteka | Opis | | ------------------ | ------------------------ | ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_URL` | `http://localhost:20128` | `scripts/ad-hoc/regen-opencode-config.ts` | Osnovni URL primerka OmniRoute za poizvedovanje po `/v1/models`. | | `OMNIROUTE_KEY` | _(ni nastavljeno)_ | `scripts/ad-hoc/regen-opencode-config.ts` | Ključ API za preverjanje pristnosti na končni točki OmniRoute `/v1/models`. Če ni nastavljen, se uporabi `OPENCODE_API_KEY`. | | `OPENCODE_API_KEY` | _(ni nastavljeno)_ | `scripts/ad-hoc/regen-opencode-config.ts` | Ključ API v slogu OpenCode (`sk-...`), zapisan v znova ustvarjeno datoteko `opencode.json`. Če ni nastavljen, se uporabi `OMNIROUTE_KEY`. | ### Orodje za vrednotenje stiskanja brez povezave (ad hoc) Uporablja ga `scripts/compression-eval/index.ts`, vmesnik ukazne vrstice za vrednotenje stiskanja brez povezave. Ni potrebno za običajno delovanje — namenjeno je samo razvijalcem. | Spremenljivka | Privzeta vrednost | Izvorna datoteka | Opis | | ---------------------------- | ----------------- | ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_EVAL_CREDENTIALS` | `{}` (prazno) | `scripts/compression-eval/index.ts` | Poverilnice JSON, ki jih zagotovi upravljavec, za ponudnika, ki ga uporablja vmesnik ukazne vrstice za vrednotenje stiskanja brez povezave (razčlenjene z `JSON.parse`). Če želite suhi zagon, spremenljivke ne nastavite. | ### Seje brskalnika VNC Uporablja jih `src/lib/vncSession/manifest.ts` za konfiguriranje sej brezglavega brskalnika Chromium, ki temeljijo na Dockerju, za ponudnike avtomatizacije brskalnika. Vse so izbirne — privzete vrednosti so prikazane spodaj. | Spremenljivka | Privzeta vrednost | Izvorna datoteka | Opis | | ------------------------------------- | ------------------------------ | ------------------------------------------- | ---------------------------------------------------------------------------------------- | | `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | Pot do izvršljive datoteke Docker, ki se uporablja za zagon vsebnikov VNC. | | `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | Slika Docker za vsebnik VNC Chromium. | | `OMNIROUTE_VNC_CHROMIUM_ARGS` | _(vgrajene zastavice)_ | `src/lib/vncSession/manifest.ts` | Dodatni argumenti CLI za Chromium, posredovani brskalniku znotraj vsebnika. | | `OMNIROUTE_VNC_CONTAINER_VNC_PORT` | `3000` | `src/lib/vncSession/manifest.ts` | Vrata VNC znotraj vsebnika. | | `OMNIROUTE_VNC_CONTAINER_CDP_PORT` | `9223` | `src/lib/vncSession/manifest.ts` | Vrata protokola Chrome DevTools znotraj vsebnika. | | `OMNIROUTE_VNC_CONTAINER_PROFILE_DIR` | `/config` | `src/lib/vncSession/manifest.ts` | Imenik profila znotraj vsebnika. | | `OMNIROUTE_VNC_PROFILE_DIR` | _(ni nastavljeno)_ | `src/lib/vncSession/manifest.ts` | Imenik na gostiteljski strani za trajne profile brskalnika. | | `OMNIROUTE_VNC_IDLE_MS` | `600000` | `src/lib/vncSession/manifest.ts` | Časovna omejitev nedejavnosti (ms), preden je seja VNC počiščena. | | `OMNIROUTE_VNC_MAX_MS` | `1800000` | `src/lib/vncSession/manifest.ts` | Najdaljše trajanje seje (ms). | | `OMNIROUTE_VNC_MAX_SESSIONS` | `4` | `src/lib/vncSession/manifest.ts` | Največje število sočasnih sej VNC. | | `OMNIROUTE_VNC_READY_MS` | `45000` | `src/lib/vncSession/manifest.ts` | Časovna omejitev pripravljenosti brskalnika (ms). | | `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | Časovna omejitev zbiranja/čiščenja (ms). | | `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | Namensko omrežje Docker, ki se mu pridruži vsebnik (#12571), ločeno od privzetega mostu. | | `VIBEPROXY_DATA_DIR` | _(ni nastavljeno)_ | `open-sse/services/notionThreadSessions.ts` | Imenik za trajno shranjevanje sej niti Notion. | ### Preverjanje pristnosti notranjih storitev | Spremenljivka | Privzeta vrednost | Opis | | --------------------------------------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | – | Neposredno navedeni žeton za preverjanje pristnosti med storitvami upravljavske ravnine. | | `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | – | Pot do datoteke, ki vsebuje žeton notranje storitve (prednostna možnost v vsebnikih; preglasi neposredno navedeno spremenljivko). | ### Statistični podatki ponudnikov OpenRouter | Spremenljivka | Privzeta vrednost | Opis | | ----------------------------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------- | | `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | Nastavite na `false`, da preskočite pridobivanje statističnih podatkov OpenRouter za posamezne ponudnike za obogatitev kataloga. | | `OPENROUTER_PROVIDER_STATS_TTL_MS` | `3600000` | Čas veljavnosti predpomnilnika (ms) za pridobljene statistične podatke ponudnikov OpenRouter. | ### Vdelana vezava Redis | Spremenljivka | Privzeto | Opis | | --------------------------- | ----------- | ------------------------------------------------------------------------- | | `REDIS_BIND_HOST` | `127.0.0.1` | Naslov za vezavo vdelane storitve Redis. | | `REDIS_PORT` | `6379` | Vrata za vdelano storitev Redis. | | `OMNIROUTE_REDIS_BIND_HOST` | – | Preglasitev naslova za vezavo vdelane storitve Redis z obsegom OmniRoute. | --- ## 24. Dodatki izdaje v3.8.50 Te nastavitve so bile uvedene po prejšnjem posnetku pogodbe okolja. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ------------------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `OMNIROUTE_CHAT_ADMISSION_QUEUE_MS` | `2000` | `src/shared/middleware/chatBodyAdmission.ts` | Najdaljše čakanje na prosto mesto za sprejem zahtevnega klepeta, preden se vrne ponovljiva napaka `503`; kratko omejeno čakanje serijalizira sunke agentov namesto takojšnjega `503`. `0` obnovi takojšnjo zavrnitev. | | `OMNIROUTE_CHAT_ADMISSION_MAX_QUEUED_BYTES` | `4194304` (4 MB) | `src/shared/middleware/chatBodyAdmission.ts` | Proračun čakajočih bajtov za čakanje na sprejem: omejuje skupno število bajtov telesa, parkiranih v medpomnilniku v celotnem procesu, tako da čakanje ne more napihniti kopice (#4380). Čakanja nad proračunom takoj prejmejo ponovljivo napako `503`. | | `OMNIROUTE_CHAT_VIRTUAL_TTL_MS` | `60000` (60 s) | `src/shared/middleware/chatBodyAdmission.ts` | Opuščena brez učinka od #10110: pasovi sprejema na sejo so bili odstranjeni v korist enega proračuna za celoten proces. Sprejeta zaradi združljivosti konfiguracije; ignorirana. | | `OMNIROUTE_CHAT_VIRTUAL_MAX_SESSIONS` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | Opuščena brez učinka od #10110: pasovi sprejema na sejo so bili odstranjeni v korist enega proračuna za celoten proces. Sprejeta zaradi združljivosti konfiguracije; ignorirana. | | `OMNIROUTE_CHAT_VIRTUAL_LANES` | `0` (izključeno) | `open-sse/services/admission/runtime.ts` | Prilagodljivi navidezni pasovi sprejema med izvajanjem (#9654): glavno stikalo za prilagodljiva vrata na najemnika (sistem 2). Razlikuje se od zgornjih opuščenih spremenljivk pasov na povezavo (TTL_MS / MAX_SESSIONS, brez učinka od #10110). Zastavica funkcije na nadzorni plošči z enakim imenom; okoljska spremenljivka ima prednost pred preglasitvijo nadzorne plošče; zahteva ponovni zagon. | | `OMNIROUTE_RUNNOW_TIMEOUT_MS` | `30000` | `src/app/api/jobs/[id]/run-now/route.ts` | Omejuje, kako dolgo klic run-now čaka na opravilo v teku, preden zažene čakajoči zagon. | | `ADOBE_FIREFLY_BROWSER_REFRESH` | omogočeno | `open-sse/services/adobeFireflySession.ts` | Ohranja sveže stanje IMS in tveganja brskalnika prek sej Chrome CDP, omejenih na račun; nastavite `0` za onemogočanje. | | `ADOBE_FIREFLY_SESSION_DISK` | omogočeno | `open-sse/services/adobeFireflySession.ts` | Trajno shrani popravljene seje Adobe pod `DATA_DIR`; nastavite `0` za stanje samo v pomnilniku. | | `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | `12000` | `open-sse/services/adobeFireflySession.ts` | Najmanjši razmik med pošiljkami generiranja Adobe Firefly. | | `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | Dodatno obdobje mirovanja po vsaki tretji uspešni pošiljki Adobe. | | `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | Pravi način brez glave (headless) samo za razhroščevanje; Adobe colligo nastalo sejo tveganja običajno zavrne. | | `CHROME_PATH` | samodejno zaznavanje | `open-sse/executors/cloudflare-playground.ts`, `open-sse/executors/chatgpt-web-codex.ts` | Izbirna absolutna pot do izvedljive datoteke Chrome, ki jo uporabljajo izvajalci na osnovi brskalnika, kadar samodejno zaznavanje platforme ni zadostno. | | `TELEGRAM_BOT_TOKEN` | _(ni nastavljeno)_ | `src/lib/telegram/config.ts` | Žeton BotFather, ki omogoči dohodni webhook in podpiše `initData` Mini App. | | `TELEGRAM_WEBHOOK_SECRET` | _(ni nastavljeno)_ | `src/lib/telegram/config.ts` | Skupna skrivnost, registrirana prek `setWebhook` in preverjana glede na glavo `X-Telegram-Bot-Api-Secret-Token` pri vsaki dostavi webhook. Zahtevana za pot webhook; če ni nastavljena, se dostave webhook zavrnejo s 503. | | `TELEGRAM_DEFAULT_MODEL` | `auto/chat` | `src/lib/telegram/chatProxy.ts` | Model, uporabljen za odgovore klepeta Telegram. | | `TELEGRAM_BOT_API_BASE` | `https://api.telegram.org` | `src/lib/telegram/config.ts` | Preglasitev osnovnega URL-ja Bot API za posrednike ali samogostujoče strežnike Bot API. | | `TELEGRAM_WEBHOOK_TIMEOUT_MS` | `60000` | `src/lib/telegram/config.ts` | Časovna omejitev v milisekundah za odhodne klice Bot API. | | `OMNIROUTE_OPTIONAL_PACK_TAR` | `1` (omogočeno) | `scripts/build/optionalPackStaging.mjs` | Nastavite `0`, da preskočite ustvarjanje arhivov `.tar.gz` med pripravo izbirnih paketov ML/brskalnik za samostojno drevo Electron (imeniki paketov in `optional-packs.index.json` se še vedno ustvarijo). Uporablja ga potek izdaje namizne različice za zmanjšanje velikosti nalaganja artefaktov. | | `GROK_SUBSCRIPTION_IMAGES_ENABLED` | `false` | `open-sse/config/imageRegistry.ts` | Omogoči registracijo poti slik naročnine xAI; privzeto onemogočeno, da pot slik z API-ključem ostane nespremenjena. | | `OMNIROUTE_API_KEY_COOLDOWN_MS` | `60000` | `open-sse/services/apiKeyRotator.ts` | Čas ohlajanja na ključ v milisekundah, ko odgovor `429` nima uporabnega namiga `Retry-After`. | | `OMNIROUTE_ESTIMATOR_CALIBRATION` | omogočeno | `open-sse/services/estimatorCalibration.ts` | Nastavite na `off`, `0` ali `false`, da onemogočite beleženje in uporabo kalibracije ocenjevalnika v pomnilniku. | | `NEXT_MANUAL_SIG_HANDLE` | _(interno)_ | `scripts/dev/standalone-server-ws.mjs` | Interna preglasitev obravnavalnika signalov samostojnega strežnika; običajno jo nastavi in počisti zaganjalnik, ne pa je konfigurirajo operaterji. | ### ChatGPT Web (Codex) Globalne privzete vrednosti za brskalnik brez glave in odhodni tunel orodij. Vrednosti povezave, nastavljene na nadzorni plošči, imajo prednost. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | --------------------------------------- | -------------------------------- | -------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `CHATGPT_WEB_CODEX_CHROME_PATH` | _(samodejno zaznavanje)_ | `open-sse/executors/chatgpt-web-codex.ts` | Izrecna pot Chrome/Chromium za delovanje npm, systemd in PM2. | | `CHROME_PATH` | _(samodejno zaznavanje)_ | `open-sse/executors/chatgpt-web-codex.ts` | Skupna nadomestna možnost za izrecno pot Chrome/Chromium. | | `CHATGPT_WEB_CODEX_CDP_URL` | _(ni nastavljeno)_ | `open-sse/executors/chatgpt-web-codex.ts` | Notranja končna točka CDP; Docker uporablja sidecar na vratih `9223`. | | `CHATGPT_WEB_CODEX_USE_CDP_PROFILE` | _(ni nastavljeno — izklopljeno)_ | `open-sse/vendor/codex-chatgpt-web/persistent-cdp-context.ts` | Nastavite na `1` (z konfigurirano končno točko CDP), da ponovno uporabite obstoječo stran ChatGPT zunanjega upravljanega, prijavljenega brskalniškega profila namesto izoliranega konteksta na krog; prav tako omeji sočasne zavihke ChatGPT na 1. Privzeto izklopljeno. Glejte [trajni profil CDP](../guides/CHATGPT-WEB-PERSISTENT-CDP.md). | | `CDP_PROXY_TOKEN` | _(ni nastavljeno)_ | `docker/chatgpt-web-codex-browser/cdp-proxy.mjs` | Če je nastavljen, mora vsaka zahteva na sidecar proxy CDP to vrednost poslati v glavi `X-Omni-Cdp-Token` (#13679). Brez vrednosti proxy posreduje nepreverjeno — takrat ščiti le omrežna izolacija omrežja Compose `chatgpt-web-codex-net`. Ustvarite z `openssl rand -hex 32`. | | `CHATGPT_WEB_CODEX_TUNNEL_ID` | _(ni nastavljeno)_ | `open-sse/executors/chatgpt-web-codex.ts` | Globalni ID tunela OpenAI za lokalne kroge orodij Codex. | | `CHATGPT_WEB_CODEX_RUNTIME_KEY` | _(ni nastavljeno)_ | `open-sse/executors/chatgpt-web-codex.ts` | Globalni izvajalni ključ tunela; nikoli ga ne izpisujte v dnevnike. | | `CHATGPT_WEB_CODEX_CONNECTOR_NAME` | `OmniRoute Codex v2` | `open-sse/executors/chatgpt-web-codex.ts` | Točno ime novo ustvarjenega priključka po meri ChatGPT za most MCP. | | `CODEX_CHATGPT_WEB_HOME` | `/chatgpt-web-codex` | `open-sse/vendor/codex-chatgpt-web/config.ts` | Namenski imenik za stanje brskalnika, posrednika in tunela. | | `CODEX_CHATGPT_WEB_BROWSER_DIAGNOSTICS` | `0` | `open-sse/vendor/codex-chatgpt-web/adapters/chatgpt-web/browser-worker.ts` | Pri `1` se diagnostične slike brskalnika zajamejo na vsaki kontrolni točki. | | `CODEX_CHATGPT_WEB_LAUNCHER` | _(ni nastavljeno)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Neobvezna absolutna pot do trajne zagonske datoteke. | | `CODEX_CHATGPT_WEB_BUN` | _(samodejno zaznavanje)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Neobvezna absolutna pot do izvajalne datoteke Bun. | | `CODEX_WEB_GPT_BUN` | _(ni nastavljeno)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Zastarela nadomestna možnost za `CODEX_CHATGPT_WEB_BUN`; nove namestitve uporabljajo kanonično ime. | --- ## Most OmniConductor Dolgoživ odjemalec SSE, ki zrcali naloge vozlišča OmniConductor v lokalni A2A TaskManager (`src/lib/conductor/`). Po izbiri — most se zažene le, ko je nastavljena spremenljivka `CONDUCTOR_HUB_URL`. Samo na strežniški strani: žeton vozlišča nikoli ne sme doseči brskalnika. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ------------------------------ | ----------------------- | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | | `CONDUCTOR_HUB_URL` | _(prazno)_ | `src/lib/conductor/boot.ts` | Osnovni URL vozlišča OmniConductor (npr. `http://127.0.0.1:7910`). Nenastavljeno = most onemogočen. | | `CONDUCTOR_HUB_TOKEN` | _(prazno)_ | `src/lib/conductor/boot.ts` | Poverilnica vozlišča za vir SSE — izdajte partnerja vrste `spokesperson` na vozlišču (`POST /v1/peers`, skrbnik). | | `CONDUCTOR_ORCHESTRATOR_TOKEN` | _(prazno)_ | `src/lib/conductor/hubProxy.ts` | Poverilnica za dohodno delegacijo nalog A2A→vozlišče (`POST /v1/tasks`); če ni nastavljena, se uporabi `CONDUCTOR_HUB_TOKEN`. | | `CONDUCTOR_SPOKESPERSON_URL` | `http://127.0.0.1:7920` | `src/lib/conductor/faroProxy.ts` | Osnovni URL storitve spokesperson (Faro) za proxyjem klepeta nadzorne plošče (`/api/conductor/ask`). | ### Razporejanje z upoštevanjem kvote Uporabljata `open-sse/services/combo.ts` in `src/lib/quota/quotaScheduler.ts` za preverjanje žetonskega proračuna pred zahtevo. Po izbiri — če ni nastavljeno, privzeto vedenje usmerjanja ostane nespremenjeno. | Spremenljivka | Privzeto | Izvorna datoteka | Opis | | ---------------------------------- | -------------- | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OMNIROUTE_QUOTA_AWARE_ROUTING` | `0` | `open-sse/services/combo.ts` | Kadar je `1`, preskoči povezave, katerih žetonski proračun na okno (`rateLimitOverrides.tpm`, tabela `provider_quota_state`) pred odpošiljanjem ne more pokriti ocenjenih stroškov zahteve. Če proračun ni konfiguriran, se obnaša odprto (fail-open). | | `OMNIROUTE_ESTIMATOR_CALIBRATION` | _(vklopljeno)_ | `open-sse/services/estimatorCalibration.ts` | Povratna kalibracija ocenjevalnika žetonov varovala konteksta (#14931): za vsako kombinacijo (ponudnik, model, prisotna orodja) EMA razmerja `usage.prompt_tokens` / ocena, omejena na 0,15–2,0, samo v pomnilniku. `off`, `0` ali `false` onemogoči beleženje in uporabo. | | `GROK_SUBSCRIPTION_IMAGES_ENABLED` | `false` | `open-sse/config/imageRegistry.ts` | Registrira slikovni poti `xai-oauth` (`xao`) in `grok-cli`. Funkcijska zastavica nadzorne plošče z istim imenom; prepis iz baze podatkov ima prednost pred to vrednostjo. |