Environment Variables Reference (中文 (繁體))
- 1. 必要密鑰
- 2. 儲存空間與資料庫
- 3. 網路與連接埠
- 4. 安全性與驗證
- 5. 輸入清理與 PII 保護
- 6. 工具與路由政策
- 7. URL 與雲端同步
- 8. 對外代理伺服器
- 9. CLI 工具整合
- 10. 內部代理程式與 MCP 整合
- 11. OAuth 提供者憑證
- 12. 提供者 User-Agent 覆寫
- 13. CLI 指紋相容性
- 14. API 金鑰提供者
- 15. 逾時設定
- 16. 記錄
- 17. 記憶體最佳化
- 18. 定價同步
- 19. 模型同步(開發)
- 20. 提供者特定設定
- 21. 代理伺服器健康狀態
- 22. 偵錯
- 23. GitHub 整合
- 24. Skills 沙箱(v3.8.0+)
- 27. Radar 摘要(自行託管)
- 部署情境
- 稽核:已移除/無效的變數
1. 必要密鑰
Section titled “1. 必要密鑰”這些項目在首次執行前必須設定。若未設定,應用程式將拒絕啟動,或使用不安全的預設值運作。
| 變數 | 必填 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|---|
JWT_SECRET |
是 | (無) | src/lib/auth |
用於簽署/驗證所有儀表板工作階段 Cookie(JWT)。使用 openssl rand -base64 48 產生。 |
API_KEY_SECRET |
是 | (無) | src/lib/db/apiKeys.ts |
用於加密靜態儲存在 SQLite 中之 API 金鑰值的 AES 加密金鑰。使用 openssl rand -hex 32 產生。 |
INITIAL_PASSWORD |
是 | CHANGEME |
啟動程序指令碼 | 設定初始管理員儀表板密碼(與 .env.example 的預設值相符——刻意保持明顯不安全,以強制使用者變更)。**首次使用前請先變更。**登入後,可透過「儀表板 → 設定 → 安全性」進行變更。 |
OMNIROUTE_WS_BRIDGE_SECRET |
是(正式環境) | (未設定) | src/app/api/internal/codex-responses-ws/route.ts |
內部 Codex Responses WebSocket 橋接器的共用密鑰。用於驗證 Electron/瀏覽器 WS 中繼與 OmniRoute 之間的橋接請求。⚠️ **正式環境中為必要項目——若未設定,所有 WS 橋接請求都會遭到拒絕。**使用 openssl rand -base64 32 產生。 |
OMNIROUTE_SW_BUILD_ID |
否 | (git SHA) | next.config.mjs, scripts/build/assembleStandalone.mjs |
PWA Shell 的明確 Service Worker 快取失效 ID(#11779);在解析鏈中優先使用。 |
SOURCE_VERSION |
否 | (未設定) | next.config.mjs, scripts/build/assembleStandalone.mjs |
解析鏈中的第二順位——由 PaaS 建置工具(例如 Heroku 類型的工具)設定為已部署的 Commit。 |
NEXT_PUBLIC_SW_BUILD_ID |
否 | (衍生) | src/shared/components/PwaRegister.tsx |
用戶端用來註冊 /sw.js?v=… 的建置期公開值;依序由上述兩個值衍生,接著才使用 git SHA。 |
OMNIROUTE_PEER_STAMP_TOKEN |
否(自動) | (每次啟動時自動產生) | src/server/authz/policies/management.ts |
每個行程專屬的密鑰,用以證明受信任的對等 IP 戳記來自 OmniRoute 自身的 HTTP 伺服器(scripts/dev/peer-stamp.mjs)。只有當戳記包含此 Token 時,authz 中介軟體才會信任請求的區域性(LOCAL_ONLY 路由的回送/LAN 閘控)。每次啟動時都會自動產生——請保持未設定;只有在必須共用此戳記的多行程設定中才需固定此值。 |
# 一次產生全部四個密鑰: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] 絕對不要將含有真實密鑰的
.env檔案提交至版本控制系統。.gitignore已排除.env,但在推送前仍請確認。
2. 儲存與資料庫
Section titled “2. 儲存與資料庫”OmniRoute 使用 SQLite(透過 better-sqlite3)進行所有持久化儲存。這些變數控制資料位置、加密與生命週期。
| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
DATA_DIR |
~/.omniroute/ |
src/lib/db/core.ts |
SQLite 資料庫、備份與資料檔案的根目錄。可針對 Docker 磁碟區或自訂路徑覆寫此值。 |
OMNIROUTE_ALLOW_DEFAULT_DATA_DIR |
(未設定) | src/lib/dataPaths.ts |
測試/評估 DATA_DIR 防護機制的逃生開關(#10428)。未設定 DATA_DIR 的測試與 Node eval/print 探測(-e/--eval/-p/--print,包括 --eval=/--print= 形式)會被重新導向至可丟棄的暫存目錄,以免開啟操作人員的真實資料庫;設為 1 可重新選擇使用真實目錄。 |
OMNIROUTE_BUILD_SHA |
(未設定) | src/lib/monitoring/buildSha.ts |
執行中成品的 Git SHA。由 npm run build:release 寫入;也可注入未隨附 dist/BUILD_SHA 哨兵檔案的容器中。會在 /api/monitoring/health 上以 system.buildSha 顯示。 |
OMNIROUTE_RELEASE_REF |
origin/main |
scripts/build/buildProvenance.ts |
封裝成品的來源驗證閘門用來比對建置 SHA 的 ref(#10427)。 |
OMNIROUTE_ALLOW_CANARY_BUILD |
(未設定) | scripts/build/buildProvenance.ts |
設為 1 可允許封裝 SHA 不在發布線上的建置,將其記錄為刻意建立的金絲雀版本,而非使驗證閘門失敗(#10427)。 |
OMNIROUTE_SMOKE_API_KEY |
(未設定) | scripts/ops/deploy-canary.mjs |
金絲雀部署冒煙探測的 API 金鑰,會在 /v1/chat/completions 上以 Authorization: Bearer 傳送。僅由部署指令碼使用(#10429),伺服器絕不使用。此變數與選擇性啟用之 CLI 冒煙測試工具的 OMNIROUTE_SMOKE_* 變數(tests/integration/upstream-cli-smoke.int.test.ts 中的 RUN_CLI_SMOKE=1、OMNIROUTE_SMOKE_BASE_URL/MODEL/API_KEY_ENV/TARGETS/TIMEOUT_MS)無關——請參閱 CLI 整合 → 真實冒煙測試掃描。 |
OMNIROUTE_BUILDING |
(未設定) | src/lib/buildPhase.ts |
建置階段訊號(#10060):由 scripts/build/build-next-isolated.mjs 設為 1,且每個衍生的建置工作程序都會繼承此值,使資料庫層回傳無操作存根,而非載入原生 better-sqlite3 附加元件(該元件會在工作程序結束時使其中止)。絕不會為執行中的伺服器設定此值。 |
OMNIROUTE_SKIP_NATIVE_DEP_CHECK |
0 |
scripts/check/check-native-deps.mjs |
設為 1 可略過特殊提供者目錄樹的選用原生相依套件預先建置檢查。這不會讓缺少相依套件的建置變得可行;僅應在原生相依套件透過其他管道提供時使用。 |
OMNIROUTE_DATA_DIR |
(未設定) | open-sse/executors/promptql/threadSticky.ts |
DATA_DIR 的備援別名,僅在未設定 DATA_DIR 時檢查。用於尋找 PromptQL 執行器的磁碟式執行緒黏著工作階段快取(<dir>/promptql-thread-sessions.json);若兩個變數皆未設定,快取只會保留在記憶體中(重新啟動後不會持久保留)。 |
OMNIROUTE_PLUGINS_DIR |
(未設定) | src/lib/plugins/scanner.ts |
執行階段外掛掃描器讀取的目錄,也是外掛管理器的安裝根目錄;此設定會覆寫依主目錄推導的預設值(#11827)。在 Docker/K8s 中,請將其指向繫結掛載的外掛目錄樹,而不要只是為了重新定位掃描路徑就移動 HOME(HOME 也會控制其他所有相對於主目錄的行為)。未設定 = ~/.omniroute/plugins;若處理程序完全未匯出主目錄,則為 /tmp/.omniroute/plugins——此變數可消除這種無聲的未發現情況。解析後的目錄會在啟動時連同勝出的輸入,以 scanner.dir_resolved 記錄一次。僅限伺服器端:CLI 命令外掛仍使用其自有的 OMNIROUTE_PLUGIN_PATH(第 9 節)。 |
STORAGE_ENCRYPTION_KEY |
(空值 = 停用) | src/lib/db/encryption.ts |
用於完整 SQLite 資料庫靜態加密的 AES 金鑰。使用 openssl rand -hex 32 產生。 |
STORAGE_ENCRYPTION_KEY_VERSION |
v1 |
scripts/build/bootstrap-env.mjs, electron/main.js |
加密金鑰的版本標籤。執行金鑰輪替時遞增,以支援解密舊備份。 |
DISABLE_SQLITE_AUTO_BACKUP |
false |
src/lib/db/backup.ts |
設為 true 時,跳過例行/寫入前的 SQLite 檔案備份(models.dev 定價的儲存/清除、設定寫入)。手動及還原前備份仍會執行。這不會停用遷移執行器強制建立的持久性安全快照,也不會停用既有持久性資料庫的大規模遷移防護。非手動備份最多每 60 分鐘執行一次。可在儀表板的設定 → 儲存空間中獨立停用例行自動備份。 |
OMNIROUTE_CRYPT_KEY |
(未設定) | src/lib/db/encryption.ts |
STORAGE_ENCRYPTION_KEY 的舊版別名。主要變數不存在時,可接受此變數作為備援。 |
OMNIROUTE_API_KEY_BASE64 |
(未設定) | src/lib/db/encryption.ts |
可接受作為備援的舊版別名(Base64 編碼形式)。使用前會自動解碼。 |
OMNIROUTE_DB_HEALTHCHECK_INTERVAL_MS |
(未設定) | src/lib/db/core.ts |
覆寫定期 SQLite 健康檢查的間隔(毫秒)。未設定時,會根據 NODE_ENV 推導預設值。 |
OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS |
(已移除) | src/lib/db/walMaintenance.ts |
**已移除。**定期對運作中的資料庫執行 wal_checkpoint(TRUNCATE) 可能會使共用的 wal-index 對映失效,並導致程序因 SIGBUS 而崩潰(#13973),因此排程器已不復存在。此變數不會產生作用:正值會記錄一次性的棄用警告,而設為 0 或未設定時則保持靜默。WAL 由 PASSIVE 檢查點(如下)維護,並由關機檢查點截短。 |
OMNIROUTE_WAL_PASSIVE_INTERVAL_MS |
300000 (5 分鐘) |
src/lib/db/walMaintenance.ts |
覆寫頻繁執行 wal_checkpoint(PASSIVE) 的間隔(毫秒)。使待處理的 WAL 框架維持較小,讓檢查點保持快速,並將關機截短之間的 WAL 檔案大小維持在限度內。設為 0 可停用。 |
OMNIROUTE_WAL_GUARD_MAX_MB |
256 |
src/lib/db/walMaintenance.ts |
當 PASSIVE 週期執行時發現 WAL 檔案超過此大小,便執行 wal_checkpoint(RESTART),讓 WAL 在不重寫已對映 wal-index 的情況下重新開始。已移除對運作中資料庫執行的 truncate 模式檢查點(請參閱 OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS 資料列)。 |
OMNIROUTE_PRESSURE_SELF_RESTART |
false |
open-sse/utils/resourcePressure.ts |
設為 1/true/yes/on,可在嚴重資源壓力持續達 OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS 後結束程序,讓監督程式(systemd Restart=always、Docker 重新啟動原則)啟動乾淨的程序,而非無限期回傳 503。 |
OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS |
120000 (2 分鐘) |
open-sse/utils/resourcePressure.ts |
嚴重壓力必須持續多久,才會觸發自我重新啟動並結束程序。 |
OMNIROUTE_SQLJS_WASM_PATH |
(自動偵測) | src/lib/db/adapters/sqljsAdapter.ts |
使用 sql.js WASM 備援配接器時,指向 sql-wasm.wasm 的明確路徑(絕對路徑或相對於 cwd 的路徑)。未設定時,會透過套件相依項目及候選配置自動偵測。 |
OMNIROUTE_BATCH_RETENTION_DAYS |
30 |
src/lib/db/cleanup.ts |
在自動清理掃描刪除之前,終止狀態(已完成/失敗/已取消/已過期)的 Batch API 工作檢查點、所參照的輸入/輸出/錯誤檔案及資料列要保留的天數。僅在啟用 BATCH_AND_FILE_AUTO_CLEANUP_ENABLED 後生效;與 OpenAI 自身的 Batch API 輸出保留期間一致。不影響由操作人員觸發的 DELETE /api/v1/batches/delete-completed 路由;依設計,該路由一律執行刪除(不按時間篩選)。 |
BATCH_AND_FILE_AUTO_CLEANUP_ENABLED |
false |
src/lib/db/cleanup.ts |
設為 true 時,允許自動清理掃描刪除超過 OMNIROUTE_BATCH_RETENTION_DAYS 的終止狀態 Batch API 工作(及其檢查點),並清除已超過其自身 expires_at 的上傳檔案之 BLOB 內容。預設關閉:在操作人員選擇啟用前,每個現有安裝環境都會完全依照先前方式保留此資料。這也是可透過儀表板編輯的功能旗標——請參閱 docs/reference/FEATURE_FLAGS.md → 執行階段。 |
OMNIROUTE_SKIP_DB_HEALTHCHECK |
0 |
src/lib/db/core.ts, src/lib/db/healthCheck.ts |
設為 1 可在啟動時完全略過資料庫健康檢查。適用於短期執行的工作與整合測試。 |
OMNIROUTE_FORCE_DB_HEALTHCHECK |
0 |
src/lib/db/core.ts |
設為 1 可強制啟用資料庫健康檢查迴圈,即使在通常會略過的情況下亦然(例如短期執行的工作)。 |
OMNIROUTE_SKIP_POSTINSTALL |
0 |
scripts/postinstall.mjs |
設為 1 可在 npm install 期間略過原生執行階段的預熱。適用於 sqlite 已建置完成的 CI/無頭安裝環境。 |
OMNIROUTE_MIGRATIONS_DIR |
(自動偵測) | src/lib/db/migrationRunner.ts |
覆寫遷移執行器所掃描的目錄。適用於在自訂建置中隨附已封裝的遷移。 |
OMNIROUTE_EXTRA_MIGRATIONS_DIRS |
(未設定) | src/lib/db/migrationRunner/extraDirs.ts |
額外的遷移目錄,以平台路徑分隔符號分隔的 namespace=dir 項目指定(例如 ee=/opt/app/enterprise/db/migrations)。在其中找到的檔案會記錄為 <namespace>-<number>,因此隨附自有遷移的發行版本絕不會與上游的數字編號位置發生衝突。若項目格式錯誤、命名空間無效或目錄不存在,系統會在啟動時擲回錯誤,而不會無聲地略過結構描述。 |
OMNIROUTE_MAX_PENDING_MIGRATIONS |
50 |
src/lib/db/migrationRunner.ts |
大量待處理遷移的安全閾值(#3416)。若現有資料庫有超過此數量的待處理遷移,啟動程序將中止(防止追蹤資料表遭清除)。若要還原較舊的備份,請提高此值;設為 0 可停用此檢查。 |
OMNIROUTE_INSTALL_UPGRADE_WORKDIR |
(<repo>/.install-upgrade) |
scripts/check/check-install-upgrade.mjs |
check:install-upgrade 發行閘門的工作目錄。其約需 12 GB(兩個各約 3 GB 的安裝目錄樹,加上 tarball),因此不得在小型 tmpfs 上執行——在自託管執行器上,/tmp 是 12 GB 的 RAM 後援 tmpfs,而此閘門耗盡了其空間,導致套件遭截斷。 |
OMNIROUTE_SPEND_FLUSH_INTERVAL_MS |
(程式碼中的預設值) | src/lib/spend/batchWriter.ts |
批次支出/成本寫入器的排清間隔(毫秒)。較低的值會減少寫入合併;較高的值則會減少資料庫爭用。 |
OMNIROUTE_SPEND_MAX_BUFFER_SIZE |
(程式碼中的預設值) | src/lib/spend/batchWriter.ts |
強制排清前可緩衝的支出項目數上限。在高 QPS 部署中可提高此值;若有限記憶體更為重要,則可降低此值。 |
OMNIROUTE_PROXY_FETCH_DEBUG |
(未設定) | open-sse/utils/proxyFetch.ts |
設為 "true" 可在 Vercel 中繼路徑上輸出 [ProxyFetch] 偵錯日誌。預設為關閉,以避免洩漏路由提示。 |
PROXY_LOG_INCLUDE_IPS |
false |
src/lib/proxyLogger.ts |
設為 "true" 或 "1",可在詳細的 [ProxyEgress] 程序日誌行中包含用戶端/輸出 IP 與帳戶前綴。預設維持關閉,以免程序日誌洩漏 IP 或帳戶前綴。 |
OMNIROUTE_DEBUG |
(未設定) | bin/cli/commands/quota.mjs |
設為 1,可讓 CLI 配額命令將每個請求的計時診斷資訊([omniroute] GET <path> completed in Nms)列印至 stderr。 |
OMNIROUTE_HEALTHCHECK_PATH |
(自動) | scripts/dev/healthcheck.mjs |
容器健康檢查所探測的明確路徑。未設定時,探測器會從 OMNIROUTE_BASE_PATH 推導路徑;設定此值則會重新啟用深度監控端點。 |
OMNIROUTE_DEBUG_COMPLETION |
(未設定) | bin/cli/commands/completion.mjs |
設為任何非空值,可從 CLI shell 自動完成快取路徑(讀取/重新整理/寫入)輸出 [omniroute completion] 診斷資訊。預設為關閉——這些快取會無聲地失敗,因此快取遺失或損毀絕不會破壞 Tab 自動完成。 |
BATCH_RETRY_DURATION_MS |
86400000(24 小時) |
open-sse/services/batchProcessor.ts |
個別批次項目的最長重試時間範圍(毫秒)。超過此時間的項目會標記為失敗。 |
BATCH_BACKOFF_BASE_MS |
5000 |
open-sse/services/batchProcessor.ts |
批次項目重試採用指數退避時的基礎延遲(毫秒)。 |
BATCH_BACKOFF_MAX_MS |
3600000 (1 小時) |
open-sse/services/batchProcessor.ts |
批次項目重試之間指數退避的上限(毫秒)。 |
BATCH_MAX_CONCURRENT |
1 |
open-sse/services/batchProcessor.ts |
同時處理的批次數量上限。提高此值可增加吞吐量;請維持較低值以避免觸發大量速率限制。 |
[!IMPORTANT] 在變更現有的持久性資料庫之前,遷移執行器會在
DATA_DIR/db_backups/下發布完整的、 內容定址快照。發布作業需要檔案系統支援同一檔案系統內、不覆寫的硬連結,以及持久性檔案同步。 POSIX 主機還需要目錄同步;在 Windows 上,Node 可能會拒絕目錄控制代碼,因此 OmniRoute 會清除 已發布檔案的緩衝區,並將目錄項目同步視為盡力而為。 如果掛載的DATA_DIR無法提供這些保證,啟動程序會在套用遷移前安全地失敗。 請將DATA_DIR移至支援這些基本操作的磁碟區;請勿使用DISABLE_SQLITE_AUTO_BACKUP來繞過遷移安全機制。
| 情境 | 設定 |
|---|---|
| 本機開發 | 保留所有預設值。資料庫位於 ~/.omniroute/omniroute.db。 |
| Docker | 設定 DATA_DIR=/data,並在 /data 掛載磁碟區。 |
| 靜態資料加密 | 設定 STORAGE_ENCRYPTION_KEY,並務必備份金鑰!遺失金鑰就等同遺失資料。 |
| CI/測試 | DATA_DIR=/tmp/omniroute-test — 暫時性資料,無需加密。 |
3. 網路與連接埠
Section titled “3. 網路與連接埠”| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
PORT |
20128 |
src/lib/runtime/ports.ts |
Dashboard UI 與 API 端點的主要連接埠(單一連接埠模式)。 |
OMNIROUTE_BASE_PATH |
(空白 = 根路徑) | next.config.mjs, scripts/docker/ensure-docker-base-path.mjs |
透過反向代理提供 OmniRoute 服務時所使用的 URL 子路徑(設定 Next.js basePath;驗證重新導向會考量 basePath)。例如 /omniroute。在 Docker 中,此值會在 docker build 期間內嵌(ARG OMNIROUTE_BASE_PATH);預先建置的根路徑映像檔可在容器啟動時、Next.js 啟動前套用一次不同的執行階段值。請將 NEXT_PUBLIC_BASE_URL 設為包含相同子路徑的公開來源。 |
NEXT_PUBLIC_OMNIROUTE_BASE_PATH |
(空白 = 根路徑) | src/shared/hooks/useDisplayBaseUrl.ts |
OMNIROUTE_BASE_PATH 的瀏覽器可見鏡像值,會在建置時內嵌,使儀表板端點顯示 https://host/omniroute/v1,而非 https://host/v1。未設定時會回退至 OMNIROUTE_BASE_PATH。變更後請重新建置(Next basePath 是建置階段設定)。 |
DASHBOARD_ALLOW_EMBED |
(未設定 = 永不可嵌入框架) | next.config.mjs, scripts/build/dashboardEmbed.mjs |
選擇性允許將 HTML 頁面嵌入 iframe。未設定時,每個路由都會提供 frame-ancestors 'none' + X-Frame-Options: DENY。設為 vscode 後,頁面(儀表板、登入、文件、登陸頁面)將使用 frame-ancestors 'self' vscode-webview: 且不含 X-Frame-Options,讓 VS Code Simple Browser 能夠呈現它們(OmniCopilot 的 dashboardOpen: "editor" 模式)。無論如何設定,API 介面(/api、/v1、/v1beta、/a2a、/healthz、根層級別名)皆會保留嚴格標頭。僅識別 vscode,1/true 不會啟用此功能。建置階段設定:變更後請重新建置(映像檔請使用 docker build --build-arg DASHBOARD_ALLOW_EMBED=vscode;在預先建置的安裝項目上設定此值不會生效)。 |
API_PORT |
(未設定) | src/lib/runtime/ports.ts |
設定後,會在此獨立連接埠上提供 /v1/* Proxy API。 |
API_HOST |
0.0.0.0 |
src/lib/runtime/ports.ts |
API 連接埠的繫結位址。 |
DASHBOARD_PORT |
(未設定) | src/lib/runtime/ports.ts |
設定後,會在此獨立連接埠上提供 Dashboard UI。 |
OMNI_MAX_CONCURRENT_CONNECTIONS |
0 (已停用) |
src/sse/utils/backpressure.ts |
限制同時進行中的聊天連線數;超出上限的請求會收到含有 Retry-After 的 503。正整數會啟用此防護機制;未設定或設為 0 則會停用。 |
OMNIROUTE_INSTANCE_ID |
(未設定) | src/shared/resilience/peerRouting.ts |
串接 OmniRoute 執行個體時,此閘道所使用的穩定唯一 ID。啟用傳入對等節點迴圈檢查。允許的字元:字母、數字、.、_、: 和 -;最多 64 個字元。 |
OMNIROUTE_PEER_URLS |
(未設定) | src/shared/resilience/peerRouting.ts, open-sse/executors/base.ts |
以逗號分隔、可接收 X-OmniRoute-Peer-Trace 的 OmniRoute 基礎 URL。只有明確列入允許清單的上游 URL 會收到對等節點中繼資料;所有其他提供者皆不受影響。 |
OMNIROUTE_PEER_MAX_HOPS |
4 |
src/shared/resilience/peerRouting.ts |
鏈式請求中可接受的先前已造訪 OmniRoute 執行個體數量上限(1-32)。若執行個體重複或跳數額度已耗盡,則傳回 HTTP 508 Loop Detected。 |
PROD_DASHBOARD_PORT |
20130 |
docker-compose.prod.yml |
Docker 生產模式中 Dashboard 對外發布的主機端連接埠。 |
PROD_API_PORT |
20131 |
docker-compose.prod.yml |
Docker 生產模式中 API 對外發布的主機端連接埠。 |
OMNIROUTE_PORT |
(未設定) | src/lib/runtime/ports.ts |
在 Electron 或其他包裝程式內執行時,優先於 PORT。 |
LIVE_WS_PORT |
20129 |
src/server/ws/liveServer.ts |
即時 WebSocket 監控伺服器的連接埠。 |
LIVE_WS_HOST |
127.0.0.1 |
src/server/ws/liveServer.ts |
即時 WebSocket 伺服器的繫結位址。設定為 0.0.0.0 可在 LAN 上公開(亦需設定 LIVE_WS_ALLOWED_ORIGINS)。 |
LIVE_WS_ALLOWED_ORIGINS |
(未設定) | src/server/ws/liveServer.ts |
允許開啟即時 WebSocket 的額外來源,以逗號分隔。預設已允許迴路介面的 Dashboard 來源。 |
LIVE_WS_ALLOWED_HOSTS |
(未設定) | src/server/ws/liveServerAllowList.ts |
允許作為即時 WebSocket 來源的額外主機名稱,以逗號分隔。與 LIVE_WS_ALLOWED_ORIGINS(完整來源 URL)不同,此設定只比對主機部分,適用於 LAN/Tailscale 環境。 |
NEXT_PUBLIC_LIVE_WS_PUBLIC_URL |
(未設定) | src/hooks/useLiveDashboard.ts |
即時 Dashboard WebSocket 的公開 URL(瀏覽器端)。透過反向代理或 Cloudflare Tunnel 將 WS 伺服器置於前端時需設定(例如 wss://ws.my-ai.com/live-ws);瀏覽器會連線至該處,而非 ws://hostname:20132。路徑名稱部分也會用作 WebSocket 升級路徑(預設:/live-ws)。 |
OMNIROUTE_ENABLE_LIVE_WS |
true |
src/server/ws/liveServer.ts 和 scripts/start-ws-server.mjs |
設定為 0 或 false 可停用即時 WebSocket 伺服器(預設啟用,且繫結至迴路介面)。這是用於停用獨立即時 WebSocket 輔助指令碼的 CI/測試框架切換選項。 |
RELAY_IP_PER_MINUTE |
30 |
src/app/api/v1/relay/chat/completions/route.ts |
每個(權杖、IP)的中繼速率限制,以請求數/分鐘計。採用記憶體內儲存,且各執行個體獨立。設為 0 或負值會停用 IP 維度的限制閘門(每個權杖的資料庫限制仍然適用)。 |
NODE_ENV |
production |
Next.js 核心 | 控制記錄詳細程度、快取、錯誤詳細資訊揭露,以及 Next.js 最佳化。 |
OMNIROUTE_USE_TURBOPACK |
1(Turbopack — 程式碼預設值) |
package.json / Next.js 16 |
Turbopack 是 npm run dev 與 npm run build 的預設打包工具(經基準測試,建置速度快 2–3 倍)。在 Windows 上、遇到原生繫結/打包工具相容性問題時,或在 RAM 受限的機器上,請設為 0 以退回使用 webpack——已知此 Next.js 版本系列(16.2.x)的 Turbopack 生產建置在大型模組圖上,記憶體峰值遠高於 webpack(Next 16.3 的 Turbopack 記憶體逐出修正尚未穩定);退回使用 webpack 的峰值低得多。請參閱 #6409。 |
OMNIROUTE_SKIP_DB_HEALTHCHECK |
(未設定) | src/lib/db/core.ts / src/lib/db/healthCheck.ts |
設為 1 可略過啟動時的 SQLite 完整性健康檢查。這有助於加快大型資料庫的啟動速度。 |
NOTIFY_SOCKET |
(未設定) | systemd(sd_notify 通訊協定) | 當程序在整合 sd_notify 的服務單元下執行時,由 systemd 設定;OmniRoute 會讀取此值(請參閱 OMNIROUTE_DISABLE_SD_NOTIFY),以傳送 READY/WATCHDOG 通知。使用者絕對不應自行設定。 |
OMNIROUTE_DISABLE_SD_NOTIFY |
(未設定) | scripts/dev/systemd-notify.mjs |
設為 1 可停用 systemd sd_notify(Type=notify / WatchdogSec=),即使是在 systemd 單元下執行亦然。無論如何,在 systemd 之外,通知程式不會執行任何操作。 |
CREDENTIAL_HEALTH_CHECK_INTERVAL |
300000 |
open-sse/config/constants.ts / src/lib/credentialHealth/scheduler.ts |
背景憑證健康檢查排程器的間隔(毫秒)。最小值:10000(10 秒)。 |
CREDENTIAL_HEALTH_CACHE_TTL |
300000 |
open-sse/config/constants.ts / src/lib/credentialHealth/cache.ts |
快取憑證健康狀態的 TTL(毫秒)。 |
OMNIROUTE_DISABLE_CREDENTIAL_HEALTH_CHECK |
false |
src/lib/credentialHealth/scheduler.ts |
設為 1 或 true 可停用提供者連線的背景定期測試。搜尋提供者(src/lib/providers/validation/searchProviders.ts 中的 SEARCH_VALIDATOR_CONFIGS,例如 tavily-search)一律排除在掃描之外——其「驗證」是實際計費的上游查詢,因此絕不會透過計時器進行健康檢查(#9970)。 |
HOST |
0.0.0.0 |
scripts/dev/run-next.mjs |
Next.js 開發/啟動伺服器的繫結位址。設定後會覆寫預設的 0.0.0.0。 |
HOSTNAME |
127.0.0.1 |
scripts/dev/run-next-playwright.mjs |
Playwright 執行器啟動 Next.js 時使用的繫結位址。預設為 127.0.0.1,以實現隔離測試。請勿用於 omniroute serve——請改用 OMNIROUTE_SERVER_HOST(POSIX shell 會自動將 HOSTNAME 設為機器名稱;.env 無法覆寫此值)。 |
OMNIROUTE_SERVER_HOST |
0.0.0.0 |
bin/cli/commands/serve.mjs |
omniroute serve 的繫結位址。可避免與 POSIX shell 的 HOSTNAME 變數衝突(bash/zsh 一律會將其設為機器名稱)。未設定時退回使用 0.0.0.0。(#6194) |
┌─────────────────────────── 單一連接埠(預設)──────────────────────────────┐│ PORT=20128 ││ → 儀表板:http://localhost:20128 ││ → API: http://localhost:20128/v1/chat/completions │└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────── 分離連接埠 ─────────────────────────────────────┐│ DASHBOARD_PORT=20128 ││ API_PORT=20129 ││ API_HOST=0.0.0.0 ││ → 儀表板:http://localhost:20128 ││ → API: http://0.0.0.0:20129/v1/chat/completions ││ 使用情境:將 API 開放給區域網路,同時將儀表板限制於 localhost。 │└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────── Docker 正式環境 ────────────────────────────────┐│ PROD_DASHBOARD_PORT=443 PROD_API_PORT=8443 ││ → 在 docker-compose.prod.yml 中將容器連接埠對應至主機連接埠。 │└─────────────────────────────────────────────────────────────────────────────┘4. 安全性與驗證
Section titled “4. 安全性與驗證”| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
MACHINE_ID_SALT |
endpoint-proxy-salt |
src/lib/auth |
與硬體識別碼結合,用於產生機器指紋的鹽值。每次部署時應變更,以確保隔離。 |
OMNIROUTE_CLI_SALT |
(未設定 = 每次安裝隨機產生鹽值,並保存於 <DATA_DIR>/cli-token-salt.json) |
src/lib/machineToken.ts |
用於衍生本機 CLI 驗證權杖的 HMAC 鹽值。設定此值會輪替該機器上的所有 CLI 權杖,且其優先順序一律高於已保存的鹽值。請參閱 docs/security/CLI_TOKEN.md。 |
AUTH_COOKIE_SECURE |
false |
src/lib/auth |
設定工作階段 Cookie 的 Secure 旗標。在 HTTPS 後方執行時,必須設為 true。 |
REQUIRE_API_KEY |
false |
API 中介軟體 | 設為 true 時,所有 /v1/* Proxy 請求都必須包含有效的 API 金鑰。此旗標不會管控 GET /v1/models;後者改為遵循儀表板的登入設定(requireAuthForModels)——因此,/v1/models 傳回 401 並不表示推論受到保護。請參閱 docs/security/INFERENCE_AUTH_POSTURE.md(#13695)。 |
ALLOW_API_KEY_REVEAL |
false |
src/shared/constants/featureFlagDefinitions.ts |
允許在儀表板 UI 中顯示完整的 API 金鑰值。可透過儀表板的功能旗標進行設定;在共用執行個體上可能造成安全風險。 |
NO_LOG_API_KEY_IDS |
(空白) | src/lib/compliance/index.ts |
以逗號分隔的 API 金鑰 ID,這些 ID 可略過請求記錄(符合 GDPR 規範)。 |
DEFAULT_RATE_LIMIT_PER_DAY |
(未設定 = 無限制) | src/shared/utils/apiKeyPolicy.ts |
套用至 rate_limits 欄位為 null 之 API 金鑰的備援每日請求配額。未設定或空白:沒有隱含上限(#2289、#11017)。0 亦相同(無限制)。正整數 N 會啟用每日 N 次、每週 5N 次、每月 20N 次的限制。格式錯誤的非空白值會回復為舊版的每日 1000 次、每週 5000 次、每月 20000 次的限制視窗。 |
MAX_BODY_SIZE_BYTES |
10485760 (10 MB) |
src/shared/middleware/bodySizeGuard.ts |
允許的請求本文大小上限。超過此限制的承載資料將被拒絕。 |
OMNIROUTE_CHAT_LARGE_BODY_BYTES |
262144 (256 KB) |
src/shared/middleware/chatBodyAdmission.ts |
實際請求本文大小達到或超過此閾值時,會在 JSON 解析前取得不可分割的行程內重量級准入租約(BYTE 路徑,包括 POST /v1/responses)。採用與結構繁重請求相同的 #10437 健康餘裕脫離機制;仍受 OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES / #10110 限制,以防止 #7849 再次發生。 |
OMNIROUTE_CHAT_HARD_MAX_BODY_BYTES |
52428800 (50 MB) |
src/shared/middleware/chatBodyAdmission.ts |
對聊天路由施加的硬性上限,依有限制擷取期間實際讀取的位元組數執行,包括缺少、無效或不實 Content-Length 的請求;超出上限時會收到 413。 |
OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT |
(未設定 — 無請求數量上限) | src/shared/middleware/chatBodyAdmission.ts |
#503-fanout:此舊版請求數量上限現在僅在明確設定時才會生效。若維持未設定(預設值),重量級聊天准入會改由 OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES 控制——這是依單一行程(單一 V8 堆積)的實際記憶體上限自動推導出的位元組預算。兩個重疊、約 750k-token 的 /v1/responses 會使約 12 GiB 的堆積中止(#7849)——這是記憶體預算警告,而不是產品硬性上限為 2。健康的行程(堆積低於卸載比率)可透過 OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM 准入更多並行的長時間 /v1/responses。數十個長時間 SSE 用戶端(40–50 個)取決於堆積 + OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES / #10110,而不是「最多 2 個」。盲目提高此值以「使用主機資源」會再次引發 #7849。請使用 N 個獨立的 DATA_DIR 來增加堆積數量(#11024);切勿讓 replicas>1 共用同一個 SQLite 檔案。 |
OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES |
(自動推導) | src/shared/middleware/admissionBudget.ts |
**#503-fanout:**覆寫自動推導的擷取位元組預算(取 V8/cgroup 記憶體上限中較嚴格者的 25%,再除以 8 倍暫時性放大係數)。推導值與明確設定值都會限制在 8 MiB–2 GiB。大於有效預算的主體會立即以 413 body_exceeds_budget 失敗;個別可處理主體之間的資源爭用則仍會回傳可重試的 503。40–50 個並行的長時間 SSE 用戶端取決於此預算 + 堆積,而不是硬性的「最多 2 個」。調校前,請先在 /api/monitoring/health 讀取 chatAdmission.maxInflightBytes / budgetSource / pressureSeverity。 |
OMNIROUTE_CHAT_ADMISSION_HEAP_SHED_RATIO |
0.75 |
src/shared/middleware/chatBodyAdmission.ts |
用於位元組和結構重量級准入的堆積壓力卸載比率(heapUsed / heap_size_limit)(#10183、#10268、#10437)。超過 OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT 的並行重量級請求,只有在堆積同時達到或高於此比率時,才會以可重試的 503 卸載;在健康的堆積上,則會透過健康餘裕予以准入。 |
OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM |
OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT (預設為 1) |
src/shared/middleware/chatBodyAdmission.ts |
健康堆積快速路徑(#10437)的有界額外容量,同時適用於結構和位元組(admitChatRequest,包括主體 ≥ OMNIROUTE_CHAT_LARGE_BODY_BYTES)。若沒有此界限,每個繁忙但堆積健康的請求都會無上限地繞過准入控制。一旦有這麼多並行租約透過健康堆積路徑處於作用中,後續繁忙請求便會轉入與實際堆積壓力下相同的有界等待/卸載路徑。0 會完全停用此繞過機制。 |
OMNIROUTE_CHAT_HEAVY_MESSAGE_COUNT |
200 |
src/shared/middleware/chatBodyAdmission.ts |
即使主體低於位元組閾值,仍會將聊天請求分類為重量級的訊息數量。 |
OMNIROUTE_CHAT_HEAVY_TOOL_COUNT |
64 |
src/shared/middleware/chatBodyAdmission.ts |
即使主體低於位元組閾值,仍會將聊天請求分類為重量級的工具數量。 |
OMNIROUTE_CHAT_HEAVY_ESTIMATED_TOKENS |
32000 |
src/shared/middleware/chatBodyAdmission.ts |
用於將請求分類為重量級的保守字串大小 token 估算值;這是准入成本的替代指標,而不是提供者計費使用的 token 化方式。 |
OMNIROUTE_CHAT_HARD_MAX_MESSAGES |
0(已停用) |
src/shared/middleware/chatBodyAdmission.ts |
可選擇啟用的聊天記錄上限。預設停用:訊息數量是部署政策,而不是請求的通用屬性;在此處設定上限,會在壓縮管線有機會使對話變得可處理之前,就以終止性的 413 拒絕對話。堆積成長由 OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT 和堆積壓力卸載機制限制。記憶體受限且需要硬性上限的部署可設定正值;超出時將收到結構化的「需要壓縮」413。 |
OMNIROUTE_MAX_NONSTREAMING_RESPONSE_BYTES |
67108864 (64 MB) |
open-sse/handlers/chatCore/nonStreamingResponseBody.ts |
對完整緩衝至記憶體中的非串流上游回應所設的硬性上限。超過此上限時,會取消上游讀取器並使請求快速失敗,而不是讓無界字串持續增長直到耗盡堆積。 |
OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES |
768 |
open-sse/handlers/chatCore/responseHeaders.ts |
從上游回應標頭轉送的最大線路位元組數。超出預算時,會捨棄優先順序較低的標頭(例如自訂 x-codex-*、x-oai-request-id),以維持在常見反向代理伺服器的標頭限制內。提高此值可轉送更多上游中繼資料,但會增加回應標頭大小。 |
CORS_ORIGIN |
(未設定) | src/server/cors/origins.ts |
舊版單一來源 CORS 允許清單。新部署應優先使用 CORS_ALLOWED_ORIGINS。CORS 僅適用於跨來源的瀏覽器 API 用戶端;已驗證身分的儀表板寫入操作改為使用同源請求,並搭配工作階段繫結的 CSRF 防護。 |
CORS_ALLOWED_ORIGINS |
(未設定) | src/server/cors/origins.ts |
以逗號分隔的 CORS 允許清單。除非明確設定 CORS_ALLOW_ALL=true,否則不會傳送萬用字元。 |
CORS_ALLOW_ALL |
false |
src/server/cors/origins.ts |
僅供開發使用的緊急選項,可回應任何瀏覽器 Origin。請勿在共用或正式環境部署中啟用。 |
OUTBOUND_SSRF_GUARD_ENABLED |
true |
src/shared/network/outboundUrlGuard.ts |
封鎖以私人/回送/連結本機 IP 範圍為目標的提供者呼叫。僅可在隔離的測試環境中停用。 |
OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS |
false |
src/shared/network/outboundUrlGuard.ts |
允許指向私人/本機網路(localhost、192.168.x.x、10.x.x.x 等)的提供者 URL。自架提供者必須啟用此設定(LM Studio、Ollama、vLLM、Llamafile、Triton、SearXNG)。設為 false 時,儀表板會拒絕驗證本機 URL。 |
OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS |
true |
src/shared/network/outboundUrlGuard.ts |
允許新增/驗證位於本機/私人位址(127.0.0.1、localhost、LAN、私人範圍)的提供者——僅適用於提供者驗證路徑。預設為 true(本機優先);設為 false 可強制實施僅允許公用位址的嚴格封鎖。無論如何,雲端中繼資料端點(169.254.169.254、metadata.google.internal)仍會維持封鎖。 (#5066) |
AUDIO_REMOTE_PROVIDER_NODES |
false |
src/app/api/v1/_shared/audioProviderNodes.ts |
允許 /v1/audio/* 路由(轉錄、語音、翻譯)使用架設於 localhost 以外位置且與 OpenAI 相容的提供者節點。預設關閉——將音訊路由至遠端主機會改變輸出流量身分,且必須由操作人員明確決定。回送/私人節點(localhost、127.0.0.1、172.16-31.x)一律允許且不受影響。 (#3963) |
RERANK_REMOTE_PROVIDER_NODES |
false |
src/app/api/v1/_shared/rerankProviderNodes.ts |
允許 POST /v1/rerank(以及記憶體引擎的回送重新排序步驟)使用架設於 localhost 以外位置且與 OpenAI 相容的提供者節點——例如在 LAN 主機或 Tailscale 對等節點上執行的 TEI、Infinity、vLLM 等。預設關閉——路由至遠端主機會改變輸出流量身分,且必須由操作人員明確決定。回送節點(localhost、127.0.0.1、172.16-31.x)一律允許且不受影響。遠端節點也必須通過提供者的輸出 URL 政策(OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS / OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS);絕不會路由至雲端中繼資料主機。 |
OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN |
false |
src/app/api/auth/login/route.ts |
啟用 OIDC 時,停用密碼登入,讓使用者只能透過 OIDC 單一登入進行驗證。也接受簡短別名 OIDC_DISABLE_PASSWORD_LOGIN;相同鍵名的儀表板功能旗標具有較高優先順序。 (#10889) |
OIDC_DISABLE_PASSWORD_LOGIN |
false |
src/app/api/auth/login/route.ts |
OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN 的簡短別名 (#10889)。 |
強化檢查清單
Section titled “強化檢查清單”# 正式環境的最低安全要求:AUTH_COOKIE_SECURE=true # 需要 HTTPSREQUIRE_API_KEY=true # 驗證所有代理呼叫ALLOW_API_KEY_REVEAL=false # 絕不在 UI 中公開金鑰CORS_ALLOWED_ORIGINS=https://your.domain.comMAX_BODY_SIZE_BYTES=5242880 # 5 MB 限制5. 輸入清理與 PII 保護
Section titled “5. 輸入清理與 PII 保護”OmniRoute 提供雙層防禦:請求端的注入掃描,以及回應端的 PII 移除。
**⚠️ 限制:**這些防護措施僅是盡力而為的啟發式偵測,並非完整的提示詞注入防火牆或 PII DLP 系統。它們可能產生誤判(將無害的角色設定/RPG 提示詞標記為有害)與漏判(例如 leetspeak、插入空格、非英語模式)。僅靠這些措施不足以符合合規要求。在依賴這些措施之前,請調整模式並使用您的流量進行測試。
請求端:提示詞注入防護
Section titled “請求端:提示詞注入防護”| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
INPUT_SANITIZER_ENABLED |
true |
src/middleware/promptInjectionGuard.ts |
啟用傳入訊息的提示詞注入模式掃描。 |
INPUT_SANITIZER_MODE |
warn |
src/middleware/promptInjectionGuard.ts |
注入政策:warn = 僅記錄,block = 拒絕請求並回傳 400。舊版 redact 不會移除注入文字;如需重寫請求中的 PII,請使用 PII_REDACTION_ENABLED。 |
INJECTION_GUARD_MODE |
(未設定) | src/middleware/promptInjectionGuard.ts |
INPUT_SANITIZER_MODE 的舊版別名——行為相同。 |
INPUT_SANITIZER_BLOCK_THRESHOLD |
high |
src/shared/utils/injectionSeverity.ts |
MODE=block 會拒絕的最低嚴重程度:high(預設)、medium 或 low。除非降低門檻,否則中等嚴重程度的模式僅供觀察。 |
INJECTION_GUARD_BLOCK_THRESHOLD |
(未設定) | src/shared/utils/injectionSeverity.ts |
INPUT_SANITIZER_BLOCK_THRESHOLD 的舊版別名——行為相同。 |
PII_REDACTION_ENABLED |
false |
src/lib/guardrails/piiMasker.ts |
設為 true 時,遮蔽傳入請求中的 PII(與注入模式無關)。 |
CREDENTIAL_REDACTION_ENABLED |
false |
src/lib/guardrails/credentialMasker.ts |
從請求/回應承載資料中遮蔽已知的 API 金鑰/祕密權杖模式。需選擇啟用;行為與 PII_REDACTION_ENABLED 一致。 |
回應端:PII 清理器
Section titled “回應端:PII 清理器”| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
PII_RESPONSE_SANITIZATION |
false |
src/lib/piiSanitizer.ts |
在回傳給用戶端之前,掃描 LLM 回應中是否洩漏 PII。 |
PII_RESPONSE_SANITIZATION_MODE |
redact |
src/lib/piiSanitizer.ts |
redact = 遮蔽 PII,warn = 僅記錄,block = 捨棄整個回應。 |
VS Code 權杖化路由情境清理器
Section titled “VS Code 權杖化路由情境清理器”| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
OMNIROUTE_VSCODE_SANITIZE_CONTEXT |
1 |
src/app/api/v1/vscode/contextSanitizer.ts |
從 /v1/vscode/[token]/* 請求中移除隱含的作用中編輯器情境(editorContext、activeEditor、currentFile、selection、openTabs……),並遮蔽明確附加之敏感檔案的內容。預設安全;設為 0 可停用。 |
| 情境 | 設定 |
|---|---|
| 企業合規 | INPUT_SANITIZER_ENABLED=true、INPUT_SANITIZER_MODE=block、PII_REDACTION_ENABLED=true、PII_RESPONSE_SANITIZATION=true(封鎖注入 + 遮蔽請求/回應中的 PII;各模式彼此獨立) |
| 僅監控 | INPUT_SANITIZER_ENABLED=true、INPUT_SANITIZER_MODE=warn——僅記錄,絕不封鎖 |
| 個人使用 | 保持全部停用——零額外負擔 |
6. 工具與路由政策
Section titled “6. 工具與路由政策”| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
TOOL_POLICY_MODE |
disabled |
src/lib/toolPolicy.ts |
控制 LLM 的工具/函式呼叫存取權限。allowlist = 僅允許列出的工具,denylist = 允許除列出項目之外的所有工具,disabled = 無限制。 |
OMNIROUTE_PAYLOAD_RULES_PATH |
./config/payloadRules.json |
open-sse/services/payloadRules.ts |
酬載操作規則 JSON 檔案的路徑(依模型/協定套用上游調整)。 |
OMNIROUTE_PAYLOAD_RULES_RELOAD_MS |
5000 |
open-sse/services/payloadRules.ts |
熱重新載入酬載規則檔案的間隔(毫秒)。最小值為 1000。 |
OMNIROUTE_PREFER_CLAUDE_CODE_FOR_UNPREFIXED_CLAUDE_MODELS |
false |
open-sse/services/model.ts |
選擇性啟用:將來自 Claude Code 用戶端、未加前綴的 claude-* 模型 ID,透過 Claude Code OAuth 帳戶進行路由,而不要求提供者前綴。明確指定的提供者前綴仍具有優先權。也可透過 Claude 提供者頁面上的儀表板切換開關進行設定。 |
COMBO_CONCURRENCY_PER_MODEL |
3 |
open-sse/services/comboConfig.ts |
輪詢組合中每個模型的並行上限(#9100)。輪詢組合的訊號量原先硬性限制為每個模型最多 3 個並行請求,且無法覆寫,導致更高並行度的流量必須在該上限後依序處理。驗證值須為 >= 1,並限制為 <= 32。 |
DISABLE_CONTEXT_WINDOW_CHECKS |
false |
open-sse/handlers/chatCore.ts |
危險的選擇性啟用設定,會略過 OmniRoute 對直接單一模型請求執行的本機上下文視窗/最大輸入權杖檢查。上游提供者仍會強制執行其實際限制;提示詞壓縮與模型本身的輸出權杖上限仍維持啟用。實際優先順序為「功能旗標資料庫覆寫 > 環境變數 > 預設值」;無須重新啟動。 |
OMNIROUTE_SELF_HOSTED_PROVIDERS |
(未設定) | open-sse/services/selfHostedEntry.ts |
內嵌 YAML providers: 文件(RIC-738、D4)。設定後(無論是否包含 strategy: 區塊),/v1/chat/completions 都會轉向自架的統一 OpenAI 相容入口,而非雲端管線。未設定(預設值):路由會直接轉交至現有的雲端管線。請參閱 docs/routing/SELF_HOSTED_OPENAI_ENTRY.md。 |
OMNIROUTE_SELF_HOSTED_PROVIDERS_FILE |
(未設定) | open-sse/services/selfHostedEntry.ts |
指向 YAML 檔案的路徑,該檔案包含與 OMNIROUTE_SELF_HOSTED_PROVIDERS 相同的 providers: 文件,適用於偏好使用檔案而非內嵌環境變數的部署方式。任一項皆可啟用自架入口。 |
OMNIROUTE_SELF_HOSTED_API_KEY |
(未設定 — 開放路由) | open-sse/services/selfHostedEntry.ts |
統一自架入口的選用共用 API 金鑰(D5 鷹架,保留供個別金鑰配額系統使用)。設定後,請求必須包含 Authorization: Bearer <key>。未設定:路由保持開放,與現有自架本機提供者模式一致(回送/受信任網路部署)。 |
OMNIROUTE_SELF_HOSTED_STRATEGY |
(未設定) | open-sse/services/routingStrategies.ts |
決定性路由引擎的內嵌 YAML strategy: 文件(M2/RIC-740、D3)— 黑名單/白名單、冷卻斷路器、成本優先、延遲感知、備援鏈。依個別金鑰覆寫巢狀置於 OMNIROUTE_SELF_HOSTED_PROVIDERS 內的內嵌 strategy: 區塊。請參閱 docs/routing/DETERMINISTIC_ROUTING.md。 |
OMNIROUTE_SELF_HOSTED_STRATEGY_FILE |
(未設定) | open-sse/services/routingStrategies.ts |
指向 YAML 檔案的路徑,該檔案包含與 OMNIROUTE_SELF_HOSTED_STRATEGY 相同的 strategy: 文件,適用於偏好使用檔案而非內嵌環境變數的部署方式。 |
OMNIROUTE_DISABLE_CONVERSATION_TRACKING |
(未設定) | open-sse/services/conversationTracker.ts |
設為 1 可停止收集對話歷史記錄。resolveConversationId() 會在讀取 SQLite 或解析訊息歷史記錄之前傳回未追蹤的結果,且用戶端提供的工作階段 ID 也包含在內。路由工作階段的處理方式維持不變,且不會刪除現有記錄。適用於不使用儀表板對話檢視,並希望停止回合資料表持續增長的部署。 |
7. URL 與雲端同步
Section titled “7. URL 與雲端同步”| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
BASE_URL |
http://localhost:20128 |
src/lib/cloudSync.ts |
供伺服器端內部同步工作呼叫 /api/sync/cloud 的 URL。即使應用程式透過公開代理存取,仍應將此項保留為回送位址/容器 URL。 |
CLOUD_URL |
(空白) | src/lib/cloudSync.ts |
雲端中繼端點 URL(進階功能)。 |
CLOUD_SYNC_TIMEOUT_MS |
12000 |
src/lib/cloudSync.ts |
雲端同步請求的 HTTP 逾時時間。 |
OMNIROUTE_BUILD_PROFILE |
full |
Webpack 建置設定 | 建置階段設定檔(設為 minimal 可從套件中實際排除特權模組)。 |
OMNIROUTE_STANDALONE_DIR |
.build/ 獨立輸出 | scripts/build/colocate-standalone.mjs |
覆寫建置後並置步驟所使用之獨立輸出目錄的建置階段設定。這不是執行階段設定。 |
OMNIROUTE_CLOUD_SYNC_SECRET |
(空白) | src/lib/cloudSync.ts |
用於驗證雲端同步回應之 HMAC-SHA256 簽章的共用密鑰。 |
OMNIROUTE_CLOUD_SYNC_SECRETS |
false |
src/lib/cloudSync.ts |
設為 true 可允許雲端同步端點覆寫本機憑證。預設值為 false。 |
OMNIROUTE_CLOUD_SYNC_ENFORCE_SIGNATURE |
false |
src/lib/cloudSync.ts |
設為 true,可在未設定本機密鑰時拒絕未簽章的雲端同步回應(#13679)。只要簽章存在,就一定會進行驗證;而當 OMNIROUTE_CLOUD_SYNC_SECRET 未設定時,無論此旗標為何,都一定會拒絕該簽章。v3.9 起,預設值將改為強制執行。 |
OMNIROUTE_ZED_IMPORT_LEGACY_ONE_STEP |
false |
src/app/api/providers/zed/import/route.ts |
設為 true,可在未經使用者確認的情況下,回復使用 v3.8.5 的單一步驟「匯入所有內容」行為。 |
NEXT_PUBLIC_BASE_URL |
http://localhost:20128 |
OAuth、儀表板、同步 | 用於 OAuth redirect_uri、儀表板連結及產生之公開 URL 的對外 URL。當 OAuth 回呼或產生的瀏覽器連結必須使用標準反向代理主機時,請將此項設為穩定的公開 URL。 |
NEXT_PUBLIC_CLOUD_URL |
(空白) | 用戶端 | CLOUD_URL 的用戶端鏡像。 |
NEXT_PUBLIC_APP_URL |
(未設定) | src/shared/services/cloudSyncScheduler.ts |
NEXT_PUBLIC_BASE_URL 的舊版備援。 |
NEXT_PUBLIC_PORT |
(未設定 — 備援為 PORT) |
src/shared/hooks/useDisplayBaseUrl.ts |
在來源不明時(SSR/測試),用於顯示 URL 的用戶端備援連接埠;會在 PORT 之前讀取。 |
OMNIROUTE_PUBLIC_BASE_URL |
(未設定) | 公開來源解析器、圖片 URL | 用於產生公開 URL 及驗證非儀表板瀏覽器來源、優先順序最高的瀏覽器端 OmniRoute 來源。當 OpenWebUI 或其他中繼服務透過內部 URL 存取 OmniRoute,但使用者的瀏覽器必須從 LAN、隧道或公開來源擷取所產生的媒體時,請設定此值。請勿包含 /v1。 |
OMNIROUTE_PROVIDER_MANIFEST_URL |
(未設定) | open-sse/config/providerPluginManifestUrl.ts |
公告給 sidecar 用戶端的絕對提供者外掛程式資訊清單 URL。若未設定,OmniRoute 會根據請求來源或 HOST/PORT 衍生 /api/v1/provider-plugin-manifest。 |
OMNIROUTE_PUBLIC_PROTOCOL |
http |
open-sse/config/providerPluginManifestUrl.ts |
在沒有請求來源的情況下,根據 HOST/PORT 衍生提供者外掛程式資訊清單 URL 時使用的通訊協定。若位於終止 TLS 的公開 Proxy 後方,且未明確設定 OMNIROUTE_PROVIDER_MANIFEST_URL,請設為 https。 |
OMNIROUTE_TRUST_PROXY |
(未設定) | src/server/origin/publicOrigin.ts |
轉送公開來源標頭的選用信任模式。未設定 = 不信任 Forwarded/X-Forwarded-*,不將其用於安全性判斷。true/loopback 僅信任來自具有權杖戳記之迴路 Proxy 的轉送主機/通訊協定。private/lan 也信任私有 LAN Proxy 對等端。在正式環境中,建議明確設定 NEXT_PUBLIC_BASE_URL。 |
KIE_CALLBACK_URL |
(未設定) | open-sse/utils/kieTask.ts |
非同步 kie.ai 工作的公開回呼 URL。優先順序最高,會覆寫 OMNIROUTE_KIE_CALLBACK_URL 和 OMNIROUTE_PUBLIC_URL。 |
OMNIROUTE_KIE_CALLBACK_URL |
(未設定) | open-sse/utils/kieTask.ts |
KIE_CALLBACK_URL 的替代拼法。主要變數未設定時會使用此備援。 |
OMNIROUTE_PUBLIC_URL |
(未設定) | open-sse/utils/kieTask.ts |
用於組合非同步回呼 URL 的公開來源。這是 kie.ai 回呼優先順序最低的備援;亦可作為其他中繼服務的通用公開 URL。 |
OMNIROUTE_CROF_USAGE_URL |
https://crof.ai/usage_api/ |
open-sse/services/usage.ts |
Usage 頁面使用的 CrofAI 配額查詢端點。可針對中繼服務/測試固定資料進行覆寫。 |
OMNIROUTE_OPENCODE_QUOTA_URL |
https://opencode.ai/zen/go/v1/usage |
open-sse/services/opencodeQuotaFetcher.ts |
Usage 頁面使用、透過 API 金鑰驗證的官方 OpenCode Go 用量端點。可針對中繼服務/測試固定資料進行覆寫。 |
OPENCODE_SYNTHESIZE_CLI_HEADERS |
true |
open-sse/executors/opencode.ts |
在用戶端未傳送這些標頭時,於 opencode-go/zen 上游請求中合成 OpenCode CLI 識別標頭(User-Agent、x-opencode-client/project、請求/工作階段 UUID),讓 VPS 輸出的流量可被 Cloudflare 接受(#6210/#5997)。自 #10571 起預設啟用;可使用 false/0/no/off 停用。 |
OPENCODE_USER_AGENT |
opencode/1.18.31 |
open-sse/utils/opencodeHeaders.ts |
當 OPENCODE_SYNTHESIZE_CLI_HEADERS 啟用,且未設定個別提供者的 <PROVIDER>_USER_AGENT 覆寫值時所使用的預設 User-Agent。僅套用於 opencode 執行器。對於受到上游閘道限制的無金鑰請求,若設定的值未包含 opencode/<version >= 1.17>,則會以此預設值取代,而非拒絕請求。 |
OPENCODE_CLIENT |
desktop |
open-sse/executors/opencode.ts |
當 OPENCODE_SYNTHESIZE_CLI_HEADERS 啟用時,合成的 x-opencode-client 標頭所使用的值。 |
OPENCODE_PROJECT |
global |
open-sse/executors/opencode.ts |
當 OPENCODE_SYNTHESIZE_CLI_HEADERS 啟用時,合成的 x-opencode-project 標頭所使用的值。 |
OPENCODE_FREE_TIER_REQUEST_CONTRACT |
(未設定) | open-sse/executors/opencodeFreeTierContract.ts |
設為 off 可停止調整無金鑰 OpenCode 請求的主體(串流旗標與工具清單)。標頭仍會套用。此設定會在每次請求時讀取,因此變更會立即生效。 |
OPENCODE_FREE_TIER_PLACEHOLDER_TOOLS |
(未設定) | open-sse/executors/opencodeFreeTierContract.ts |
當無金鑰 OpenCode 請求未攜帶任何工具,且尚未觀察到該模型使用任何工具時,用於宣告工具名稱的逗號分隔清單。空值會退回使用單一預留位置工具,並告知模型不要呼叫該工具。最多 32 個項目,格式為 [A-Za-z_][A-Za-z0-9_-]{0,63};無效項目將被忽略。 |
OMNIROUTE_OLLAMA_CLOUD_USAGE_URL |
https://ollama.com/settings |
open-sse/services/usage.ts |
用於擷取配額資訊的 Ollama Cloud 設定頁面 URL。可針對中繼服務/測試固定資料進行覆寫。 |
OLLAMA_USAGE_COOKIE |
(未設定) | open-sse/services/usage.ts |
用於從設定頁面擷取配額資訊的 Ollama Cloud __Secure-session Cookie。此資訊具敏感性;設定多個帳戶時,建議優先使用各連線的儀表板欄位。 |
OLLAMA_CLOUD_USAGE_COOKIE |
(未設定) | open-sse/services/usage.ts |
Ollama Cloud __Secure-session Cookie 的替代環境變數。此資訊具敏感性;設定多個帳戶時,建議優先使用各連線的儀表板欄位。 |
OMNIROUTE_OLLAMA_USAGE_COOKIE |
(未設定) | open-sse/services/usage.ts |
Ollama Cloud __Secure-session Cookie 的替代環境變數,會優先於較短的別名使用。此資訊具敏感性;設定多個帳戶時,建議優先使用各連線的儀表板欄位。 |
OMNIROUTE_CODEWHISPERER_BASE_URL |
https://codewhisperer.us-east-1.amazonaws.com |
open-sse/services/usage.ts |
CodeWhisperer(AWS Kiro)用量限制端點。可針對中繼服務/測試固定資料進行覆寫。 |
[!IMPORTANT] 在反向代理(nginx、Caddy)後方部署時,若 OAuth 回呼或產生的公開連結必須使用該主機名稱,請將
NEXT_PUBLIC_BASE_URL設為穩定的公開 URL(例如https://omniroute.example.com)。若未設定,OAuth 回呼可能因 redirect_uri 不相符而失敗,且產生的公開連結可能會指向內部容器來源。對於伺服器對伺服器的工作,請將
BASE_URL保持為內部迴路/容器 URL。請勿將瀏覽器Origin或公開主機名稱用於攜帶憑證的內部自我擷取。經過驗證的儀表板寫入不需要靜態公開基礎 URL:儀表板會傳送同源的非安全請求,並附上繫結至工作階段的 CSRF 權杖。OmniRoute 仍會集中處理非儀表板瀏覽器整合的公開來源驗證:會先信任明確的公開 URL 環境變數;除非已啟用
OMNIROUTE_TRUST_PROXY,且直接相連的代理對等端已使用權杖標記為受信任,否則將忽略原始Forwarded/X-Forwarded-*標頭。請勿使用 CORS 設定來修正同源儀表板請求;CORS 僅適用於跨來源瀏覽器用戶端。
8. 出站代理
Section titled “8. 出站代理”透過 HTTP 或 SOCKS5 代理路由上游 LLM 提供者的呼叫,以進行出口控制、地理路由或 IP 遮蔽。
| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
ENABLE_SOCKS5_PROXY |
true |
open-sse/executors |
為上游呼叫啟用 SOCKS5 代理程式。設為 false 可停用。 |
NEXT_PUBLIC_ENABLE_SOCKS5_PROXY |
true |
用戶端 | 讓用戶端得知 SOCKS5 的可用性。 |
PROXY_SKIP_RECENTLY_FAILED |
false |
src/shared/utils/featureFlags.ts |
選擇啟用的功能旗標(請參閱 FEATURE_FLAGS.md;控制面板中的資料庫覆寫設定優先)。代理集區與各帳戶輪替機制會在一段時間內,停止再次提供剛發生失敗的成員(TCP 探測遭拒,或透過該代理收到 429);每次重複失敗時,此期間會加倍,直到達到上限。設為 true(或 1、yes)即可啟用。 |
HTTP_PROXY |
(未設定) | Node.js 標準 | 用於上游呼叫的 HTTP 代理。 |
HTTPS_PROXY |
(未設定) | Node.js 標準 | 用於上游呼叫的 HTTPS 代理。 |
ALL_PROXY |
(未設定) | Node.js 標準 | 通用代理(支援 socks5://)。 |
OMNIROUTE_PROXY_ECHO_URL |
(未設定) | src/lib/proxyEchoTarget.ts |
將代理出口探測所使用的回顯 IP 目標固定為單一 URL。未設定時,探測會先嘗試 api64.ipify.org,再嘗試 api4.ipify.org,以免將僅支援 IPv4 的通道誤報為無法使用(#9694)。 |
NO_PROXY |
(未設定) | Node.js 標準 | 以逗號分隔、可略過代理的主機名稱/IP。 |
OMNIROUTE_PROXY_DISPATCHER_CONNECTIONS |
32 |
open-sse/utils/proxyDispatcher.ts |
每個快取 HTTP/SOCKS 代理分派器的最大並行通訊端數量。當多個請求共用同一個帳戶層級代理時,Codex /v1/responses 等長時間執行的 SSE 串流需要多個連線。超過 256 的值會限制為 256。 |
SOCKS_HANDSHAKE_TIMEOUT_MS |
10000 |
open-sse/utils/socksConnectorWithFamily.ts |
SOCKS5 交握(連線)的逾時時間,以毫秒為單位。當單一住宅閘道主機承受高並行流量時(例如同時發出 100 個請求),請提高此值——在集區飽和的情況下,即使代理仍可連線,實際交握時間也可能超過 10 秒,否則會錯誤顯示為 [Proxy Fast-Fail] Proxy unreachable。上限為 120000。 |
PROXY_FAIL_OPEN |
false |
src/sse/handlers/chatHelpers.ts |
當設為 false(預設值)時,若指派給請求的代理解析失敗,該請求將被拒絕(失敗時關閉),而不會回退至直接連線——藉此防止真實 IP 洩漏。設為 true 可恢復舊版的 DIRECT 回退行為。 |
ENABLE_TLS_FINGERPRINT |
false |
open-sse/executors |
使用 wreq-js 偽裝 TLS 指紋(模擬 Chrome 124)。用以因應 JA3/JA4 封鎖。 |
TLS_FINGERPRINT_PROVIDERS |
(未設定) | open-sse/utils/proxyFetch.ts |
新代理 TLS 路由的逗號分隔提供者允許清單(open-sse/utils/proxyFetch.ts)。未設定時,直接 TLS 會維持其舊有行為;只有這些提供者會透過 Chrome-124 指紋橋接器進行路由。 |
OMNIROUTE_TURNSTILE_IGNORE_TLS_ERRORS |
false |
open-sse/services/claudeTurnstileSolver.ts |
允許 Claude Turnstile Playwright 瀏覽器情境忽略 HTTPS 憑證錯誤。 |
| 情境 | 設定 |
|---|---|
| 透過 SSH 通道使用 SOCKS5 | ALL_PROXY=socks5://127.0.0.1:7890, ENABLE_SOCKS5_PROXY=true |
| 企業 HTTP 代理伺服器 | HTTP_PROXY=http://proxy.corp.com:3128, HTTPS_PROXY=http://proxy.corp.com:3128, NO_PROXY=localhost,internal.corp.com |
| 反指紋辨識 | ENABLE_TLS_FINGERPRINT=true — 需要 wreq-js(已包含) |
| 出口受控/無法直接存取 | 保持 PROXY_FAIL_OPEN=false(預設值)。代理伺服器無法使用時,請求會直接失敗,而不會透過直接連線洩漏。 |
| 舊版/開發環境 — 允許直接連線備援 | PROXY_FAIL_OPEN=true。還原強化前的行為:代理解析失敗時使用直接連線。 |
注意(NVIDIA 驗證繞過 — #3226): NVIDIA 的 API 金鑰驗證端點 經由全域代理/TLS 修補後的 fetch 路由時會停滯(undici dispatcher → 504)。
src/lib/providers/validation.ts::directHttpsRequest()會刻意使用safeOutboundFetch({ bypassProxyPatch: true })繞過該單次驗證呼叫的代理修補。 這是一項已有文件記載且範圍受限的例外情況,不會影響聊天/用量的出口流量。 此繞過的範圍由tests/unit/proxy-bypass-scope-guard-3226.test.ts鎖定。
9. CLI 工具整合
Section titled “9. CLI 工具整合”控制 OmniRoute 如何探索及啟動 CLI Sidecar(Claude Code、Codex 等)。
| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
CLI_MODE |
auto |
src/shared/services/cliRuntime.ts |
auto = 搜尋系統 PATH;manual = 僅使用明確指定的路徑。 |
CLI_EXTRA_PATHS |
(未設定) | src/shared/services/cliRuntime.ts |
用於探索 CLI 二進位檔的額外 PATH 項目(以冒號分隔)。 |
CLI_CONFIG_HOME |
(未設定) | src/shared/services/cliRuntime.ts |
覆寫用於讀取 CLI 設定(~/.claude、~/.codex)的家目錄。此路徑必須是絕對路徑,且位於程序的家目錄內;或者,在容器中,必須是繫結掛載的路徑(/host-home 即以此方式運作)。其他任何路徑都會回退至家目錄。 |
CLI_ALLOW_CONFIG_WRITES |
true |
src/shared/services/cliRuntime.ts |
允許 OmniRoute 寫入 CLI 設定檔(權杖重新整理、工作階段資料)。設為 false 可讓每次 CLI 設定寫入都失敗,並顯示明確的「已停用寫入」錯誤。 |
CLI_CLAUDE_BIN |
claude |
src/shared/services/cliRuntime.ts |
Claude CLI 二進位檔的自訂路徑。 |
CLI_CODEX_BIN |
codex |
src/shared/services/cliRuntime.ts |
Codex CLI 二進位檔的自訂路徑。 |
CLI_DROID_BIN |
droid |
src/shared/services/cliRuntime.ts |
Droid CLI 二進位檔的自訂路徑。 |
CLI_OPENCLAW_BIN |
openclaw |
src/shared/services/cliRuntime.ts |
OpenClaw CLI 二進位檔的自訂路徑。 |
CLI_CURSOR_BIN |
agent,接著是 cursor |
src/shared/services/cliRuntime.ts |
Cursor 代理程式二進位檔的自訂路徑。若未設定,偵測時會先嘗試 agent,再回退至 cursor。 |
CLI_CLINE_BIN |
cline |
src/shared/services/cliRuntime.ts |
Cline CLI 二進位檔的自訂路徑。 |
CLI_5DIVE_BIN |
5dive |
src/shared/services/cliRuntime.ts |
5dive CLI 二進位檔的自訂路徑。 |
CLI_5DIVE_STATE_DIR |
/var/lib/5dive |
src/shared/services/cliRuntime.ts |
5dive 的系統狀態目錄(由 root 擁有的驗證設定檔);與 5dive 本身的 STATE_DIR 預設值一致。 |
CLI_CONTINUE_BIN |
cn |
src/shared/services/cliRuntime.ts |
Continue CLI 二進位檔的自訂路徑。 |
CLI_QODER_BIN |
qodercli |
src/shared/services/cliRuntime.ts |
Qoder CLI 二進位檔的自訂路徑。 |
CLI_QWEN_BIN |
qwen |
src/shared/services/cliRuntime.ts |
Qwen Code CLI 二進位檔的自訂路徑。 |
CLI_AIDER_BIN |
aider |
src/shared/services/cliRuntime.ts |
Aider CLI 二進位檔的自訂路徑。 |
CLI_GOOSE_BIN |
goose |
src/shared/services/cliRuntime.ts |
Goose CLI 二進位檔的自訂路徑。 |
CLI_GEMINI_BIN |
gemini |
src/shared/services/cliRuntime.ts |
Google Gemini CLI 二進位檔的自訂路徑——僅用於伺服器端偵測/健康狀態檢查;omniroute run gemini 會從系統 PATH 解析 gemini 二進位檔。 |
CLI_KILO_BIN |
kilocode |
src/shared/services/cliRuntime.ts |
Kilo Code CLI 二進位檔的自訂路徑。 |
CLI_OPENCODE_BIN |
opencode |
src/shared/services/cliRuntime.ts |
OpenCode CLI 二進位檔的自訂路徑。 |
CLI_HERMES_BIN |
hermes |
src/shared/services/cliRuntime.ts |
Hermes 二進位檔的自訂路徑。由兩個目錄項目(hermes 與 hermes-agent)共用。 |
CLI_FORGE_BIN |
forge |
src/shared/services/cliRuntime.ts |
ForgeCode CLI 二進位檔的自訂路徑。 |
CLI_JCODE_BIN |
jcode |
src/shared/services/cliRuntime.ts |
jcode CLI 二進位檔的自訂路徑。 |
CLI_DEEPSEEK_TUI_BIN |
deepseek-tui |
src/shared/services/cliRuntime.ts |
DeepSeek TUI 二進位檔的自訂路徑。 |
CLI_CODEWHALE_BIN |
codewhale |
src/shared/services/cliRuntime.ts |
CodeWhale CLI 二進位檔的自訂路徑。 |
CLI_SMELT_BIN |
smelt |
src/shared/services/cliRuntime.ts |
Smelt CLI 二進位檔的自訂路徑。 |
CLI_PI_BIN |
pi |
src/shared/services/cliRuntime.ts |
Pi(pi-coding-agent)二進位檔的自訂路徑。 |
CLI_CRUSH_BIN |
crush |
src/shared/services/cliRuntime.ts |
Crush CLI 二進位檔的自訂路徑。 |
CLI_OMP_BIN |
omp |
src/shared/services/cliRuntime.ts |
Oh My Pi(omp)代理程式二進位檔的自訂路徑。 |
CLI_LETTA_BIN |
letta |
src/shared/services/cliRuntime.ts |
Letta CLI 二進位檔的自訂路徑。 |
CLI_PRIME_AGENT_BIN |
prime-agent |
src/shared/services/cliRuntime.ts |
Prime Agent(Prime Intellect)二進位檔的自訂路徑。 |
CLI_WINDSURF_BIN |
(無) | src/shared/services/cliRuntime.ts |
Windsurf 二進位檔的自訂路徑。Windsurf 未提供預設命令 — 在設定此項之前,二進位檔偵測將保持停用。 |
CLI_DEVIN_BIN |
devin |
open-sse/executors/devin-cli.ts |
Devin CLI 二進位檔(v3.8.0)的自訂路徑。供 Windsurf/Devin 執行器使用。 |
DEVIN_DESKTOP_VERSION |
3.6.27 |
open-sse/executors/devin-desktop.ts |
Devin Desktop 的 ide_version。覆寫值必須使用 x.y.z 格式;無效值將回退至已驗證的預設值。 |
DEVIN_DESKTOP_EXTENSION_VERSION |
1.48.2 |
open-sse/executors/devin-desktop.ts |
內建 Codeium/language-server 的 extension_version,與 Desktop 的 ide_version 不同。覆寫值必須使用 x.y.z;無效值將使用內建預設值。 |
CLI_DEVIN_AGENTIC_BIN |
devin |
open-sse/executors/devin-cli-agentic.ts |
僅限代理式橋接器的 Devin CLI 覆寫值。執行器僅接受本機 ACP stdio 上游。 |
DEVIN_AGENTIC_HOME |
(必填) | open-sse/executors/devin-cli-agentic.ts |
代理式 Devin 子程序的絕對隔離主目錄;接受的橋接路徑為 /home/bridge 與任務本機的 .sandbox 路徑(在 Windows 上為 C:\...\.sandbox\...)。 |
DEVIN_AGENTIC_ACP_TIMEOUT_MS |
120000 |
open-sse/executors/devin-cli-agentic.ts |
單次 Devin ACP 回合的最長持續時間;超過此時間後,橋接器會終止子程序並明確傳回逾時。 |
DEVIN_BRIDGE_MODEL |
devin-cli-agentic/swe-1-7 |
docker/devin-bridge/compose.yml |
隔離橋接器的主要 Claude Code 模型別名。即時測試框架會將範例替換為目前 Devin 帳戶所傳回的模型。 |
DEVIN_BRIDGE_SONNET_MODEL |
DEVIN_BRIDGE_MODEL |
docker/devin-bridge/compose.yml |
Claude Code 要求其 Sonnet 預設模型時所使用的隔離橋接器別名。 |
DEVIN_BRIDGE_OPUS_MODEL |
DEVIN_BRIDGE_MODEL |
docker/devin-bridge/compose.yml |
Claude Code 要求其 Opus 預設模型時所使用的隔離橋接器別名。 |
DEVIN_BRIDGE_HAIKU_MODEL |
DEVIN_BRIDGE_MODEL |
docker/devin-bridge/compose.yml |
Claude Code 要求其 Haiku 預設模型時所使用的隔離橋接器別名。 |
DEVIN_BRIDGE_SUBAGENT_MODEL |
DEVIN_BRIDGE_MODEL |
docker/devin-bridge/compose.yml |
用於 Claude Code 子代理程式的隔離橋接器別名。 |
DEVIN_SEAT_API_URL |
https://server.codeium.com |
open-sse/services/usage/devinCli.ts |
用於 Devin CLI 配額的 Codeium 席位管理 API(GetUserStatus)之選用覆寫值。 |
AUGGIE_BIN |
auggie |
open-sse/executors/auggie.ts |
本機 auggie 提供者所使用之 Augment (Auggie) CLI 二進位檔的絕對路徑覆寫值。若未設定,則依序退回使用 CLI_AUGGIE_BIN,再於 PATH 中查找。 |
CLI_AUGGIE_BIN |
auggie |
open-sse/executors/auggie.ts |
Augment (Auggie) CLI 二進位檔路徑的別名覆寫值(在 AUGGIE_BIN 之後檢查)。 |
ZCODE_BIN |
zcode |
open-sse/executors/zcode.ts |
本機 zcode 提供者的 stdio 用戶端所使用的二進位檔。若未設定,則退回使用 PATH 中的 zcode。 |
ZCODE_ARGS |
— | open-sse/executors/zcode.ts |
透過 cliTools 啟動時,傳遞給 zcode 二進位檔的額外引數 JSON 陣列(最多 16 個字串)。 |
ZCODE_CWD |
process.cwd() |
open-sse/executors/zcode.ts |
ZCode 應用程式伺服器子程序的工作目錄。 |
ZCODE_PROVIDER_ID |
builtin:zai-coding-plan |
open-sse/executors/zcode.ts |
傳送至應用程式伺服器的提供者 ID 覆寫值。 |
ZCODE_SERVER_RUNTIME_ROOT |
~/.zcode/server |
open-sse/executors/zcode.ts |
ZCode 應用程式伺服器執行階段的根目錄(內含隨附的 node 與 zcode-server.cjs)。 |
ZCODE_SERVER_NODE |
<runtimeRoot>/node |
open-sse/executors/zcode.ts |
用於託管 ZCode 應用程式伺服器的 Node 可執行檔。 |
ZCODE_SERVER_ENTRY |
<runtimeRoot>/zcode-server.cjs |
open-sse/executors/zcode.ts |
用於託管 ZCode 伺服器的應用程式伺服器進入點指令碼。 |
ZCODE_STARTUP_TIMEOUT_MS |
10000 |
open-sse/executors/zcode.ts |
ZCode 應用程式伺服器啟動被視為失敗前的啟動逾時時間(毫秒)。 |
ZCODE_RPC_TIMEOUT_MS |
30000 |
open-sse/executors/zcode.ts |
ZCode 應用程式伺服器呼叫的個別請求 RPC 逾時時間(毫秒)。 |
ZCODE_TURN_TIMEOUT_MS |
120000 |
open-sse/executors/zcode.ts |
單次 ZCode 輪次在監督程式判定逾時前的最長持續時間(毫秒)。 |
ZCODE_POLL_INTERVAL_MS |
250 |
open-sse/executors/zcode.ts |
輪詢 ZCode 輪次是否完成的間隔(毫秒)。 |
HERMES_HOME |
~/.hermes |
src/lib/cli-helper/config-generator/hermesHome.ts |
OmniRoute 讀取/寫入 Hermes CLI 設定的 Hermes Agent 主目錄。與 Hermes PowerShell 安裝程式在 Windows 上設定的環境變數相符(%LOCALAPPDATA%\hermes)。 |
CLI 設定檔自動同步
Section titled “CLI 設定檔自動同步”這些功能旗標為選用功能,且預設為關閉。也可從 CLI Code 儀表板切換這些旗標。
| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
OMNIROUTE_AUTO_SYNC_CODEX_PROFILES |
false |
src/shared/constants/featureFlagDefinitions.ts |
提供者模型同步後,自動根據即時目錄重寫 ~/.codex/*.config.toml 設定檔。需要 CLI_ALLOW_CONFIG_WRITES;絕不變更作用中/預設的 Codex 設定、驗證資訊、Codex-lb 設定或提供者選擇。 |
OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES |
false |
src/shared/constants/featureFlagDefinitions.ts |
提供者模型同步後,自動根據即時目錄重寫 ~/.claude/profiles/<name>/settings.json Claude Code 設定檔。需要 CLI_ALLOW_CONFIG_WRITES;絕不變更作用中/預設的 Claude 設定、驗證資訊或提供者選擇。 |
Docker 範例
Section titled “Docker 範例”# 將主機二進位檔掛載至容器中,並告知 OmniRoute 其所在位置:CLI_EXTRA_PATHS=/host-cli/binCLI_CONFIG_HOME=/host-homeCLI_ALLOW_CONFIG_WRITES=trueCLI_CLAUDE_BIN=/host-cli/bin/claudeCLI_CONFIG_HOME 僅在路徑確實從主機綁定掛載時才會生效——請搭配如 ~/.codex:/host-home/.codex:rw 的掛載設定(請參閱 docker-compose.yml 中的 host 設定檔)。若路徑既不位於容器使用者的家目錄內,也不是綁定掛載,則會被忽略,因為寫入其中的內容會在容器重新建立時遭到捨棄。
映像檔以 USER node 執行,因此未掛載的 /root 不是有效的覆寫位置。
| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
OMNIROUTE_CONTAINER |
(自動) | src/shared/utils/containerEnv.ts |
強制開啟(1/true)或關閉(0/false)容器偵測。僅在自動偵測無法辨識的執行環境中才需要使用。 |
OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE |
false |
src/shared/services/cliRuntime.ts |
仍允許 CLI 工具將設定寫入容器中未掛載的路徑。對應的 CLI 選項為 --allow-container-write。 |
CLI 執行檔(omniroute)輔助變數
Section titled “CLI 執行檔(omniroute)輔助變數”這些變數會調整 omniroute CLI 執行檔本身的行為(而非上述的 sidecar 偵測)。
| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
OMNIROUTE_LANG |
(系統) | bin/cli/i18n.mjs |
強制指定 CLI 輸出語言。使用 BCP-47 語言地區代碼(例如 en、pt-BR)。會覆寫系統語言地區環境變數(LC_ALL、LC_MESSAGES)。 |
OMNIROUTE_SHOW_LOG |
(未設定) | bin/cli/runtime/processSupervisor.mjs |
設為 1,即可在受監督模式下將伺服器的 stdout/stderr 轉送至終端機。等同於 omniroute serve 的 --log 旗標。 |
OMNIROUTE_CLI_TOKEN |
(未設定) | bin/cli/api.mjs |
以 x-omniroute-cli-token 標頭注入的機器驗證權杖。在工作 8.12 中自動產生。 |
OMNIROUTE_HTTP_TIMEOUT_MS |
30000 |
bin/cli/api.mjs |
CLI → 伺服器請求每次嘗試的 HTTP 逾時時間(毫秒)。 |
OMNIROUTE_READY_TIMEOUT_MS |
60000 |
bin/cli/utils/pid.mjs |
CLI 在顯示逾時警告前,等待伺服器健康狀態端點的最長時間(毫秒)。適用於緩慢的冷啟動(例如 Windows)。也可透過 --ready-timeout 設定。 |
OMNIROUTE_VERBOSE |
0 |
bin/cli/api.mjs |
設為 1,即可在執行 CLI 命令期間將重試/退避診斷資訊輸出至 stderr。 |
OMNIROUTE_PLUGIN_PATH |
(未設定) | bin/cli/plugins.mjs |
用於探索 CLI 外掛程式(omniroute-cmd-* 套件)的自訂目錄。未設定時預設為 ~/.omniroute/plugins/。僅供 CLI 使用——此變數絕不會傳遞至伺服器端的外掛程式掃描器;後者所指向的目錄由 OMNIROUTE_PLUGINS_DIR 設定(第 2 節)。 |
10. 內部代理程式與 MCP 整合
Section titled “10. 內部代理程式與 MCP 整合”| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
OMNIROUTE_BASE_URL |
自動偵測 | open-sse/mcp-server/server.ts |
MCP/A2A 工具用來連線至 OmniRoute 的明確 URL。會覆寫 localhost 自動偵測。 |
OMNIROUTE_API_KEY |
(未設定) | MCP/A2A 模組 | 供內部 MCP 工具與 A2A 技能呼叫使用的 API 金鑰。 |
OMNIROUTE_API_KEY_ID |
(未設定) | open-sse/mcp-server/audit.ts |
用於 MCP 稽核記錄歸屬的金鑰 ID。 |
ROUTER_API_KEY |
(未設定) | 舊版 | OMNIROUTE_API_KEY 的舊版別名。 |
OMNIROUTE_A2A_HISTORY_RETENTION_DAYS |
30 |
src/lib/a2a/taskManager.ts |
A2A 任務歷史記錄在每日清除作業刪除資料列之前,於本機資料庫中保留的天數。未設定、非數值或 <= 0 時會回退至 30。 |
OMNIROUTE_A2A_MEMORY_HITS |
1 |
src/lib/a2a/taskExecution.ts |
A2A 記憶命中可觀測性功能的終止開關。設為 0 可完全略過任務的記憶回想查詢;任何其他值(包括未設定)都會維持啟用。 |
OMNIROUTE_ISSUE_AGENT_ENABLED |
false |
src/app/api/issue-agent/runs/route.ts |
啟用離線/本機 Issue Agent 的錄製式分流端點。除非明確執行本機錄製式分流工作流程,否則請保持停用。 |
OMNIROUTE_ISSUE_AGENT_TIMEOUT_MS |
(未設定) | src/lib/issueAgent/execution.ts |
單次 Issue Agent 錄製式分流執行的逾時時間(毫秒)。此值會限制在內部最大值以內;未設定或無效時,會回退至內建預設值。 |
OMNIROUTE_CONTEXT |
(作用中的內容) | bin/cli/program.mjs, bin/cli/api.mjs |
omniroute 命令的 CLI 遠端模式內容/設定檔;會覆寫本機內容存放區中的作用中內容。等同於 --context <name>。 |
OMNIROUTE_CONTEXT_KEYCHAIN_DISABLED |
0 |
bin/cli/contexts.mjs |
停用 CLI 內容憑證可選用的 keytar 作業系統鑰匙圈後端。啟用時,憑證會保留在權限模式為 0600 的 config.json 中,且 CLI 會發出一次性的回退警告;適用於刻意採用的無頭/容器作業。 |
OMNIROUTE_MCP_ENFORCE_SCOPES |
false |
open-sse/mcp-server/server.ts |
對 MCP 工具呼叫強制執行以範圍為基礎的存取控制。 |
OMNIROUTE_MCP_SCOPES |
(全部) | open-sse/mcp-server/server.ts |
以逗號分隔的範圍:admin、combos、health、models、routing、budget、metrics、pricing、memory、skills。 |
OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS |
false |
open-sse/mcp-server/descriptionCompressor.ts |
在序列化資訊清單之前壓縮 MCP 工具說明。啟用值:1、true、on。 |
OMNIROUTE_MCP_DESCRIPTION_COMPRESSION |
rtk |
open-sse/mcp-server/descriptionCompressor.ts |
壓縮演算法/設定檔。停用值:0、false、off。 |
OMNIROUTE_MCP_FETCH_TIMEOUT_MS |
10000 |
open-sse/mcp-server/fetchTimeout.ts |
MCP 伺服器內部管理讀取(健康狀態、韌性、組合、配額、使用量)的中止時間預算(毫秒)。 |
OMNIROUTE_MCP_UPSTREAM_TIMEOUT_MS |
60000 |
open-sse/mcp-server/fetchTimeout.ts |
等待提供者回應的 MCP 躍點(route_request、web_search、`web_fetch)之中止時間預算(毫秒)。 |
OMNIROUTE_CORPUS_CACHE_SIZE |
5 |
src/lib/localCorpus/configured.ts |
在記憶體中快取的本機語料庫索引執行個體數量上限(LRU,每個已建立索引的根目錄一個)。下限限制為 1。 |
MODEL_SYNC_INTERVAL_HOURS |
24 |
src/shared/services/modelSyncScheduler.ts |
模型目錄同步間隔(小時)。 |
PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES |
70 |
src/lib/usage/providerLimits.ts |
提供者速率限制與配額的輪詢間隔。 |
PROVIDER_LIMITS_SYNC_SPACING_MS |
1500 |
src/lib/usage/providerLimits.ts |
大量同步期間,連續 OAuth 配額擷取之間的間隔(毫秒);OAuth 連線會逐一擷取,以避免對上游造成突發流量。設為 0 可停用此機制(並行擷取)。 |
OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS |
250 |
open-sse/services/quotaFetchThrottle.ts |
每次請求的預檢/監控路徑上,連續擷取上游配額的最短間隔(毫秒);錯開並行網路呼叫,以免同一 IP 上的大量帳戶對上游造成突發流量。已接入 Codex(/wham/usage)、DeepSeek、Bailian(兩個擷取位置)、OpenCode 及 Crof 配額擷取器(#6009、#6911)。一般的 usage.ts::getUsageForProvider 分派路徑(github/glm/minimax/nanogpt/xai/等)尚未涵蓋,將另行追蹤。快取命中不受影響。0 表示停用;限制範圍為 0..5000。 |
PROVIDER_LIMITS_POST_USAGE_REFRESH_DELAY_MS |
5000 |
src/lib/usage/providerLimits.ts |
實際用量事件發生後,重新整理提供者限制前的延遲(毫秒),讓上游配額 API 有時間登記用量。 |
OMNIROUTE_LOGIN_BROWSER_PATH |
自動偵測 | open-sse/services/adobeFireflyBrowserLogin.ts |
用於互動式 Adobe Firefly 登入及離屏續期的系統 Chrome 或 Edge 可執行檔絕對路徑。 |
ADOBE_FIREFLY_BROWSER_REFRESH |
已啟用 | open-sse/services/adobeFireflySession.ts |
使用帳戶範圍的 Chrome CDP 工作階段,讓 IMS 與瀏覽器風險狀態保持最新。設為 0 可停用瀏覽器續期。 |
ADOBE_FIREFLY_SESSION_DISK |
已啟用 | open-sse/services/adobeFireflySession.ts |
將修復後的 Adobe 工作階段持久化至 DATA_DIR,使其可跨處理程序重新啟動保留。設為 0 可僅在記憶體中保留工作階段。 |
ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS |
12000 |
open-sse/services/adobeFireflySession.ts |
Adobe Firefly 生成提交之間的最短間隔(毫秒);0 表示停用間隔。 |
ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS |
15000 |
open-sse/services/adobeFireflySession.ts |
每三次 Adobe 提交成功後的額外靜默時間(毫秒)。 |
ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS |
8000 |
open-sse/services/adobeFireflyClient.ts |
Adobe 暫時性 408 回應後的基礎退避時間(毫秒);與提交間隔搭配使用,最多嘗試五次。 |
OMNIROUTE_DISABLE_BACKGROUND_SERVICES |
false |
src/instrumentation-node.ts |
停用所有背景服務(同步、定價、模型重新整理)。適用於 CI/測試。 |
OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS |
(未設定) | src/lib/config/runtimeSettings.ts |
在偵測到自動化測試時強制啟用背景工作。設為 1 可覆寫測試啟發式判斷。 |
OMNIROUTE_BUDGET_RESET_JOB_INTERVAL_MS |
600000 |
src/lib/jobs/budgetResetJob.ts |
預算重設檢查頻率(毫秒)。下限為 10000。 |
OMNIROUTE_CONNECTION_RECOVERY_INTERVAL_MS |
60000 |
src/lib/quota/connectionRecovery.ts |
主動連線冷卻恢復頻率(毫秒):在請求的關鍵路徑之外,重新驗證暫時性 rate_limited_until 已到期的連線。下限為 5000。 |
OMNIROUTE_DISABLE_CONNECTION_RECOVERY |
false |
src/lib/quota/connectionRecovery.ts |
停用主動連線冷卻恢復排程器(getProviderCredentials 中的延遲恢復仍然適用)。 |
OMNIROUTE_REASONING_CACHE_CLEANUP_INTERVAL_MS |
1800000 |
src/lib/jobs/reasoningCacheCleanupJob.ts |
推理快取清理頻率(毫秒)。下限為 60000。 |
OMNIROUTE_REASONING_MIN_BUDGET |
未設定(已停用) | open-sse/services/reasoningTokenBuffer.ts |
思考模型輸出預算的選用下限:呼叫端的 max_tokens 若位於 [256, floor),則會提高至下限(但不超過模型輸出上限)。未設定 = 絕不擴大用戶端預算(#9507)。 |
OMNIROUTE_LOG_EXPORT_CRON |
0 * * * * |
src/lib/jobs/logExportJob.ts |
用於呼叫記錄匯出工作的 Cron 運算式(UTC);該工作會清空每個已啟用的記錄匯出目的地。 |
OMNIROUTE_CONFIG_HOT_RELOAD_MS |
5000 |
src/lib/config/hotReload.ts |
設定熱重新載入的輪詢間隔(毫秒)。低於 1000 的值會被拒絕。 |
OMNIROUTE_DISABLE_REDIS_AUTH_CACHE |
(已啟用) | src/lib/db/apiKeys.ts |
設為 1 可略過由 Redis 支援的 API 金鑰驗證快取(強制從資料庫讀取)。 |
OMNIROUTE_RTK_TRUST_PROJECT_FILTERS |
0 |
open-sse/services/compression/engines/rtk/filterLoader.ts |
信任使用者管理的 RTK 專案篩選規則,不進行嚴格的簽章檢查。 |
OMNIROUTE_LITE_MAX_TOOL_LENGTH |
2000 |
open-sse/services/compression/lite.ts |
未設定 lite.maxToolLength 時,Lite 主動截斷工具結果的字元上限。範圍為 256–1000000。儀表板設定優先於此環境變數。 |
OMNI_COMPRESSION_WORKERS |
2 |
open-sse/services/compression/compressionWorkerPool.ts |
同步 RTK/Caveman 工作程序的最大並行數;超出的工作會依 FIFO 順序等待。 |
OMNI_COMPRESSION_WORKER_TIMEOUT_MS |
120000 |
open-sse/services/compression/compressionWorkerPool.ts |
每個工作的逾時時間(毫秒)。逾時的工作程序會被終止,而請求會採失敗開放方式保持不變。 |
OMNI_COMPRESSION_WORKER_IDLE_MS |
60000 |
open-sse/services/compression/compressionWorkerPool.ts |
未使用的壓縮工作程序在終止前的閒置存續時間(毫秒)。 |
COMPRESSION_PIPELINE_BREAKER_ENABLED |
false |
open-sse/services/compression/pipelineEngineBreaker.ts |
T02 堆疊式管線的各引擎斷路器總開關。選用功能(預設關閉) — 啟用後,若某個引擎在多個請求中反覆擲回例外,該引擎會在冷卻期間被略過(失敗開放);關閉 = 與舊版行為逐位元組完全相同。 |
COMPRESSION_PIPELINE_BREAKER_THRESHOLD |
3 |
open-sse/services/compression/pipelineEngineBreaker.ts |
引擎的斷路器開啟前,跨請求連續失敗的次數。 |
COMPRESSION_PIPELINE_BREAKER_COOLDOWN_MS |
30000 |
open-sse/services/compression/pipelineEngineBreaker.ts |
已開啟的引擎在進行半開探測前被略過的毫秒數。 |
COMPRESSION_CCR_RETRIEVAL_RAMP_FACTOR |
2 |
open-sse/services/compression/engines/ccr/index.ts |
T08/H8 CCR 擷取回饋增幅:已儲存區塊每次先前的擷取,都會線性提高其有效 minChars(經常擷取的內容壓縮較少;擷取次數 >=3 = 永不壓縮)。1 會停用增幅(僅在閾值處進行二元略過)。 |
COMPRESSION_CCR_DURABLE_STORE |
true |
open-sse/services/compression/engines/ccr/index.ts |
CCR 持久化區塊儲存區(#9061)。使用 SQLite 作為記憶體內儲存區的後端,讓區塊在遭到 LRU 淘汰、超過 TTL、服務重新啟動,或擷取請求落到其他執行個體後仍可保留。設為 false 可使區塊僅保留在記憶體中。無論此設定為何,超過 512KB 的區塊與雲端執行階段仍只會使用記憶體。 |
COMPRESSION_PREFIX_FREEZE_ENABLED |
false |
open-sse/services/compression/prefixFreeze.ts |
T08/H5 使用情況觀測式前綴凍結的主開關。選擇啟用(預設關閉) — 啟用後,觀測次數 >= 閾值的系統提示詞會被視為穩定且可快取的前綴,即使提供者未被靜態快取啟發式規則識別,也會在壓縮時予以保留(凍結只會保留,絕不修改)。 |
COMPRESSION_PREFIX_FREEZE_THRESHOLD |
3 |
open-sse/services/compression/prefixFreeze.ts |
系統提示詞被視為已凍結穩定前綴前所需的觀測次數。 |
OMNIROUTE_BOOTSTRAPPED |
false |
src/app/(dashboard)/dashboard/page.tsx |
初始設定完成後由啟動程序指令碼設為 true。控制設定精靈的可見性。 |
OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE |
0 |
open-sse/executors/antigravity.ts |
緊急繞過選項:允許請求主體覆寫 Antigravity 專案欄位。 |
ANTIGRAVITY_CREDITS |
off |
open-sse/services/antigravityCredits.ts |
Google One AI 點數政策:off 表示絕不注入點數,retry 表示在符合條件的配額 429 錯誤後注入一次,而 always 表示在第一次請求時即注入。 |
ANTIGRAVITY_ALLOW_SIGNATURE_BYPASS |
0 |
open-sse/translator/request/openai-to-gemini.ts |
當上游拒絕真實簽章時,允許 Antigravity 請求轉譯器略過其嚴格的 CLI 請求簽章驗證(偵錯/舊式 CLI 模式)。非零值會啟用此略過機制。 |
AGY_TOKEN_FILE |
~/.gemini/antigravity-cli/antigravity-oauth-token |
src/app/api/providers/agy-auth/apply-local/route.ts |
覆寫 Antigravity CLI(agy)用於自動偵測本機登入匯入的權杖檔案路徑。 |
OAuth CLI 橋接(內部)
Section titled “OAuth CLI 橋接(內部)”| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
OMNIROUTE_SERVER |
自動偵測 | src/lib/oauth/config/index.ts |
CLI↔OmniRoute 驗證橋接的伺服器 URL。 |
OMNIROUTE_TOKEN |
(未設定) | src/lib/oauth/config/index.ts |
CLI 橋接的驗證權杖。 |
OMNIROUTE_USER_ID |
cli |
src/lib/oauth/config/index.ts |
CLI 橋接工作階段的使用者 ID。 |
SERVER_URL |
(未設定) | src/lib/oauth/config/index.ts |
OMNIROUTE_SERVER 的舊版別名。 |
CLI_TOKEN |
(未設定) | src/lib/oauth/config/index.ts |
OMNIROUTE_TOKEN 的舊版別名。 |
CLI_USER_ID |
(未設定) | src/lib/oauth/config/index.ts |
OMNIROUTE_USER_ID 的舊版別名。 |
11. OAuth 提供者憑證
Section titled “11. OAuth 提供者憑證”用於 localhost 開發 的內建憑證。對於遠端部署,請在每個提供者的開發者控制台中註冊您自己的憑證。
| 變數 | 提供者 | 備註 |
|---|---|---|
CLAUDE_OAUTH_CLIENT_ID |
Claude Code (Anthropic) | 公開客戶端 — 無需密鑰。 |
CLAUDE_CODE_REDIRECT_URI |
Claude Code | 覆寫重定向 URI。預設值:https://platform.claude.com/oauth/code/callback |
CODEX_OAUTH_CLIENT_ID |
Codex / OpenAI | 公開客戶端。 |
GEMINI_OAUTH_CLIENT_ID |
Gemini (Google) | 需要匹配的 _SECRET。 |
GEMINI_OAUTH_CLIENT_SECRET |
Gemini (Google) | — |
KIMI_CODING_OAUTH_CLIENT_ID |
Kimi Coding (Moonshot) | 公開客戶端。 |
MUSE_CODE_OAUTH_CLIENT_ID |
Muse Code (Meta) | 用於公開 Muse CLI 設備流客戶端 ID 的可選覆寫。留空以使用內建的公開客戶端。 |
ANTIGRAVITY_OAUTH_CLIENT_ID |
Antigravity (Google) | 需要匹配的 _SECRET。 |
ANTIGRAVITY_OAUTH_CLIENT_SECRET |
Antigravity (Google) | — |
GITHUB_OAUTH_CLIENT_ID |
GitHub Copilot | 公開客戶端。 |
GHE_COPILOT_OAUTH_CLIENT_ID |
GHE Copilot | 用於 GitHub Enterprise Copilot 的 OAuth 客戶端 ID 的可選覆寫。未設定時,會回退到 GITHUB_OAUTH_CLIENT_ID 的公開預設值。 |
COPILOT_INTEGRATION_ID |
GitHub Copilot | 用於在 Copilot-Integration-Id 和 Editor-Plugin-Version 標頭中發送的 GitHub Copilot 客戶端整合 ID 的可選覆寫。預設為 copilot-developer-cli。 |
WINDSURF_API_KEY |
Windsurf / Devin (v3.8) | 當沒有每個連線憑證可用時,open-sse/executors/devin-cli.ts 使用的 API 金鑰回退。可選。 |
CLI_DEVIN_BIN |
Devin CLI (v3.8) | Devin CLI 二進位檔 (devin) 的自訂路徑。由 open-sse/executors/devin-cli.ts 解析。 |
GITLAB_DUO_OAUTH_CLIENT_ID |
GitLab Duo (v3.8) | GitLab Duo 的 OAuth 客戶端 ID。在 https://gitlab.com/-/profile/applications 註冊應用程式,重定向 URI 為 <NEXT_PUBLIC_BASE_URL>/callback,範圍為 api, read_user, openid, profile, email。回退到 GITLAB_OAUTH_CLIENT_ID。 |
GITLAB_DUO_OAUTH_CLIENT_SECRET |
GitLab Duo (v3.8) | GitLab Duo 的 OAuth 客戶端密鑰。可選 — PKCE 流程不需要密鑰。回退到 GITLAB_OAUTH_CLIENT_SECRET。 |
GITLAB_DUO_BASE_URL |
GitLab Duo (v3.8) | 覆寫 GitLab 基礎 URL (自託管 GitLab)。預設為 https://gitlab.com。回退到 GITLAB_BASE_URL。 |
GITLAB_BASE_URL |
GitLab Duo (v3.8) | GITLAB_DUO_BASE_URL 的舊版備用方案。當 _DUO_ 變體未設定時使用。 |
GITLAB_OAUTH_CLIENT_ID |
GitLab Duo (v3.8) | GITLAB_DUO_OAUTH_CLIENT_ID 的舊版備用方案,由 src/lib/oauth/constants/oauth.ts 取用。 |
GITLAB_OAUTH_CLIENT_SECRET |
GitLab Duo (v3.8) | GITLAB_DUO_OAUTH_CLIENT_SECRET 的舊版備用方案,由 src/lib/oauth/constants/oauth.ts 取用。 |
QODER_OAUTH_CLIENT_SECRET |
Qoder | — |
QODER_OAUTH_AUTHORIZE_URL |
Qoder | 設定以啟用 Qoder OAuth。 |
QODER_OAUTH_TOKEN_URL |
Qoder | — |
QODER_OAUTH_USERINFO_URL |
Qoder | — |
QODER_OAUTH_CLIENT_ID |
Qoder | — |
QODER_PERSONAL_ACCESS_TOKEN |
Qoder | 直接 API 金鑰備用方案(繞過 OAuth)。 |
QODER_CLI_WORKSPACE |
Qoder | Qoder CLI 的工作區 ID。 |
OMNIROUTE_QODER_WORKSPACE |
Qoder | QODER_CLI_WORKSPACE 的別名。 |
QODER_CLI_CONFIG_DIR |
Qoder | 覆寫 Qoder CLI 設定目錄(隔離的 PAT 會話,避免覆蓋瀏覽器登入)。 |
BLACKBOX_WEB_VALIDATED_TOKEN |
Blackbox Web | 前端 tk 權杖,用於在 /api/chat 上作為 validated 發送。當 Blackbox 強制執行權杖匹配時需要;否則 OmniRoute 會回退到隨機的 UUID。請參閱問題 #2252。 |
VISION_BRIDGE_BASE_URL |
Vision Bridge guardrail | 用於非 Anthropic 視覺橋接呼叫的 OpenAI 相容基礎 URL。預設為舊版 OpenAI URL 環境變數或 api.openai.com。指向 OmniRoute 的 /v1 自迴路或任何 OpenAI 相容端點(Gemini OpenAI 相容、OpenRouter)。問題 #2232。當 URL 是 OmniRoute 自己的 /v1 時,描述子請求會發送 x-omniroute-admission-bypass: internal 並使用解析的自迴路憑證進行驗證(本地模式下的 sk_omniroute 哨兵,或 OMNIROUTE_API_KEY / ROUTER_API_KEY — #1350),以便 REQUIRE_API_KEY=true 的部署能夠運作。 |
VISION_BRIDGE_API_KEY |
Vision Bridge guardrail | 上述 URL 的 API 金鑰。覆寫每個提供者的 OpenAI / Google 環境變數,用於非 Anthropic 視覺橋接呼叫。Anthropic 模型保留其專用的 Anthropic 金鑰路徑。問題 #2232。 |
OMNIROUTE_VISION_BRIDGE_NEGATIVE_CACHE_MS |
Vision Bridge guardrail | 「無可用候選」路由結果的快取時間,單位為毫秒(預設 30000)。無效或負值會回退到預設值;0 會禁用負面快取。來源:src/lib/guardrails/visionBridgeRouter.ts。 |
[!WARNING]
- 前往 Google Cloud Console → 憑證
- 建立 OAuth 2.0 用戶端 ID(類型:「網路應用程式」)
- 將您的伺服器 URL 新增為授權重新導向 URI
- 取代
.env中的憑證值。
12. 提供者 User-Agent 覆寫
Section titled “12. 提供者 User-Agent 覆寫”覆寫傳送至各上游提供者的 User-Agent 標頭。執行器基底類別會在執行階段動態解析此值:
process.env[`${PROVIDER_ID}_USER_AGENT`]來源:
open-sse/executors/base.ts→buildHeaders()
| 變數 | 預設值 | 更新時機 |
| –––––––––––––––– | ——————————————— | ———————————————————————————————— | —————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— |
| CLAUDE_USER_AGENT | claude-cli/2.1.258 (external, cli) | 當 Anthropic 發布新的 CLI 版本時 |
| CLAUDE_DISABLE_TOOL_NAME_CLOAK | false | executors/base.ts + executors/cliproxyapi.ts | 設為 1/true,即可在兩條連往 Anthropic 的路徑(原生 OAuth 與 CLIProxyAPI)上,將第三方框架的工具名稱逐字轉送給 Anthropic。預設情況下,執行器會以確定性的方式為非 Claude Code 工具名稱建立別名(若有 Claude Code 標準對應則使用該對應,否則轉為 PascalCase),並在回應中透過 _toolNameMap 將其還原,因此使用 snake_case 工具的框架不會因被辨識為具有指紋特徵的第三方用戶端而遭到拒絕。僅供偵錯使用。 |
| CODEX_USER_AGENT | codex-cli/0.155.0 (Windows 10.0.26200; x64) | 當 OpenAI 更新 Codex CLI 時 |
| CODEX_CLIENT_VERSION | 0.155.0 | 獨立於完整的 UA 字串覆寫 Codex 用戶端版本 |
| CLAUDE_CODE_CLIENT_VERSION | 2.1.258 | 獨立於 CLAUDE_USER_AGENT 覆寫所宣告的 Claude Code 版本。Anthropic 會依據此值限制部分模型(#12417)。 |
| GITHUB_COPILOT_CLI_VERSION | 1.0.81-6 | 獨立於 GITHUB_USER_AGENT 覆寫所宣告的 Copilot CLI 版本 |
| GITHUB_USER_AGENT | GitHubCopilotChat/0.54.0 | 當 GitHub Copilot Chat 更新時 |
| ANTIGRAVITY_USER_AGENT | antigravity/2.0.1 darwin/arm64 | 當 Antigravity IDE 更新時 |
| KIRO_USER_AGENT | AWS-SDK-JS/3.0.0 kiro-ide/1.0.0 | 當 Kiro IDE 更新時 |
| KIRO_OAUTH_CLIENT_ID | kiro-cli | 覆寫 Kiro 社交裝置代碼的 clientId(公開 ID) |
| KIRO_VERIFY_FULL_CRC | false | 選擇啟用:對 Kiro 事件串流執行完整的逐影格訊息 CRC 驗證(用於偵錯損毀的串流) |
| QODER_USER_AGENT | Qoder-Cli | 當 Qoder CLI 更新時 |
| CURSOR_USER_AGENT | Cursor/3.3 | 當 Cursor 更新時 |
[!TIP] 您可以使用
{PROVIDER_ID}_USER_AGENT模式,為任何提供者新增 User-Agent 覆寫。執行器會動態建構環境變數名稱。
13. CLI 指紋相容性
Section titled “13. CLI 指紋相容性”啟用後,OmniRoute 會重新排列 HTTP 標頭與 JSON 主體欄位,以符合官方 CLI 工具的確切特徵。這能在保留代理 IP 的同時,降低帳戶遭標記的風險。
來源: open-sse/config/cliFingerprints.ts、open-sse/executors/base.ts
各提供者設定
Section titled “各提供者設定”| 變數 | 啟用方式 | 效果 |
|---|---|---|
CLI_COMPAT_CODEX |
=1 |
模擬 Codex CLI 請求特徵 |
CLI_COMPAT_CLAUDE |
=1 |
模擬 Claude Code 請求特徵 |
CLI_COMPAT_GITHUB |
=1 |
模擬 GitHub Copilot 請求特徵 |
CLI_COMPAT_ANTIGRAVITY |
=1 |
模擬 Antigravity 請求特徵 |
CLI_COMPAT_CURSOR |
=1 |
模擬 Cursor 請求特徵 |
CLI_COMPAT_KIMI_CODING |
=1 |
模擬 Kimi Coding 請求特徵 |
CLI_COMPAT_KILOCODE |
=1 |
模擬 Kilo Code 請求特徵 |
CLI_COMPAT_CLINE |
=1 |
模擬 Cline 請求特徵 |
| 變數 | 啟用方式 | 效果 |
|---|---|---|
CLI_COMPAT_ALL |
=1 |
一次為所有提供者啟用指紋相容性。 |
Kimi Coding CLI 身分覆寫
Section titled “Kimi Coding CLI 身分覆寫”| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
KIMI_CLI_VERSION |
1.36.0 |
src/lib/oauth/providers/kimi-coding.ts |
覆寫 OAuth/API 呼叫期間傳送的 Kimi CLI 版本。 |
KIMI_CODING_DEVICE_ID |
(擷取的預設值) | src/lib/oauth/providers/kimi-coding.ts |
覆寫用於用戶端標頭中已擷取的 Kimi 裝置 ID。 |
[!NOTE] 此功能可與 User-Agent 覆寫(§12)搭配使用。指紋系統負責標頭排序與主體欄位排序,而 User-Agent 覆寫則負責指定特定的 UA 字串。兩者皆可獨立啟用。
14. API 金鑰提供者
Section titled “14. API 金鑰提供者”供使用直接驗證之提供者使用的 API 金鑰。建議設定方式: Dashboard → Providers → Add API Key。
透過環境變數設定則是 Docker 或無頭部署的替代方案。
可辨識的模式:{PROVIDER_ID}_API_KEY
| 變數 | 提供者 |
|---|---|
DEEPSEEK_API_KEY |
DeepSeek |
NVIDIA_API_KEY |
NVIDIA NIM |
JINA_AI_API_KEY |
Jina AI(Foundation API + Reader 後備) |
JINA_API_KEY |
Jina AI(JINA_AI_API_KEY 的別名) |
GEMINI_API_KEY |
Gemini(Google AI Studio)嵌入 + 聊天後備 |
GOOGLE_API_KEY |
Gemini(GEMINI_API_KEY 的別名) |
[!NOTE] Groq、xAI、Mistral、Perplexity、Together AI、Fireworks、Cerebras、Cohere、Nebius 與 Qianfan 的靜態
${PROVIDER}_API_KEY項目已於 v3.8.0 移除,因為執行階段不再讀取它們——這些提供者完全仰賴 Dashboard /data/provider-credentials.json/ 加密資料庫。遷移方式請參閱本文件底部的 稽核:已移除/無效變數 章節。
[!TIP] 透過 Dashboard 設定的金鑰會加密儲存於 SQLite 中,且優先於環境變數。
**Jina:**當存在 Dashboard
jina-ai(或共用的jina-reader)連線時,jina-ai/…嵌入、重新排序、分類、分段及jina-search不會向叢集環境金鑰計費——getProviderCredentials採用優先填入策略。僅在不存在可用的 Dashboard 金鑰時,才會使用JINA_AI_API_KEY/JINA_API_KEY。呼叫記錄會將環境變數後備來源標記為connection_id=env:JINA_AI_API_KEY。Reader 卡片(jina-reader、r.jina.ai)絕不會提供/v1/embeddings或/v1/rerank。Gemini:
gemini/gemini-embedding-2(別名google/gemini-embedding-2)會優先使用 Dashboard 的gemini連線。僅在不存在可用的 Dashboard 金鑰時,才會使用GEMINI_API_KEY/GOOGLE_API_KEY。呼叫記錄會將環境變數後備來源標記為connection_id=env:GEMINI_API_KEY。原生多模態流量會使用x-goog-api-key存取:embedContent/:batchEmbedContents——N 個 OpenAIinput項目會產生 N 個向量。
15. 逾時設定
Section titled “15. 逾時設定”所有值的單位皆為毫秒。統一於 src/shared/utils/runtimeTimeouts.ts 中解析。
REQUEST_TIMEOUT_MS(全域覆寫)├─→ FETCH_TIMEOUT_MS(上游提供者呼叫,預設值:600000)│ ├─→ FETCH_HEADERS_TIMEOUT_MS(繼承自 FETCH_TIMEOUT_MS)│ ├─→ FETCH_BODY_TIMEOUT_MS(繼承自 FETCH_TIMEOUT_MS)│ ├─→ TLS_CLIENT_TIMEOUT_MS(繼承自 FETCH_TIMEOUT_MS)│ │ └── TLS_FIRST_BYTE_WATCHDOG_MS(獨立,預設值:10000)│ ├── RESPONSES_FIRST_BYTE_TIMEOUT_MS(獨立,預設值:15000)│ ├── FETCH_CONNECT_TIMEOUT_MS(獨立,預設值:30000)│ └── FETCH_KEEPALIVE_TIMEOUT_MS(獨立,預設值:4000)├─→ STREAM_IDLE_TIMEOUT_MS(繼承自 REQUEST_TIMEOUT_MS,預設值:600000)├─→ STREAM_ACTIVE_TIMEOUT_MS(獨立,預設值:1260000;0 表示停用)├─→ STREAM_READINESS_TIMEOUT_MS(繼承自 REQUEST_TIMEOUT_MS,預設值:80000)├─→ STREAM_READINESS_MAX_TIMEOUT_MS(限制自適應就緒逾時的延長上限,預設值:180000)└─→ API_BRIDGE_PROXY_TIMEOUT_MS(繼承自 REQUEST_TIMEOUT_MS,預設值:30000) ├─→ API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS(衍生值,預設值:300000) ├── API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS(預設值:60000) ├── API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS(預設值:5000) └── API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS(預設值:0 = 停用)| 變數 | 預設值 | 說明 |
|---|---|---|
REQUEST_TIMEOUT_MS |
(未設定) | 全域捷徑——覆寫 FETCH_TIMEOUT_MS 與 STREAM_IDLE_TIMEOUT_MS 的預設值。 |
FETCH_TIMEOUT_MS |
600000 |
呼叫上游提供者時,HTTP 請求的總逾時時間。 |
STREAM_IDLE_TIMEOUT_MS |
600000 |
中止前,接收上游原始位元組之間允許的最長靜默時間。延伸思考模型很少會暫停超過 90 秒。 |
STREAM_ACTIVE_TIMEOUT_MS |
1260000 |
作用中 SSE 串流的最長總存續時間;不會因收到上游位元組而重設,且獨立於 REQUEST_TIMEOUT_MS。此值衍生自登錄檔中最大的各模型 timeoutMs(1200000,Codex),再加上 60000 的緩衝,因此允許使用完整時間預算的模型不會在回答途中遭終止。設為 0 可停用。 |
OMNIROUTE_SSE_COMMENTS |
(已停用) | OmniRoute 是否可傳送 SSE : 註解行(例如 : keepalive 心跳與 x-omniroute-* 中繼資料尾段)。預設停用(#10524),因為嚴格相容 OpenAI 的用戶端會對每個 SSE 行執行 JSON.parse,並在遇到 : 註解時當機;data: 心跳不受影響。設為 on/true/1/yes 可重新選擇啟用。由 open-sse/utils/sseHeartbeat.ts 使用。 |
STREAM_READINESS_TIMEOUT_MS |
80000 |
接收第一個非 ping SSE 事件的等待時間。設定 REQUEST_TIMEOUT_MS 時會繼承其值。 |
STREAM_READINESS_MAX_TIMEOUT_MS |
180000 |
對大型、大量使用工具或高推理量的串流請求,第一個事件的自適應就緒等待時間上限。 |
OMNIROUTE_AGENT_GOAL_POLICY_ENABLED |
true |
/goal 啟發式判斷的終止開關。設為 false/0/off 可完全停用偵測——就緒逾時與串流復原絕不會因請求本文/標頭而提高,從而降低由用戶端控制的逾時放大風險。 |
OMNIROUTE_AGENT_GOAL_READINESS_MAX_TIMEOUT_MS |
600000 |
對偵測到的 /goal 代理程式執行,或透過 x-omniroute-agent-goal 強制指定的請求,等待第一個事件的時間上限。 |
OMNIROUTE_AGENT_GOAL_STREAM_RECOVERY |
true |
對偵測到的 /goal 代理程式執行自動啟用早期串流復原。設為 false/0/off 可停用目標專用的選擇加入。這只能在操作員預設值的基礎上新增復原功能——絕不會覆寫明確的 STREAM_RECOVERY_ENABLED/資料庫設定退出選項。 |
OMNIROUTE_CODEX_DROP_NONSTANDARD_EVENTS |
true |
移除會導致 OpenAI SDK 的 responses.stream() 出現 502 的非標準 codex.* SSE 事件(例如 codex.rate_limits)。預設開啟(#11014)。設為 0/false/no/off 可轉送這些事件。 |
OMNIROUTE_CODEX_APPSERVER_WS |
(未設定) | 選擇啟用 Codex app-server 傳輸。此為本機 codex app-server sidecar 的 WebSocket 端點(ws:///wss://)。與權杖一起設定時,Codex 請求會改透過 JSON-RPC 路由至 sidecar,而非 HTTP Responses API。亦可透過 providerSpecificData.codexAppServerUrl 針對每個連線設定。由 open-sse/executors/codex/appServerConfig.ts 使用。 |
OMNIROUTE_CODEX_APPSERVER_WS_TOKEN |
(未設定) | 提供給 app-server 的內嵌能力/Bearer 權杖。每個連線的覆寫設定:providerSpecificData.codexAppServerToken。 |
OMNIROUTE_CODEX_APPSERVER_WS_TOKEN_FILE |
(未設定) | 存放 app-server 能力權杖之檔案的路徑(來自 codex app-server --ws-token-file)。在未設定 OMNIROUTE_CODEX_APPSERVER_WS_TOKEN 時使用。每個連線的覆寫設定:providerSpecificData.codexAppServerTokenFile。 |
OMNIROUTE_CODEX_APPSERVER_CWD |
/tmp |
app-server 回合執行所在的工作目錄。每個連線的覆寫設定:providerSpecificData.codexAppServerCwd。 |
OMNIROUTE_CODEX_APPSERVER_APPROVAL |
(未設定) | 傳遞給 app-server 回合的核准原則(例如 never、on-request)。每個連線的覆寫設定:providerSpecificData.codexAppServerApprovalPolicy。 |
OMNIROUTE_CODEX_APPSERVER_SANDBOX |
(未設定) | 傳遞給 app-server 回合的沙箱原則(例如 read-only、workspace-write、danger-full-access)。未設定時,執行器預設為 workspace-write(已強化;先前為 danger-full-access)。每個連線的覆寫設定:providerSpecificData.codexAppServerSandbox。 |
OMNIROUTE_CODEX_APPSERVER_AUTO_APPROVE |
false |
自動核准 app-server 自身的核准提示(在主機上執行命令/檔案/權限操作)。預設關閉——提示會遭自動拒絕;測試框架工具呼叫不受影響(它們透過獨立的 item/tool/call 直通路徑傳輸)。接受 true/1/yes。每個連線的覆寫設定:providerSpecificData.codexAppServerAutoApprove。 |
FETCH_HEADERS_TIMEOUT_MS |
= FETCH_TIMEOUT_MS |
接收回應標頭的等待時間。 |
OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS |
30000(30 秒) |
每次直接、不使用代理的嘗試,等待回應開始的最長時間(毫秒)。逾時後會使用全新的 socket 重試一次;設為 0 可停用此限制並保留先前的行為。 |
OMNIROUTE_DIRECT_RESPONSE_RETRY_TIMEOUT_MS |
600000(10 分鐘) |
在上述集區嘗試等待回應開始逾時後,使用全新 socket 進行 RETRY 嘗試的上限(毫秒)(#13703)。僅在呼叫端已附加自己的截止期限訊號時適用(依已解析的連線/模型/提供者/FETCH_TIMEOUT_MS 順序決定);該訊號才是真正的限制,並且在預期路徑中會先觸發,因此這是一項寬鬆的後備保障,而非固定上限——若沒有此設定,重試會沿用與集區嘗試相同的短暫 OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS 時間範圍,導致健康但 TTFB 較慢的推理模型收到 504。絕不允許低於上述固定下限;若呼叫端完全未提供截止期限訊號,重試會維持該固定下限不變。 |
FETCH_BODY_TIMEOUT_MS |
= FETCH_TIMEOUT_MS |
接收完整回應本文的時間。 |
FETCH_CONNECT_TIMEOUT_MS |
30000 |
TCP 連線建立逾時時間。 |
FETCH_KEEPALIVE_TIMEOUT_MS |
4000 |
Keep-alive socket 閒置逾時時間。 |
TLS_CLIENT_TIMEOUT_MS |
= FETCH_TIMEOUT_MS |
TLS 指紋代理(wreq-js)逾時時間。 |
TLS_FIRST_BYTE_WATCHDOG_MS |
10000 |
專門限制 wreq-js TLS 指紋傳輸之回應本文的首位元組等待時間;僅使用 TLS_CLIENT_TIMEOUT_MS 無法偵測停滯的本文,因為它會在標頭抵達後立即完成(#12656)。逾時會取消 wreq 讀取器,並退回使用直接/代理分派器;0 會停用監控器。 |
RESPONSES_FIRST_BYTE_TIMEOUT_MS |
15000 |
僅適用於 OpenCode 執行器,且僅在 OPENCODE_RESPONSES_STALL_ROTATION 功能旗標開啟時適用(預設關閉):限制串流 Responses 回覆在標頭抵達後等待首個本文位元組的時間(#13484)。Responses 串流會以 response.created 開始,因此超過此時間範圍仍無資料即視為停滯:系統會讓該帳戶進入冷卻狀態,並將請求輪替至下一個帳戶一次;若第二次停滯,則會快速失敗。即使旗標已開啟,0 仍會停用此保護機制。 |
OPENCODE_PARK_AND_RESUME |
false |
僅適用於 OpenCode 執行器:在重複出現暫時性 429(或存在新的集區壓力標記)後,以心跳訊號暫停請求,接著重播一個最多依序嘗試 3 個帳戶的受限階段,而非向整個帳戶群組展開請求(#13924)。預設關閉:每次出現 429 時,都會與之前完全相同地輪替至下一個帳戶。 |
OPENCODE_POOL_STRAIN_MARKER_PATH |
(未設定) | 僅適用於 OpenCode 執行器:覆寫暫停前所讀取之集區壓力標記的路徑({since, reason, ttl_s},預設為 /tmp/opencode-pool-strain.json,#13924)。新的標記會直接暫停而不重新計數;若標記不存在或已過期,則退回使用突發計數器。 |
API_BRIDGE_PROXY_TIMEOUT_MS |
30000 |
/v1 橋接請求的代理躍點逾時時間。 |
FIRECRAWL_BASE_URL |
https://api.firecrawl.dev |
將 Firecrawl 網頁擷取執行器指向自行託管的執行個體(非雲端環境可不提供 API 金鑰)。 |
FIRECRAWL_TIMEOUT_MS |
30000 |
Firecrawl 網頁擷取執行器的單一請求逾時時間。 |
API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS |
300000 |
橋接器的整體伺服器請求逾時時間。 |
API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS |
60000 |
透過橋接器傳送回應標頭的時間。 |
API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS |
5000 |
橋接器 keep-alive 閒置逾時時間。 |
API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS |
0 |
原始 socket 逾時時間(0 = 停用)。 |
SHUTDOWN_TIMEOUT_MS |
30000 |
收到 SIGTERM/SIGINT 後強制結束前的寬限期。 |
OMNIROUTE_DEFAULT_FETCH_TIMEOUT_MS |
120000 |
當 FETCH_TIMEOUT_MS 未設定時,由 src/shared/utils/fetchTimeout.ts 使用的備用值。 |
OMNIROUTE_PROVIDER_PROBE_TIMEOUT_MS |
8000 |
src/shared/network/safeOutboundFetch.ts 中 validationRead 與 modelsProbe 預設組態的逾時時間(毫秒)。若端點速度較慢(Cerebras、Cloudflare AI、Groq),可提高此值,以避免儀表板中的狀態在作用中/錯誤之間反覆變動。若值無效(<1000)或不是數字,則退回使用 8000 毫秒。 |
OMNIROUTE_RELAY_FETCH_TIMEOUT_MS |
25000 |
open-sse/utils/proxyFetch.ts 中的中繼專用擷取逾時 (#9158)。無回應的中繼必須在用戶端/代理程式逾時(約 30 秒)前失敗,讓呼叫端看到中繼專用的失敗,而非一般上游逾時。上限為 29000,確保它一律先觸發。 |
OMNIROUTE_RETRY_BACKOFF_MS |
10 |
open-sse/utils/proxyFetch.ts 中直接/中繼/代理「失敗後重試一次」路徑共用的重試退避時間 (#9158)。0 = 立即重試。 |
OMNIROUTE_CLAUDE_TLS_TIMEOUT_MS |
60000 |
原生 wreq-js 請求逾時(claudeTlsClient.ts)。 |
OMNIROUTE_CLAUDE_TLS_GRACE_MS |
10000 |
加在原生逾時之上的絕對 JS 硬性截止寬限時間。 |
OMNIROUTE_PPLX_TLS_TIMEOUT_MS |
30000 |
原生 wreq-js 請求逾時(perplexityTlsClient.ts)。 |
OMNIROUTE_PPLX_TLS_GRACE_MS |
10000 |
加在原生逾時之上的絕對 JS 硬性截止寬限時間。 |
OMNIROUTE_PPLX_SEARCH_HINT |
0(關閉) |
將「你有內建的網頁搜尋功能。請直接使用搜尋結果回答問題。」附加至呼叫端的系統訊息(perplexity-web/protocol.ts)。預設關閉——Perplexity 無論如何都會搜尋,而且這句話會作為元評論洩漏至程式設計用戶端的回覆中。設為 1/true/yes/on 可恢復。 |
OMNIROUTE_GROK_TLS_TIMEOUT_MS |
60000 |
原生 wreq-js 請求逾時(grokTlsClient.ts)。 |
OMNIROUTE_GROK_TLS_GRACE_MS |
10000 |
加在原生逾時之上的絕對 JS 硬性截止寬限時間。 |
OMNIROUTE_NOTION_TLS_TIMEOUT_MS |
30000 |
原生 wreq-js 請求逾時(notionTlsClient.ts);notion-web 會針對長時間生成,將每個請求的逾時提高至 180000。 |
OMNIROUTE_NOTION_TLS_GRACE_MS |
10000 |
加在原生逾時之上的絕對 JS 硬性截止寬限時間。 |
OMNIROUTE_BROWSER_POOL |
on |
供瀏覽器支援之網頁 Cookie 聊天使用的共用 Playwright 瀏覽器集區(browserPool.ts);設為 off 可停用。 |
OBSCURA_BIN |
auto-detect |
瀏覽器集區與 Cloudflare Playground 執行器所使用之主要引擎 obscura 二進位檔的路徑(open-sse/services/obscura.ts);未設定時會從系統 PATH 自動偵測。 |
OBSCURA_CDP_ENDPOINT |
(未設定) | 指向已在執行中的 Obscura(http://host:port),而非產生新程序;此模組不擁有該程序(open-sse/services/obscura.ts)。 |
OBSCURA_PORT |
隨機可用連接埠 |
產生之 obscura serve 的明確連接埠;未設定時會自動選擇可用連接埠(open-sse/services/obscura.ts)。 |
WEB_COOKIE_USE_BROWSER |
0 |
選擇讓網頁 Cookie 聊天請求使用瀏覽器支援的路徑(browserBackedChat.ts);設為 1 可啟用。 |
KIMI_WEB_BASE_URL |
https://www.kimi.ai |
Kimi Web(國際版 kimi.ai Connect-RPC)執行器的基底 URL(kimi-web.ts);僅針對鏡像/代理端點進行覆寫。 |
KIMI_WEB_CHAT_URL |
<KIMI_WEB_BASE_URL>/apiv2/kimi.gateway.chat.v1.ChatService/Chat |
Kimi Web 執行器的完整聊天端點(kimi-web.ts)。 |
OMNIROUTE_LOGIN_BROWSER_PATH |
(自動偵測) | Adobe Firefly 互動式瀏覽器登入所用之系統 Chrome/Edge 可執行檔的路徑(adobeFireflyBrowserLogin.ts);會覆寫各作業系統的自動偵測。 |
OMNIROUTE_STANDALONE_DIR |
.build/ 獨立輸出 | 建置後共置步驟所使用之獨立輸出目錄的建置階段覆寫(scripts/build/colocate-standalone.mjs);屬於建置工具設定,而非執行階段設定。 |
組合目標嘗試會繼承解析後的上游請求逾時(FETCH_TIMEOUT_MS,或在其提供擷取預設值時使用
REQUEST_TIMEOUT_MS)。只有在需要加快組合備援速度時,才應在組合、
組合預設值或提供者覆寫中設定 targetTimeoutMs;高於目前上游逾時的值
將以該上游逾時為上限。
comboTimeoutMs 是涵蓋各個容錯移轉目標、針對整個組合的獨立牆鐘時間預算。
將其保持未設定或設為 0,即可維持無限次反覆嘗試(comboPredicates.ts
中硬編碼的 10 分鐘防卡死機制仍會套用)。正值會取代組合的該項
安全機制。請讓 comboTimeoutMs 長於 targetTimeoutMs,以便第一個目標回應緩慢後,
容錯移轉仍有時間執行。
提供者層級的斷路器調校。預設值反映自 v3.6 起用於 500 個以上連線的縮放值。
| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
OMNIROUTE_CIRCUIT_BREAKER_OAUTH_THRESHOLD |
8 |
open-sse/config/constants.ts |
OAuth 提供者在斷路器觸發前的連續失敗次數閾值。 |
OMNIROUTE_CIRCUIT_BREAKER_OAUTH_RESET_MS |
60000 |
open-sse/config/constants.ts |
OAuth 提供者斷路器的重設時間窗(毫秒)。 |
OMNIROUTE_CIRCUIT_BREAKER_API_KEY_THRESHOLD |
12 |
open-sse/config/constants.ts |
API 金鑰提供者的連續失敗次數閾值。 |
OMNIROUTE_CIRCUIT_BREAKER_API_KEY_RESET_MS |
30000 |
open-sse/config/constants.ts |
API 金鑰提供者斷路器的重設時間窗(毫秒)。 |
OMNIROUTE_CIRCUIT_BREAKER_LOCAL_THRESHOLD |
2 |
open-sse/config/constants.ts |
本機提供者(Ollama、LM Studio 等)的連續失敗次數閾值。 |
OMNIROUTE_CIRCUIT_BREAKER_LOCAL_RESET_MS |
15000 |
open-sse/config/constants.ts |
本機提供者斷路器的重設時間窗(毫秒)。 |
OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_THRESHOLD |
10 |
open-sse/config/constants.ts |
提供者層級斷路器:整個 OAuth 提供者進入冷卻狀態前,在時間窗內允許的失敗次數。 |
OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_WINDOW_MS |
900000 |
open-sse/config/constants.ts |
提供者層級斷路器:OAuth 提供者的滾動失敗計數時間窗(毫秒)。 |
OMNIROUTE_PROVIDER_BREAKER_OAUTH_COOLDOWN_MS |
300000 |
open-sse/config/constants.ts |
提供者層級斷路器:OAuth 提供者達到閾值後的冷卻時間(毫秒)。 |
OMNIROUTE_PROVIDER_BREAKER_OAUTH_DEGRADATION_THRESHOLD |
5 |
open-sse/config/constants.ts |
OAuth 提供者達到此失敗次數時進入 DEGRADED 狀態。 |
OMNIROUTE_PROVIDER_BREAKER_OAUTH_MAX_BACKOFF_MULTIPLIER |
8 |
open-sse/config/constants.ts |
OAuth 提供者的最大 resetTimeout 遞增倍數。 |
OMNIROUTE_PROVIDER_BREAKER_OAUTH_BACKOFF_ESCALATION_COUNT |
2 |
open-sse/config/constants.ts |
OAuth 提供者經過此數量的開啟週期後提高退避層級。 |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_THRESHOLD |
15 |
open-sse/config/constants.ts |
提供者層級斷路器:整個 API 金鑰提供者進入冷卻狀態前,在時間窗內允許的失敗次數。 |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_WINDOW_MS |
1800000 |
open-sse/config/constants.ts |
提供者層級斷路器:API 金鑰提供者的滾動失敗計數時間窗(毫秒)。 |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_COOLDOWN_MS |
600000 |
open-sse/config/constants.ts |
提供者層級斷路器:API 金鑰提供者達到閾值後的冷卻時間(毫秒)。 |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_DEGRADATION_THRESHOLD |
7 |
open-sse/config/constants.ts |
API 金鑰提供者達到此失敗次數時進入 DEGRADED 狀態。 |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_MAX_BACKOFF_MULTIPLIER |
4 |
open-sse/config/constants.ts |
API 金鑰提供者的最大 resetTimeout 遞增倍數。 |
OMNIROUTE_PROVIDER_BREAKER_API_KEY_BACKOFF_ESCALATION_COUNT |
3 |
open-sse/config/constants.ts |
API 金鑰提供者經過此數量的開啟週期後提高退避層級。 |
OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_THRESHOLD |
2 |
open-sse/config/constants.ts |
提供者層級斷路器:整個本機提供者進入冷卻狀態前允許的失敗次數。 |
OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_WINDOW_MS |
300000 |
open-sse/config/constants.ts |
提供者層級斷路器:本機提供者的滾動失敗計數時間窗(毫秒)。 |
OMNIROUTE_PROVIDER_BREAKER_LOCAL_COOLDOWN_MS |
60000 |
open-sse/config/constants.ts |
提供者層級斷路器:本機提供者達到閾值後的冷卻時間(毫秒)。 |
PIN_DROP_BACKOFF_LEVEL |
2 |
open-sse/services/combo.ts |
達到此退避深度時,內容快取釘選項目的提供者會被視為持續處於不健康狀態,並移除釘選以進行容錯移轉。 |
PIN_DROP_GRACE_MS |
20000 |
open-sse/services/combo.ts |
防止狀態反覆切換的時間窗(毫秒);在移除內容快取釘選前,允許短暫的暫時性冷卻。 |
| 情境 | 設定 |
|---|---|
| 長時間執行的程式碼產生 | REQUEST_TIMEOUT_MS=900000(15 分鐘) |
| 限制串流總生命週期 | STREAM_ACTIVE_TIMEOUT_MS=1260000(21 分鐘) |
| 正式環境 API 快速失敗 | API_BRIDGE_PROXY_TIMEOUT_MS=10000 |
| 延伸思考模型 | STREAM_IDLE_TIMEOUT_MS=300000(區塊之間為 5 分鐘) |
16. 日誌記錄
Section titled “16. 日誌記錄”日誌系統會同時寫入 stdout 與輪替日誌檔案。所有設定皆由 src/lib/logEnv.ts 讀取。
| 變數 | 預設值 | 說明 |
|---|---|---|
APP_LOG_LEVEL |
info |
最低日誌層級:debug、info、warn、error。 |
APP_LOG_FORMAT |
text |
輸出格式:text(人類可讀)或 json(結構化)。 |
APP_LOG_TO_FILE |
true |
除了 stdout 之外,也將日誌寫入檔案。 |
APP_LOG_FILE_PATH |
logs/application/app.log |
日誌檔案路徑(相對於專案根目錄或 DATA_DIR)。 |
APP_LOG_MAX_FILE_SIZE |
50M |
輪替前的最大檔案大小。接受:50M、1G、512K 或純位元組數。 |
APP_LOG_RETENTION_DAYS |
7 |
保留已輪替應用程式日誌檔案的天數。 |
APP_LOG_MAX_FILES |
20 |
已輪替日誌檔案的備份數上限。 |
CALL_LOG_RETENTION_DAYS |
7 |
在資料庫中保留請求/呼叫日誌項目的天數。 |
CALL_LOG_MAX_ENTRIES |
10000 |
記憶體內緩衝區中的呼叫日誌項目數上限。 |
CALL_LOGS_TABLE_MAX_ROWS |
100000 |
清理前 call_logs SQLite 資料表中的最大資料列數。 |
ENABLE_REQUEST_LOGS |
(未設定) | 強制開啟或關閉詳細請求日誌記錄,覆寫儀表板設定。 |
MAX_PENDING_REQUEST_AGE_MS |
3600000(1 小時) |
在從記憶體清理前,孤立的作用中請求日誌項目可保留的最長時間。 |
CALL_LOG_PIPELINE_CAPTURE_STREAM_CHUNKS |
false |
當 call_log_pipeline_enabled=true 時,將串流區塊儲存在管線成品中。選擇啟用(true)— 預設關閉以節省磁碟空間。 |
CALL_LOG_PIPELINE_MAX_SIZE_KB |
512 |
當 call_log_pipeline_enabled=true 時,管線呼叫日誌成品的大小上限(KB)。 |
PROXY_LOGS_TABLE_MAX_ROWS |
100000 |
清理前 proxy_logs SQLite 資料表中的最大資料列數。 |
PROXY_LOG_INCLUDE_IPS |
false |
在 [ProxyEgress] 主控台日誌中包含用戶端/出口 IP 與帳戶前綴。儀表板/資料庫中的 Proxy 日誌記錄會保留完整詳細資料。 |
APP_LOG_ROTATION_CHECK_INTERVAL_MS |
60000(1 分鐘) |
src/lib/logRotation.ts 重新檢查作用中日誌檔案大小的頻率。 |
CHAT_LOG_TEXT_LIMIT |
65536 |
聊天日誌成品中保留的字串長度上限(預設為 64 KB)。 |
CHAT_LOG_ARRAY_TAIL_ITEMS |
128 |
截斷聊天日誌承載資料時,從陣列尾端保留的項目數。 |
CHAT_LOG_MAX_DEPTH |
6 |
聊天日誌承載資料遭截斷前允許的最大巢狀深度。 |
CHAT_LOG_MAX_OBJECT_KEYS |
80 |
聊天日誌承載資料中保留的物件鍵數上限(0 = 無限制)。 |
CHAT_LOG_MAX_BODY_KB |
1024 |
整個請求/回應本文在由簡要摘要取代完整複本前的大小上限(KB)。如果長篇代理式對話在儀表板中顯示預留位置而非實際訊息,請提高此值。 |
CHAT_DEBUG_FILE |
false |
設為 true 時,serializeArtifactForStorage 會略過以大小為依據的截斷。僅供偵錯使用。 |
17. 記憶體最佳化
Section titled “17. 記憶體最佳化”| 變數 | 預設值 | 說明 |
|---|---|---|
OMNIROUTE_MEMORY_MB |
自動(實體機);Docker 映像檔中為 1024 |
建議的 Docker/獨立執行 V8 堆積限制(MB)。未設定時,會動態校準(約為系統 RAM 的 35%,限制於 [512, 4096] 範圍內);只有在無法讀取總記憶體時,才會以 512 作為下限。在 run-standalone.mjs(Docker CMD)上,明確指定的值會以 --max-old-space-size 附加,並優先於衝突的 NODE_OPTIONS 堆積旗標(V8 最後旗標優先)。omniroute serve 仍會優先採用現有的 NODE_OPTIONS 堆積設定(#5238)。請勿將兩者設為不同數值——程序會記錄一則警告,指出這兩個值及最終採用的值。**官方 Docker 映像檔一律設為 1024,因此不會在其中執行校準。**程式設計代理程式的 /v1/responses 需要 8192–12288,並須預留 cgroup 額外空間——請參閱 Docker 指南 — 執行階段 RAM。 |
PROMPT_CACHE_MAX_SIZE |
50 |
快取的系統提示詞項目數上限。 |
PROMPT_CACHE_MAX_BYTES |
2097152(2 MB) |
提示詞快取總大小上限。 |
PROMPT_CACHE_TTL_MS |
300000(5 分鐘) |
提示詞快取項目的 TTL。 |
SEMANTIC_CACHE_MAX_SIZE |
100 |
快取的 temperature=0 回應數上限。 |
SEMANTIC_CACHE_MAX_BYTES |
4194304(4 MB) |
語意快取總大小上限。 |
SEMANTIC_CACHE_TTL_MS |
1800000(30 分鐘) |
語意快取項目的 TTL。 |
OMNIROUTE_CORPUS_CACHE_SIZE |
5 |
可同時在記憶體中保留即時索引的本機語料庫根目錄數量(src/lib/localCorpus/configured.ts)。LRU:達到上限時,會逐出最近最少使用之根目錄的索引,並在下次查詢該根目錄時重建。最小值限制為 1;非數值會回退至預設值。 |
STREAM_HISTORY_MAX |
50 |
儀表板即時檢視緩衝區中的近期串流事件數上限。 |
CONTEXT_LENGTH_DEFAULT |
128000 |
未明確設定組態之模型的全域備援最大上下文長度。 |
USAGE_TOKEN_BUFFER |
100 |
追蹤用量配額時預留的額外 token 空間。 |
| 變數 | 預設值 | 說明 |
|---|---|---|
OMNIROUTE_RTK_TRUST_PROJECT_FILTERS |
未設定 | 在沒有 .rtk/trust.json 雜湊的情況下信任專案的 .rtk/filters.json。僅限在受控的本機開發環境中使用。 |
記憶體引擎(計畫 21)
Section titled “記憶體引擎(計畫 21)”記憶體、技能與 token 重新整理的事件迴圈成本(#10349)
Section titled “記憶體、技能與 token 重新整理的事件迴圈成本(#10349)”OmniRoute 是一個單一 Node 程序。記憶體擷取/檢索、技能注入及提供者 token 重新整理,會與 GET /healthz 和儀表板在同一個事件迴圈上執行。它們並非工作執行緒。
| 工作 | 程式碼 | 預設值 | 操作者控制方式 |
|---|---|---|---|
| 記憶擷取/檢索 | src/lib/memory/ |
儀表板 memoryEnabled(預設開啟) | 關閉 設定 → 記憶。除了在設定中停用此功能外,沒有獨立的環境變數終止開關。 |
| 技能注入 | src/lib/skills/injection.ts |
儀表板 skillsEnabled(預設開啟) | 關閉 設定 → 記憶/技能(skillsEnabled)。下方的沙箱調整選項僅會在注入已開啟後限制執行。 |
| 權杖重新整理 | src/sse/services/tokenRefresh.ts |
對已連線的 OAuth/Web 提供者開啟 | 中斷提供者連線,或讓權杖保持有效;目前沒有 TOKEN_REFRESH=0 環境變數。 |
如果 /healthz 在閒置主機上反應緩慢,請先停用記憶與技能,然後檢查目錄/壓縮負載(#10303、#9685)。這些功能會在 await 點讓出執行權,但仍會競爭同一個執行緒。
持久記憶子系統(src/lib/memory/)的嵌入層、向量儲存區與重新排序調整選項。
| 變數 | 預設值 | 說明 |
|---|---|---|
MEMORY_EMBEDDING_CACHE_TTL_MS |
300000(5 分鐘) |
記憶體內嵌入快取的 TTL(依來源/模型/維度簽章區分)。 |
MEMORY_EMBEDDING_CACHE_MAX |
1000 |
嵌入快取中保留的 LRU 項目上限。 |
MEMORY_TRANSFORMERS_MODEL |
Xenova/all-MiniLM-L6-v2 |
選用的 @huggingface/transformers 本機 MiniLM 管線所使用的 HF 儲存庫 ID(約 23 MB int8、約 400 MB RAM)。 |
MEMORY_STATIC_MODEL |
minishlab/potion-base-8M |
靜態 potion/Model2Vec 查閱表嵌入器所使用的 HF 儲存庫 ID。會延遲下載至快取目錄。 |
MEMORY_STATIC_CACHE_DIR |
<DATA_DIR>/embeddings |
用於快取靜態 potion 模型檔案的目錄。未設定時,預設位於 DATA_DIR 之下。 |
HF_HUB_ENDPOINT |
https://huggingface.co |
覆寫 staticPotion.ts 使用的 Hugging Face Hub 基底 URL(例如氣隙隔離環境所用的鏡像端點)。 |
MEMORY_VEC_TOP_K |
20 |
src/lib/memory/vectorStore.ts 內 sqlite-vec 暴力向量搜尋使用的預設 top-K。 |
MEMORY_RRF_K |
60 |
混合 FTS5 + 向量檢索(sqlite-vec 配方)的倒數排名融合常數 k。 |
VECTOR_STORE_DISABLE_VEC |
false |
getVectorStore()(src/lib/memory/vectorStore.ts)中的測試/診斷介面:設為 true 時,會強制向量儲存區為 null(模擬沒有 sqlite-vec 的雲端/WASM 環境),使記憶檢索降級為 FTS5 關鍵字搜尋。在生產環境中請勿設定。 |
NOTION_API_KEY |
(未設定) | Notion 後端的 API 金鑰(由 genericBackend.ts 的已知後端預設集使用)。 |
NOTION_API_URL |
https://api.notion.com/v1 |
Notion API 的基底 URL(可針對自行託管的 Notion 替代方案覆寫)。 |
OBSIDIAN_API_KEY |
(未設定) | Obsidian Vault 後端的 API 金鑰(由 genericBackend.ts 的已知後端預設集使用)。 |
OBSIDIAN_API_URL |
http://localhost:27123 |
Obsidian Vault API 的基底 URL(可針對遠端保存庫覆寫)。 |
MEMORY_TYPED_DECAY_ENABLED |
false |
TV6 類型化記憶衰減的主開關。選用(預設關閉) — 清理作業會刪除已衰減的記憶。關閉時,access_count/last_accessed_at 純粹是遙測資料,絕不會刪除任何內容。 |
MEMORY_TYPED_DECAY_EPISODIC_DAYS |
30 |
未使用的 episodic 記憶在衰減前的 TTL(天數)。0 也會使情節記憶免於衰減。持久類型(factual/procedural/semantic)一律免於衰減。衰減計時會以 last_accessed_at 為基準重新計算。 |
MEMORY_TYPED_DECAY_ACCESS_IMMUNITY |
3 |
注入次數 >= 此值的記憶,無論類型為何都會免於衰減。0 會停用存取免疫。 |
MEMORY_TYPED_DECAY_SWEEP_INTERVAL |
0(已停用) |
src/lib/memory/typedDecay.ts 中選用的定期衰減清理間隔(秒)。0/未設定 = 不執行定期清理。需要雙重選用:還必須設定 MEMORY_TYPED_DECAY_ENABLED=true。 |
OMNIROUTE_STRICT_SYSTEM_PROVIDERS |
(未設定) | 以逗號分隔的提供者 ID(不區分大小寫),這些提供者僅在索引 0 接受 system 訊息(src/lib/memory/injection.ts)。對這些提供者而言,在多輪對話中,快取安全的陣列中段記憶插入並不安全,因此記憶會改為合併/前置至開頭的系統訊息中。預設僅包含 xiaomi-mimo/mimo;可針對自行託管且相容於 OpenAI 的端點(例如 Qwen3.5+/3.6)加以擴充,這些端點的聊天範本會強制實施相同的單一開頭系統訊息限制。 |
低 RAM Docker 範例
Section titled “低 RAM Docker 範例”128 僅適用於儀表板。編碼代理在此堆積空間下執行長時間的 /v1/responses 時會發生 FATAL ERROR。請勿將此範例用作 Claude/Codex/Grok 閘道。
OMNIROUTE_MEMORY_MB=128PROMPT_CACHE_MAX_SIZE=20PROMPT_CACHE_MAX_BYTES=524288 # 512 KBSEMANTIC_CACHE_MAX_SIZE=25SEMANTIC_CACHE_MAX_BYTES=1048576 # 1 MBSTREAM_HISTORY_MAX=1018. 定價同步
Section titled “18. 定價同步”自動從外部來源同步模型定價資料。
| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
PRICING_SYNC_ENABLED |
false |
src/lib/pricingSync.ts |
選擇啟用定期定價同步。 |
PRICING_SYNC_INTERVAL |
86400 (24h) |
src/lib/pricingSync.ts |
同步間隔(秒)。 |
PRICING_SYNC_SOURCES |
litellm |
src/lib/pricingSync.ts |
以逗號分隔的資料來源。 |
Arena ELO 同步
Section titled “Arena ELO 同步”| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
ARENA_ELO_SYNC_ENABLED |
true |
src/shared/constants/featureFlagDefinitions.ts |
定期同步 Arena AI 排行榜 ELO,可從儀表板的功能旗標進行設定,或設為 false 以停用。 |
MODELS_CATALOG_PREFIX_MODE |
dual |
src/shared/constants/featureFlagDefinitions.ts, src/app/api/v1/models/catalog.ts |
GET /v1/models 中模型 ID 所使用的前綴形式。dual 會為每個模型同時公布簡短別名前綴與標準提供者前綴(向後相容——目錄大小約增加一倍);alias 每個模型僅輸出一個 ID;canonical 僅輸出完整的提供者 ID 前綴(別名已是標準 ID 的提供者會保留其單一項目)。用戶端可透過 ?prefix=alias 針對每次請求覆寫此設定。請參閱 API_REFERENCE。 |
ARENA_ELO_SYNC_INTERVAL |
86400 (24h) |
src/lib/arenaEloSync.ts |
同步間隔(秒)。 |
PromptQL Playground 提供者(非官方/實驗性)
Section titled “PromptQL Playground 提供者(非官方/實驗性)”用於 prompt.ql.app 的逆向工程 GraphQL 工作階段橋接器(src/shared/constants/providers/web-cookie.ts)。所有設定皆為選用——預設值指向公開的 Playground 端點;僅在使用自行託管或替代的 PromptQL 部署時才需覆寫。
| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
PROMPTQL_GRAPHQL_ENDPOINT |
https://data.prompt.ql.app/promptql/playground-v2-hge/v1/graphql |
open-sse/executors/promptql.ts |
用於聊天/工作階段操作的 GraphQL 端點。 |
PROMPTQL_CREDITS_ENDPOINT |
https://data.pro.ql.app/v1/graphql |
open-sse/executors/promptql.ts, open-sse/services/usage/promptql.ts |
用於查詢點數餘額/用量的 GraphQL 端點。 |
PROMPTQL_TOKEN_REFRESH_URL |
https://auth.pro.ql.app/ddn/project/token |
open-sse/executors/promptql.ts |
用於盡力重新整理權杖的端點。 |
PROMPTQL_POLL_TIMEOUT_MS |
180000 |
open-sse/executors/promptql.ts |
在逾時前輪詢 thread_events 的最長時間(毫秒)。 |
HyperAgent 網頁提供者(非官方/實驗性)
Section titled “HyperAgent 網頁提供者(非官方/實驗性)”為 hyperagent.com 逆向工程的工作階段橋接器(src/shared/constants/providers/web-cookie.ts)。選用功能——預設指向公開的計費/用量端點;僅在使用自行託管/替代的 HyperAgent 部署時才需覆寫。
| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
HYPERAGENT_USAGE_URL |
https://hyperagent.com/api/settings/billing/usage |
open-sse/services/usage/hyperagent.ts |
用於擷取計費/用量點數區塊的端點。 |
Kilo Code 用量配額
Section titled “Kilo Code 用量配額”查詢 Kilo Code 提供者的個人 USD 餘額與 Kilo Pass 用量。選用功能——預設指向公開的 Kilo API;僅在使用中繼服務/測試固定資料時才需覆寫。驗證會使用連線現有的 OAuth 存取權杖。
| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
KILO_API_URL |
https://api.kilo.ai |
open-sse/services/usage/kilocode.ts |
用於擷取個人 Kilo Code 餘額與 Kilo Pass 用量的基底 URL。 |
Adobe Firefly 網頁提供者(非官方/實驗性)
Section titled “Adobe Firefly 網頁提供者(非官方/實驗性)”Adobe Firefly 網頁提供者的瀏覽器驅動工作階段重新整理功能
(open-sse/services/adobeFireflyBrowserLogin.ts、open-sse/services/adobeFireflySession.ts、
open-sse/services/adobeFireflyClient.ts)。選用功能——所有預設值均針對一般
桌面安裝進行調整。
已於 #9255 中移除。 舊版附加至 CDP 的 Chrome 執行階段(adobeFireflyChromeRuntime.ts)已 由 Playwright 瀏覽器登入服務取代,相關設定選項已不復存在。 ADOBE_FIREFLY_CHROME_ CDP_PORT / VISIBLE / HEADED / PING / FORCE_RESTART 變數,以及 ADOBE_FIREFLY_LOGIN_WAIT_MS 和 ADOBE_FIREFLY_FORTER_WAIT_MS,在 程式碼庫中均未被讀取——設定這些變數不會產生任何效果。
| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
ADOBE_FIREFLY_CHROME_HEADLESS |
0 |
open-sse/services/adobeFireflyBrowserLogin.ts |
設為 1 可使用真正的無頭 Chrome(已知無法用於生成;僅供偵錯)。 |
ADOBE_FIREFLY_BROWSER_REFRESH |
1 |
open-sse/services/adobeFireflySession.ts |
選擇啟用/停用主動瀏覽器預熱。0 會停用主動預熱(批次中途的 408 復原仍會套用)。 |
ADOBE_FIREFLY_SESSION_DISK |
1 |
open-sse/services/adobeFireflySession.ts |
設為 0 可停用將 Adobe Firefly 工作階段持久儲存至磁碟。 |
ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS |
(未設定) | open-sse/services/adobeFireflySession.ts |
連續提交之間強制套用的最短間隔(毫秒),會覆寫內建預設值。 |
ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS |
(未設定) | open-sse/services/adobeFireflySession.ts |
成功完成批次後新增的額外間隔(毫秒),會覆寫內建預設值。 |
ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS |
(未設定) | open-sse/services/adobeFireflyClient.ts |
提交生成請求前的基礎延遲(毫秒),會覆寫內建預設值。 |
19. 模型同步(開發)
Section titled “19. 模型同步(開發)”| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
MODELS_DEV_SYNC_ENABLED |
(未設定) | src/lib/modelsDevSync.ts |
models.dev 定價同步的強制覆寫。未設定 = 遵循「設定 > AI」中的設定(modelsDevSyncEnabled)。0/false/off/no 優先於資料庫設定,並略過定期同步及 getModelsDevPricing() SQL/JSON 掃描(當儀表板因同一事件迴圈而卡死時用於復原)。1/true/on/yes 會強制啟用同步。儲存/清除定價時仍會呼叫 backupDbFile("pre-write");在 60 分鐘節流期間或設定 DISABLE_SQLITE_AUTO_BACKUP 時,此呼叫不會執行任何操作。 |
MODELS_DEV_SYNC_INTERVAL |
86400(24h) |
src/lib/modelsDevSync.ts |
開發期間的模型目錄同步間隔(秒)。 |
CONTEXT_WINDOW_RECONCILE_INTERVAL |
86400(24h) |
src/lib/contextWindowResolver.ts |
自我修正的上下文視窗協調器(5004)的執行間隔(秒):當提供者透過 /models 探索宣告的視窗與目錄不一致時,會將其固定為 auto:discovery 覆寫。設為 0 可停用。重複使用已同步的資料(不進行新的擷取);絕不覆寫 manual 覆寫。 |
20. 提供者特定設定
Section titled “20. 提供者特定設定”| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
OPENROUTER_CATALOG_TTL_MS |
86400000(24 小時) |
src/lib/catalog/openrouterCatalog.ts |
OpenRouter 模型目錄快取的 TTL。 |
MODEL_CATALOG_INCLUDE_NAMES |
true |
src/shared/constants/featureFlagDefinitions.ts |
在 /v1/models 回應中包含適合顯示的 name 欄位。若用戶端只接受 ID,請停用此選項。 |
CATALOG_BUILD_TIMEOUT_MS |
8000(8 秒) |
src/app/api/v1/models/catalogCache.ts |
合併執行的 GET /v1/models 目錄重建在冷路徑上的等待時間上限(#12627)。逾時時,若有最近一次的有效結果,則傳回該結果及 200 狀態碼。 |
OMNIROUTE_SYNCED_CATALOG_STALE_AFTER_MS |
2592000000(30 天) |
src/lib/db/models/activeSyncedCatalog.ts |
連線的已同步模型清單在經過此時間後,將不再作為路由的權威依據,並採取失敗開放策略改用登錄檔(#12849)。從未加上時間戳記的資料列視為過期。 |
NANOBANANA_POLL_TIMEOUT_MS |
120000 |
open-sse/handlers/imageGeneration.ts |
NanoBanana 圖像生成工作的最長等待時間。 |
NANOBANANA_POLL_INTERVAL_MS |
2500 |
open-sse/handlers/imageGeneration.ts |
NanoBanana 工作的輪詢頻率。 |
ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS |
8000 |
open-sse/services/adobeFireflyUpscale.ts |
Adobe Firefly 放大提交重試之指數退避的基礎延遲。 |
AWS_REGION |
(未設定) | src/lib/providers/validation.ts, open-sse/handlers/audioSpeech.ts |
用於建構 AWS Bedrock 端點(Kiro、音訊)的區域。 |
AWS_DEFAULT_REGION |
(未設定) | src/lib/providers/validation.ts, open-sse/handlers/audioSpeech.ts |
未設定 AWS_REGION 時的備援值。 |
CLOUDFLARE_ACCOUNT_ID |
(未設定) | open-sse/executors/cloudflare-ai.ts |
Cloudflare Workers AI 的帳戶 ID。 |
CLOUDFLARE_PLAYGROUND_CHROME_PATH |
(未設定) | open-sse/executors/cloudflare-playground.ts |
Cloudflare AI Playground 執行器所使用的完整桌面版 Chrome 二進位檔路徑;當無頭模式指紋檢查封鎖 Playwright 隨附的 Chromium 時使用。 |
CLOUDFLARE_API_BASE |
https://api.cloudflare.com/client/v4 |
src/app/api/settings/proxy/cloudflare-deploy/route.ts |
覆寫代理集區 Workers 中繼部署器所使用的 Cloudflare REST API 基底位址(#4640 / 9router#1360)。 |
NEXT_PUBLIC_CLOUDFLARE_RELAY_DEFAULT_PROJECT |
omniroute-relay |
src/app/(dashboard)/dashboard/settings/components/proxy/CloudflareRelayModal.tsx |
代理集區「部署中繼」對話框中建議的預設 Worker 專案名稱。 |
NEXT_PUBLIC_CLOUDFLARE_RELAY_ENABLED |
true |
src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx |
設為 false 可在代理集區分頁中隱藏 Cloudflare Workers 中繼選項。 |
CLOUDFLARED_BIN |
自動偵測 | src/lib/cloudflaredTunnel.ts |
cloudflared 二進位檔的自訂路徑。 |
CLOUDFLARED_PROTOCOL |
http2 |
src/lib/cloudflaredTunnel.ts |
通道傳輸協定:http2(預設)、quic 或 auto。 |
CLOUDFLARED_CONFIG |
(未設定) | src/lib/cloudflaredTunnel.ts |
本機管理的 cloudflared config.yml 路徑(含有 tunnel:、credentials-file:、ingress:)。設定後,OmniRoute 會執行 tunnel --config <path> run(具名通道),而非暫時性的快速通道。 |
CLOUDFLARED_HOSTNAME |
(取自設定的 ingress) | src/lib/cloudflaredTunnel.ts |
覆寫具名通道的公用主機名稱(例如 ai.example.com),並回報為 publicUrl/apiUrl。若未設定,則從設定中的第一個 ingress 主機名稱讀取。 |
DENO_DEPLOY_API_BASE |
https://api.deno.com/v2 |
src/app/api/settings/proxy/deno-deploy/route.ts |
覆寫代理集區中繼部署程式所使用的 Deno Deploy REST API 基底網址(#4643 / 9router#1437)。 |
NEXT_PUBLIC_DENO_RELAY_DEFAULT_PROJECT |
omniroute-deno-relay |
src/app/(dashboard)/dashboard/settings/components/proxy/DenoRelayModal.tsx |
在代理集區的「部署中繼」對話方塊中建議的預設 Deno Deploy 應用程式名稱。 |
NEXT_PUBLIC_DENO_RELAY_ENABLED |
true |
src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx |
設為 false 可在代理集區分頁中隱藏 Deno Deploy 中繼選項。 |
SEARCH_CACHE_TTL_MS |
300000(5 分鐘) |
open-sse/services/searchCache.ts |
搜尋 API(Perplexity、Brave 等)回應快取的 TTL。 |
ENABLE_CC_COMPATIBLE_PROVIDER |
false |
src/shared/utils/featureFlags.ts |
顯示實驗性的 CC 相容提供者 UI,供僅限 Claude Code 的中繼使用。 |
NINEROUTER_HOST |
127.0.0.1 |
open-sse/executors/ninerouter.ts |
覆寫內嵌 9router 執行個體的監聽主機。 |
NINEROUTER_PORT |
20130 |
open-sse/executors/ninerouter.ts |
覆寫內嵌 9router 執行個體的監聽連接埠。 |
EMBED_WS_PROXY_HOST |
127.0.0.1 |
src/lib/services/embedWsProxy.ts |
內嵌服務 WebSocket 代理的繫結主機(預設僅限回送介面)。 |
EMBED_WS_PROXY_PORT |
20131 |
src/lib/services/embedWsProxy.ts |
內嵌服務 WebSocket 代理伺服器的連接埠。 |
CLIPROXYAPI_HOST |
127.0.0.1 |
open-sse/executors/cliproxyapi.ts |
CLIProxyAPI 橋接主機(舊版整合)。 |
CLIPROXYAPI_PORT |
5544 |
open-sse/executors/cliproxyapi.ts |
CLIProxyAPI 橋接連接埠。 |
CLIPROXYAPI_API_KEY |
(空白) | open-sse/handlers/chatCore/cliproxyapiCredentials.ts |
未設定 cliproxyapi_api_key 時的資料平面金鑰備援值。 |
CLIPROXYAPI_MANAGEMENT_KEY |
(空白) | src/lib/services/cliproxyAccountHealth.ts |
用於從外部管理的 CLIProxyAPI 執行個體讀取帳戶健康狀態的管理金鑰。 |
CLIPROXYAPI_CONFIG_DIR |
~/.cli-proxy-api |
src/lib/versionManager/processManager.ts |
CLIProxyAPI 設定目錄。 |
CLIPROXY_BIND_HOST |
127.0.0.1 |
docker-compose.yml |
docker-compose 發佈 cliproxyapi Sidecar 的主機介面(#12578)。其資料磁碟區存放提供者 OAuth/API 認證,而固定版本的映像不支援透過環境變數覆寫資料平面的 api-keys(僅支援掛載的 config.yaml),因此使用 0.0.0.0 會將含有認證的服務暴露給整個區域網路。 |
MUX_SERVICE_PORT |
8322 |
src/lib/services/bootstrap.ts |
覆寫內嵌 Mux(coder/mux)代理程式協調守護程式的監聽連接埠(固定為 127.0.0.1)。 |
OPENWA_SERVICE_PORT |
8323 |
src/lib/services/bootstrap.ts |
覆寫內嵌 open-wa(WhatsApp Web 自動化)守護程式的監聽連接埠(固定為 127.0.0.1)。 |
DARIO_HOST |
127.0.0.1 |
open-sse/executors/dario.ts |
Dario 內嵌服務的繫結/連線主機(預設僅限回送介面)。 |
DARIO_PORT |
3456 |
open-sse/executors/dario.ts |
Dario 內嵌服務連接埠。 |
DARIO_HOST |
127.0.0.1 |
open-sse/executors/dario.ts |
Dario 內嵌服務的繫結/連線主機(預設僅限回送介面)。 |
DARIO_PORT |
3456 |
open-sse/executors/dario.ts |
Dario 內嵌服務連接埠。 |
LOCAL_HOSTNAMES |
(空) | open-sse/config/providerRegistry.ts |
以逗號分隔、視為「本機」的其他主機名稱(Docker 服務名稱等)。 |
ENABLE_CC_COMPATIBLE_PROVIDER 僅適用於只接受 Claude Code 用戶端的第三方中繼服務。
OmniRoute 會重寫請求,讓這些中繼服務能夠接受請求。如果您只想使用 Claude Code CLI,
或不確定這些中繼服務是什麼,請保持停用此功能,並改為新增一般的 Anthropic 相容提供者。
21. 代理伺服器健康狀態
Section titled “21. 代理伺服器健康狀態”| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
PROXY_FAST_FAIL_TIMEOUT_MS |
2000 |
src/lib/proxyHealth.ts |
快速失敗健康檢查逾時時間。 |
PROXY_LATENCY_WINDOW_HOURS |
3 |
src/lib/db/proxies.ts |
在延遲最佳化集區策略中,用於計算候選代理伺服器平均延遲的時間範圍(小時)。 |
PROXY_HEALTH_CACHE_TTL_MS |
30000 |
src/lib/proxyHealth.ts |
健康檢查結果的快取 TTL。 |
PROXY_HEALTH_UNHEALTHY_CACHE_TTL_MS |
2000 |
src/lib/proxyHealth.ts |
代理伺服器健康探測失敗的快取 TTL。此值應短於 PROXY_HEALTH_CACHE_TTL_MS,如此一來,高並行處理下暫時性的代理伺服器逾時便能快速重試,同時仍可對確實失效的代理伺服器啟用快速失敗機制。 |
PROXY_HEALTH_ENABLED |
true |
src/lib/proxyHealth/scheduler.ts |
設為 false 可停用定期探測已註冊代理伺服器的背景代理伺服器健康狀態排程器。 |
PROXY_HEALTH_INTERVAL_MS |
600000 |
src/lib/proxyHealth/scheduler.ts |
背景健康狀態排程器的掃描間隔,以毫秒為單位(最小值為 60000)。 |
PROXY_HEALTH_RECOVERY_INTERVAL_MS |
600000 |
src/lib/proxyHealth/scheduler.ts |
背景復原檢查的間隔(毫秒):重新探測先前不健康的代理伺服器之頻率,讓已復原的代理伺服器無須重新啟動即可重回輪替。低於 60000 的值會改用預設值。 |
PROXY_HEALTH_TEST_URL |
https://httpbin.org/ip |
src/lib/proxyHealth/probeTarget.ts |
排程器與 /api/settings/proxies/auto-test 端點使用的可連線性探測目標。請將其指向內部/自行託管的 URL,以避免使用公開的預設目標。 |
PROXY_HEALTH_TEST_CONCURRENCY |
10 |
src/lib/proxyHealth/probeTarget.ts |
每批同時啟動的探測數,由排程器與 /api/settings/proxies/auto-test 端點共用。下限為 1,上限為 50。 |
PROXY_HEALTH_TEST_STAGGER_MS |
100 |
src/lib/proxyHealth/probeTarget.ts |
同一批次內兩次探測送出之間的延遲(毫秒)。若未設定,整批探測會同時送出,共用的出口 IP 可能觸發目標的速率限制。設為 0 可停用此間隔;上限為 5000。 |
PROXY_HEALTH_USE_PROVIDER_TARGET |
true |
src/lib/proxyHealth/providerProbeTarget.ts |
設為 "false" 可停止探測代理伺服器所指派提供者的實際主機(GET /models,不含 API 金鑰),並一律改用 PROXY_HEALTH_TEST_URL。 |
PROXY_HEALTH_AUTO_DEACTIVATE |
false |
src/lib/proxyHealth/statusPolicy.ts |
當設為 false(預設值)時,自動可連線性探測(排程器 + /api/settings/proxies/auto-test 的「全部測試」按鈕)為唯讀,絕不會寫入代理伺服器的狀態——只有操作員可將其設為啟用/停用,因此不穩定的探測不會使已指派的代理伺服器陷入無法使用的狀態(#6246)。設為 true 可恢復舊版的測試並設定狀態行為。 |
FLUSH_EMPTY_RETRY_ENABLED |
false |
src/shared/utils/featureFlags.ts |
選擇性啟用的功能旗標(請參閱 FEATURE_FLAGS.md;儀表板的資料庫覆寫值優先)。設為 true(或 1、yes)時,會透過一般憑證路徑重試翻譯後內容為空的串流回合(最多重試 STREAM_RECOVERY.EMPTY_TURN_RETRY_MAX 次),而非回傳內容為空的 200 或空內容的 502。 |
PROXY_POOL_EGRESS_OBSERVATION |
false |
src/shared/utils/featureFlags.ts |
選擇性啟用的功能旗標(請參閱 FEATURE_FLAGS.md;儀表板的資料庫覆寫值優先)。設為 true(或 1、yes)時,會在儀表板的代理伺服器集區下方顯示唯讀的集區出口觀測資料(根據代理伺服器記錄,顯示過去 24 小時內不同的出口 IP、連線數,以及單一 IP 後方觀測到的最高連線數)。絕不會用於路由。 |
PROXY_AUTO_REMOVE |
false |
src/lib/proxyHealth/scheduler.ts |
設為 true,讓排程器在代理連續多次失敗後自動移除代理。 |
PROXY_AUTO_REMOVE_AFTER |
3 |
src/lib/proxyHealth/scheduler.ts |
排程器自動移除代理前所允許的連續失敗次數(當 PROXY_AUTO_REMOVE=true 時)。 |
PROXY_AUTO_DISABLE |
false |
src/lib/proxyHealth/scheduler.ts |
設為 true,讓排程器在代理連續多次失敗後將其軟停用(狀態為 dead,且永不刪除),而非將其移除。這是 PROXY_AUTO_REMOVE 的非破壞性替代方案:該代理會立即從集區/輪替解析中移除(範圍集區解析所使用的存活狀態篩選器已會排除它),並在再次通過探測後自動重新啟用。共用 PROXY_AUTO_REMOVE_AFTER 閾值。如果兩個旗標皆為 true,則以 PROXY_AUTO_REMOVE 為優先。 |
OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK |
false |
src/shared/constants/featureFlagDefinitions.ts |
允許 OAuth 和提供者驗證流程在代理可達性預檢失敗時,略過釘選的代理並直接連線。實際優先順序為:Feature Flags 資料庫覆寫 > 環境變數 > 預設值。 |
RATE_LIMIT_MAX_WAIT_MS |
30000(30 秒) |
src/lib/resilience/settings.ts |
預設的佇列等待預算:請求在被拒絕且永遠無法到達上游之前,可等待提供者槽位並停留於佇列中的時間。工作開始執行後,計時器便會清除——執行時間則由 RATE_LIMIT_EXECUTION_MAX_WAIT_MS 另行限制。環境變數只會設定預設值:持久化的 resilienceSettings.requestQueue.maxWaitMs 會覆寫它,而各連線的 rateLimitOverrides.maxWaitMs 又會進一步覆寫前者。 |
RATE_LIMIT_EXECUTION_MAX_WAIT_MS |
600000(10 分鐘) |
open-sse/services/rateLimitManager.ts |
已准入請求在其速率限制保留到期前可持續執行的時間上限——與佇列等待預算分離,避免非增量式閘道上的緩慢擷取啟動發生逾時(#12027)。 |
RATE_LIMIT_MAX_QUEUE_DEPTH |
0(已停用) |
open-sse/services/rateLimitManager.ts |
佇列准入上限:當已有這麼多請求正在排隊時,以 429 queue_full 拒絕請求。0 = 無上限(預設值)。 |
RATE_LIMIT_AUTO_ENABLE |
(未設定) | open-sse/services/rateLimitManager.ts |
無論持久化的 Dashboard 設定為何,強制開啟或關閉自動啟用的速率限制安全機制。接受 true/1/on 以強制開啟,接受 false/0/off 以強制關閉。 |
PROVIDER_COOLDOWN_ENABLED |
(未設定 → 關閉) | open-sse/services/providerCooldownTracker.ts |
選擇性啟用全域、跨請求的提供者/連線冷卻追蹤。預設為關閉(與「連線冷卻」/「提供者斷路器」功能重疊)。接受 true/1/on 以啟用。 |
PROVIDER_COOLDOWN_MIN_MS |
5000 |
open-sse/services/providerCooldownTracker.ts |
失敗的提供者/連線重試前的最短冷卻時間(毫秒)。冷卻時間會隨連續失敗次數呈指數成長。僅在啟用 PROVIDER_COOLDOWN_ENABLED 時使用。 |
PROVIDER_COOLDOWN_MAX_MS |
300000(5 分鐘) |
open-sse/services/providerCooldownTracker.ts |
失敗的提供者/連線無論如何都會重試前的最長冷卻時間上限(毫秒)。僅在啟用 PROVIDER_COOLDOWN_ENABLED 時使用。 |
STREAM_RECOVERY_ENABLED |
(未設定 → 關閉) | src/lib/resilience/settings.ts(初始值)→ open-sse/services/streamRecovery.ts(邏輯) |
**功能:**透明復原遭上游截斷的串流(移植自 free-claude-code)。將初始 SSE 視窗保留最多 STREAM_RECOVERY.HOLDBACK_MS(750 毫秒),以便在任何位元組送達用戶端之前發生的_提交前_中斷,能夠以不可見方式重新開啟並重試。**何時啟用:**上游不穩定/經常在串流開始時發生 0 位元組截斷;若無法接受每個串流的首個權杖回應時間最多增加 750 毫秒,請維持關閉。接受 true/1/on。用於設定持久化「韌性」設定的初始值;一旦透過 Dashboard 設定,便以該設定為準。 |
STREAM_RECOVERY_MIDSTREAM_ENABLED |
(未設定 → 關閉) | src/lib/resilience/settings.ts(初始值)→ open-sse/services/streamRecovery.ts(邏輯) |
**功能:**串流中途續傳(階段 4.4)——發生_提交後_截斷(位元組已送達用戶端)時,以部分文字作為助理預填內容重新請求,並拼接缺少的後綴。僅適用於與 OpenAI 相容的純文字串流;若有工具呼叫正在進行,絕不會觸發。**何時啟用:**較長的生成內容在回答途中遭截斷,且您能接受復原的尾端內容一次整批送達,而非逐一權杖送達。此功能獨立於 STREAM_RECOVERY_ENABLED(風險特性不同)。接受 true/1/on。 |
STREAM_THROUGHPUT_WATCHDOG_ENABLED |
(未設定 → 關閉) | src/lib/resilience/settings.ts → open-sse/services/throughputWatchdog.ts |
選擇性啟用作用中串流的有效輸出看門狗。偵測持續傳送區塊、但助理輸出速率仍低於設定值的串流;心跳、用量事件、空差異內容,以及工具/推理階段不會被誤判為進度。此功能獨立於閒置逾時與硬性截止時間逾時。 |
STREAM_THROUGHPUT_WATCHDOG_WARMUP_MS |
30000 |
src/lib/resilience/settings/normalize.ts |
評估輸送量前的寬限期,範圍限制為 0–600000 毫秒。 |
STREAM_THROUGHPUT_WATCHDOG_WINDOW_MS |
30000 |
src/lib/resilience/settings/normalize.ts |
有效輸出的滾動視窗,範圍限制為 1000–600000 毫秒;中止前必須經過一個完整視窗。 |
STREAM_THROUGHPUT_WATCHDOG_MIN_BYTES_PER_SECOND |
4 |
src/lib/resilience/settings/normalize.ts |
助理輸出的最低 UTF-8 位元組速率(保守的權杖替代指標),範圍限制為 1–1000000。 |
STREAM_THROUGHPUT_WATCHDOG_MIN_USEFUL_BYTES |
1 |
src/lib/resilience/settings/normalize.ts |
可視為可測量之非零有效輸出樣本的最小值,範圍限制為 1–1000000 位元組。 |
HEALTHCHECK_STAGGER_MS |
3000 |
src/lib/tokenHealthCheck.ts |
啟動時,各提供者權杖健康檢查之間的錯開間隔(毫秒)。 |
HEALTHCHECK_JITTER_MIN_MS |
500 |
src/lib/tokenHealthCheck.ts |
在提供者權杖健康檢查之間,額外加到 HEALTHCHECK_STAGGER_MS 上的最小隨機抖動(毫秒),以避免突發流量(Issue #1220)。 |
HEALTHCHECK_JITTER_MAX_MS |
5000 |
src/lib/tokenHealthCheck.ts |
在提供者權杖健康檢查之間,額外加到 HEALTHCHECK_STAGGER_MS 上的最大隨機抖動(毫秒),以避免突發流量(Issue #1220)。 |
HEALTHCHECK_BATCH_SIZE |
20 |
src/lib/tokenHealthCheck.ts |
啟動時權杖健康檢查掃描的並行檢查批次大小;較大的值會並行檢查更多連線,較小的值則可降低突發負載(Issue #7875,#7719 的迴歸問題)。 |
REQUEST_RETRY |
2 |
src/sse/services/cooldownAwareRetry.ts |
遇到模型範圍的冷卻回應時,在向用戶端傳回錯誤之前自動重試的次數。 |
MAX_RETRY_INTERVAL_SEC |
30 |
src/sse/services/cooldownAwareRetry.ts |
冷卻重試之間的最大退避間隔(秒)。無論上游的 Retry-After 為何,皆以此值為上限。 |
HEADROOM_URL |
http://localhost:8787 |
src/lib/headroom/detect.ts |
Headroom 權杖節省代理的 URL。儀表板生命週期(api/headroom/*)預設會在迴路介面上啟動本機 headroom-ai CLI;僅在需要指向外部 Docker sidecar 代理時才覆寫此設定。 |
串流復原調校常數
Section titled “串流復原調校常數”復原延遲提交行為由
open-sse/config/constants.ts(STREAM_RECOVERY)中的硬編碼常數調校,於此列出以供參考 —
變更這些常數需要編輯程式碼,而非設定環境變數:
STREAM_RECOVERY.HOLDBACK_MS = 750— 保留初始 SSE 視窗的時間, 以便在任何位元組提交至用戶端之前,對提早截斷進行重試。STREAM_RECOVERY.BUFFER_MAX_BYTES = 65536— 保留視窗的硬性上限;一旦累積到 此位元組數,無論計時器狀態為何,都會立即提交(清空緩衝區並直通傳遞)。STREAM_RECOVERY.EARLY_RETRY_MAX = 4— 在延遲提交內容仍未提交時,透明地重新開啟上游 串流的最大次數。
每個提供者的滑動視窗速率限制(無環境變數): 從 FCC 移植的 每個提供者滑動視窗速率限制_備援機制_存在於程式碼中 (
open-sse/services/providerDefaultRateLimit.ts,並透過open-sse/services/rateLimitManager.ts串接),但其隨附的預設映射為空 ,且目前沒有供操作人員使用的環境變數 — 只能透過測試掛鉤/ 編輯程式碼來啟用。因此刻意未將其列於上表。確實提供調整選項的每個(token, IP)轉送速率限制器是RELAY_IP_PER_MINUTE(§3 網路與連接埠)。
22. 偵錯
Section titled “22. 偵錯”[!CAUTION] 這些變數會產生詳細輸出,且可能洩漏敏感資料。切勿在正式環境中啟用。
| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
CURSOR_DEBUG |
(未設定) | open-sse/executors/cursor.ts |
設為 1 以啟用詳細的 Cursor 執行器日誌(已解碼的 SSE 區塊等)。 |
CURSOR_STREAM_DEBUG |
(未設定) | open-sse/executors/cursor.ts |
CURSOR_DEBUG 的向下相容別名。 |
CURSOR_DUMP_FILE |
(未設定) | open-sse/executors/cursor.ts |
選用的檔案路徑;當 CURSOR_DEBUG=1 時,會將原始的已解碼 Cursor 區塊寫入該檔案。 |
CURSOR_STREAM_TIMEOUT_MS |
300000 |
open-sse/executors/cursor.ts |
Cursor 執行器的串流閒置逾時(毫秒)。 |
CURSOR_KV_GRACE_MS |
2000 |
open-sse/executors/cursor.ts |
composer kv_after_text 軟終止符之後,若仍有位元組留在緩衝區中的寬限時間窗(毫秒)——讓尾隨的 exec_mcp 工具呼叫有時間完成其訊框。 |
CURSOR_TOOL_DIRECTIVE |
已啟用(!== "0") |
open-sse/executors/cursor.ts |
讓 composer-2.5 能可靠發出工具呼叫的工具提交指令。設為 0 可停用。 |
OMNIROUTE_SYSTEM_INSTRUCTION_APPEND |
(未設定) | open-sse/translator/request/claude-to-openai.ts, open-sse/translator/response/openai-to-claude.ts |
由操作人員定義、在轉譯完成後附加至系統訊息的系統提示文字(轉譯後注入),會送達 codex/Responses 與 /v1/messages 路徑。亦會用作從回顯的系統前文區塊中移除的指令前綴。維持未設定即可停用。 |
OMNIROUTE_STRIP_SYSTEM_PREAMBLE |
0(關閉) |
open-sse/translator/response/openai-to-claude.ts, open-sse/utils/directivePreambleStripper.ts |
設為 1,即可從 openai→claude 串流的開頭移除回顯的系統提示前文區塊。預設關閉——這些啟發式規則是依照英文散文形式設計,且會修改回應承載資料,因此若回覆合理地以此類段落開頭,該段落將會遺失。 |
CURSOR_IMAGE_FETCH_TIMEOUT_MS |
15000 |
open-sse/utils/cursorImages.ts |
遠端 image_url 視覺輸入中,每張圖片的擷取逾時(毫秒)。 |
CURSOR_STATE_DB_PATH |
(自動探測) | open-sse/utils/cursorVersionDetector.ts |
覆寫用於偵測 IDE 版本的 Cursor IDE 狀態資料庫查找位置。 |
CURSOR_AGENT_CLI_VERSION |
(偵測/固定) | open-sse/utils/cursorAgentCliVersion.ts |
Agent Run 中用於 x-cursor-client-version: cli-… 的 Agent CLI 組建 ID(YYYY.MM.DD-<hash>)。 |
CURSOR_AGENT_BIN |
(未設定) | open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts |
用於產生圖片的 Cursor Agent 二進位檔路徑。未設定時,處理常式會先使用 providerSpecificData.agentBin,再使用 PATH。 |
CURSOR_IMG_TIMEOUT_MS |
210000 |
open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts |
Cursor Agent 圖片工作的單張圖片實際經過時間上限(毫秒)。 |
CURSOR_IMG_MAX_CONCURRENT |
2 |
open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts |
Cursor 圖片工作的共享席位並行限制。 |
CURSOR_IMG_MODEL |
請求值/auto |
open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts |
覆寫圖片工作所使用的 Cursor CLI --model。 |
UC_IMAGE_POLL_INTERVAL_MS |
2000 |
open-sse/handlers/imageGeneration/providers/ucImage.ts |
UC(uncensored.com)圖片產生結果的輪詢頻率(毫秒)。 |
UC_IMAGE_POLL_TIMEOUT_MS |
60000 |
open-sse/handlers/imageGeneration/providers/ucImage.ts |
UC 圖片產生結果輪詢的實際經過時間上限(毫秒)。 |
UC_VIDEO_POLL_INTERVAL_MS |
3000 |
open-sse/handlers/videoGeneration/providers/ucVideo.ts |
UC(uncensored.com)影片產生結果的輪詢頻率(毫秒)。 |
UC_VIDEO_POLL_TIMEOUT_MS |
300000 |
open-sse/handlers/videoGeneration/providers/ucVideo.ts |
UC 影片產生結果輪詢的實際經過時間上限(毫秒)。 |
CURSOR_DATA_DIR |
(自動探測) | open-sse/utils/cursorAgentCliVersion.ts |
覆寫 Cursor Agent CLI 資料目錄(…/versions/<id>);與官方 Agent 使用的變數相同。 |
CURSOR_TOKEN |
(未設定) | scripts/ad-hoc/cursor-tap.cjs |
開發者工具使用的直接 Cursor bearer 權杖。 |
OMNIROUTE_LOG_REQUEST_SHAPE |
已停用(透過 "1" 選擇啟用) |
src/app/api/v1/chat/completions/route.ts |
設為 "1" 時,記錄大型聊天承載資料的內容類型/長度標記。預設關閉以減少日誌雜訊。 |
DEBUG_RESPONSES_SSE_TO_JSON |
(未設定) | open-sse/handlers/responseTranslator.ts |
設為 true 以記錄 Responses API SSE→JSON 轉譯詳細資料。 |
DEBUG_CLAUDE_NONSTREAM |
(未設定) | open-sse/handlers/responseTranslator.ts |
設為 true,以在 Claude 回應轉譯路徑中呈現空白的 textContent 區塊(僅供偵錯)。 |
NEXT_PUBLIC_OMNIROUTE_E2E_MODE |
(未設定) | E2E 測試框架 | 設為 true 以啟用 E2E 測試模式(寬鬆驗證、測試掛鉤)。 |
23. GitHub 整合
Section titled “23. GitHub 整合”允許使用者直接從儀表板回報問題。
| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
GITHUB_ISSUES_REPO |
(未設定) | src/app/api/v1/issues/report/route.ts |
採用 owner/repo 格式的儲存庫。 |
GITHUB_ISSUES_TOKEN |
(未設定) | src/app/api/v1/issues/report/route.ts |
具有 issues:write 範圍的 GitHub 個人存取權杖。 |
GITHUB_TOKEN |
(未設定) | 問題分類/雲端代理程式輔助工具 | 通用 GitHub 存取權杖,作為 GITHUB_ISSUES_TOKEN 的備援,並供 src/lib/cloudAgent/* 中的雲端代理程式輔助工具使用。 |
有關中繼後端 SRE 指導(ts/bifrost/自動行為、9router 與 CLIProxyAPI 的放置,以及高吞吐量回退策略),請參閱 中繼後端策略。
最簡本地開發
Section titled “最簡本地開發”JWT_SECRET=$(openssl rand -base64 48)API_KEY_SECRET=$(openssl rand -hex 32)INITIAL_PASSWORD=dev123PORT=20128NODE_ENV=developmentDocker 生產環境
Section titled “Docker 生產環境”JWT_SECRET=<generated>API_KEY_SECRET=<generated>INITIAL_PASSWORD=<generated>STORAGE_ENCRYPTION_KEY=<generated>DATA_DIR=/dataPORT=20128API_PORT=20129NODE_ENV=productionAUTH_COOKIE_SECURE=trueREQUIRE_API_KEY=trueNEXT_PUBLIC_BASE_URL=https://omniroute.example.comBASE_URL=http://localhost:20128OMNIROUTE_MEMORY_MB=8192CORS_ORIGIN=https://your-frontend.example.com氣隙網路 / CI
Section titled “氣隙網路 / CI”JWT_SECRET=test-jwt-secret-for-ciAPI_KEY_SECRET=test-api-key-secret-for-ciINITIAL_PASSWORD=testpassNODE_ENV=productionOMNIROUTE_DISABLE_BACKGROUND_SERVICES=trueAPP_LOG_TO_FILE=false帶有反向代理的 VPS (nginx + Cloudflare)
Section titled “帶有反向代理的 VPS (nginx + Cloudflare)”JWT_SECRET=<generated>API_KEY_SECRET=<generated>STORAGE_ENCRYPTION_KEY=<generated>PORT=20128AUTH_COOKIE_SECURE=trueREQUIRE_API_KEY=trueNEXT_PUBLIC_BASE_URL=https://omniroute.example.comBASE_URL=http://127.0.0.1:20128CORS_ORIGIN=https://omniroute.example.comENABLE_TLS_FINGERPRINT=trueCLI_COMPAT_ALL=124. Skills 沙箱(v3.8.0+)
Section titled “24. Skills 沙箱(v3.8.0+)”當 Skills 框架(src/lib/skills/)在沙箱環境中執行使用者定義的自動化時,套用的限制與安全控制項。
| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
SKILLS_SANDBOX_TIMEOUT_MS |
10000(10 秒) |
src/lib/skills/builtins.ts |
每次執行沙箱化技能程式碼的實際經過時間逾時。此為硬性上限;任何超過此時間的執行都會被終止。 |
SKILLS_EXECUTION_TIMEOUT_MS |
(備援為 SKILLS_SANDBOX_TIMEOUT_MS) |
src/lib/skills/ |
高階技能協調逾時。將其設為高於 SKILLS_SANDBOX_TIMEOUT_MS,以允許多步驟工作流程。 |
SKILLS_MAX_FILE_BYTES |
1048576(1 MB) |
src/lib/skills/builtins.ts |
技能可從任何單一沙箱檔案讀取的最大位元組數。 |
SKILLS_MAX_HTTP_RESPONSE_BYTES |
256000(250 KB) |
src/lib/skills/builtins.ts |
技能內任何單一 HTTP 回應可擷取的最大位元組數。 |
SKILLS_MAX_SANDBOX_OUTPUT_CHARS |
100000 |
src/lib/skills/builtins.ts |
沙箱呼叫所傳回 stdout/stderr 字元數的硬性上限。 |
SKILLS_SANDBOX_NETWORK_ENABLED |
false |
src/lib/skills/builtins.ts |
設為 1/true 可允許沙箱內的對外網路連線。為了安全起見,預設為隔離。 |
SKILLS_ALLOWED_SANDBOX_IMAGES |
(空白) | src/lib/skills/builtins.ts |
允許用於沙箱執行的容器映像檔白名單,以逗號分隔。空白表示僅允許內建預設映像檔。 |
SKILLS_SANDBOX_DOCKER_IMAGE |
(內建預設值) | src/lib/skills/ |
產生由 Docker 支援的沙箱時使用的容器映像檔。可覆寫此值以固定使用自訂的強化基礎映像檔。 |
SKILLS_SANDBOX_RUNTIME |
auto |
src/lib/skills/sandbox.ts, src/lib/skills/containerProvider.ts |
技能沙箱的容器執行階段:auto | docker | apple | wsl | orbstack | podman。auto 會根據主機作業系統選擇已安裝的最佳執行階段(macOS 上使用 Apple Container/OrbStack、Windows 上使用 WSL Container、Linux 上使用 Podman),並以 Docker 作為備援。 |
[!CAUTION] 啟用
SKILLS_SANDBOX_NETWORK_ENABLED=true會為任意技能程式碼開啟對外傳輸路徑。在共用部署中,請搭配OUTBOUND_SSRF_GUARD_ENABLED=true以及嚴格的CORS_ORIGIN/代理政策。
25. 提供者配額、隧道、備份與其他執行階段設定
Section titled “25. 提供者配額、隧道、備份與其他執行階段設定”提供者配額端點、網路隧道(Tailscale、Ngrok、MITM 偵錯代理伺服器)、1Proxy 對外連線集區、資料庫備份,以及執行器層或指令碼所參照的各功能小型覆寫設定。
| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
REDIS_URL |
redis://localhost:6379 |
src/shared/utils/rateLimiter.ts |
限流器後端的 Redis 連線字串。 |
ALIBABA_CODING_PLAN_HOST |
(正式環境主機) | open-sse/services/bailianQuotaFetcher.ts |
覆寫用於擷取 Alibaba Bailian Coding Plan 配額的主機。 |
ALIBABA_CODING_PLAN_QUOTA_URL |
從主機衍生 | open-sse/services/bailianQuotaFetcher.ts |
Alibaba Bailian 的完整配額 URL 覆寫。 |
QWEN_CLOUD_COOKIE |
(未設定) | open-sse/services/qwenTokenPlanQuotaFetcher.ts |
Qwen Cloud / Model Studio 個人 Token Plan 配額閘道的主控台工作階段 Cookie(推論 API 金鑰無法讀取該配額)。請從 home.qwencloud.com › Billing › Subscription(F12 › Network)上對 cs-data.qwencloud.com 發出的任何 api.json 呼叫中,複製完整的 Cookie 請求標頭,其中包含 login_qwencloud_ticket。此資訊屬於敏感資料且僅限該工作階段使用;建議優先使用各連線專屬的 qwenCloudCookie Dashboard 欄位。 |
QWEN_CLOUD_SEC_TOKEN |
(未設定) | open-sse/services/qwenTokenPlanQuotaFetcher.ts |
手動覆寫 Token Plan 主控台閘道的 sec_token。此資訊屬於敏感資料;若未設定,擷取器會使用 Cookie 從 Dashboard HTML 中解析。 |
QWEN_TOKEN_PLAN_HOST |
https://cs-data.qwencloud.com |
open-sse/services/qwenTokenPlanQuotaFetcher.ts |
個人 Token Plan 配額擷取器的閘道主機覆寫(例如,Model Studio 主控台可使用 bailian-singapore-cs.alibabacloud.com)。 |
QWEN_TOKEN_PLAN_DASHBOARD_URL |
https://home.qwencloud.com/ |
open-sse/services/qwenTokenPlanQuotaFetcher.ts |
用於從已登入的 HTML 中解析 sec_token 的 Dashboard URL。 |
ALIBABA_FREE_TIER_VISION_FE_PATH |
/costing-balance/free-quota-image-video |
open-sse/services/alibabaFreeTierQuotaFetcher.ts |
覆寫用於擷取 Alibaba Model Studio 免費方案視覺/媒體配額的主控台前端路徑。 |
ALIBABA_FREE_TIER_MULTIMODAL_FE_PATH |
/costing-balance/free-quota-multimodal |
open-sse/services/alibabaFreeTierQuotaFetcher.ts |
用於擷取 Alibaba Model Studio 免費方案多模態配額的主控台前端路徑覆寫。 |
ALIBABA_FREE_TIER_AUDIO_FE_PATH |
/costing-balance/free-quota-audio |
open-sse/services/alibabaFreeTierQuotaFetcher.ts |
用於擷取 Alibaba Model Studio 免費方案音訊配額的主控台前端路徑覆寫。 |
ALIBABA_FREE_TIER_ALLOWLIST_PATH |
(未設定) | open-sse/services/alibabaFreeTierAllowlist.ts |
內建 Alibaba 免費方案文字模型允許清單的選用本機 JSON 覆寫檔案路徑。若未設定,會依序回退至 $DATA_DIR/alibaba-free-tier-allowlist.json,再回退至 config/alibaba-free-tier-allowlist.json。 |
CONTEXT_RESERVE_TOKENS |
1024 |
open-sse/services/contextManager.ts |
計算提示詞預算時,為補全輸出保留的權杖數量。 |
CONTEXT_KEEP_LATEST_IMAGES |
2 |
open-sse/services/contextManager.ts |
為符合上下文視窗限制而修剪較舊的內嵌圖片時,要保留的最新內嵌圖片數量(#8560)。 |
MODEL_ALIAS_COMPAT_ENABLED |
已啟用 | open-sse/services/model.ts |
切換舊版用戶端所使用的傳統模型別名相容層。 |
OMNIROUTE_EMERGENCY_FALLBACK |
已啟用 | open-sse/services/emergencyFallback.ts |
設為 false(或 0)可停用緊急預算耗盡回退機制;此機制會將失敗的請求重新路由至免費的 nvidia/openai/gpt-oss-120b 模型。實際優先順序為「功能旗標資料庫覆寫 > 環境變數 > 預設值」;若無法使用,服務會回退至原始環境變數值。 |
COMMAND_CODE_CALLBACK_PORT |
(未設定) | src/app/api/providers/command-code/auth/shared.ts |
用於接收 Command Code CLI 輔助程式 OAuth 樣式回呼的本機連接埠。 |
COMMAND_CODE_VERSION |
0.33.2 |
open-sse/executors/commandCode.ts |
作為 x-command-code-version 標頭傳送至 Command Code 上游服務的值。可透過覆寫來提升 CLI 版本。 |
COMMANDCODE_API_URL |
https://api.commandcode.ai |
open-sse/services/usage/command-code.ts |
智慧型手機配額擷取器遙測所使用之 Command Code 用量/配額上游服務的基礎 URL。可針對自行託管或替代的 Command Code API 進行覆寫。 |
MITM_LOCAL_PORT |
443 |
src/mitm/server.cjs |
MITM 偵錯代理伺服器的本機繫結連接埠。 |
MITM_DISABLE_TLS_VERIFY |
0 |
src/mitm/server.cjs |
設為 1 以停用上游 TLS 驗證(僅限開發用途)。 |
MITM_IDLE_TIMEOUT_MS |
60000 |
src/mitm/socketTimeouts.ts, src/mitm/server.cjs |
代理連線的閒置通訊端逾時時間(毫秒);超過此時間的閒置通訊端將被中斷,以避免半開放通道洩漏。 |
BRIDGE_PORT |
20129 |
bin/antigravity-bridge.mjs |
Antigravity MITM 橋接器監聽的連接埠。 |
ROUTER_URL |
http://127.0.0.1:20128/v1/antigravity |
bin/antigravity-bridge.mjs |
橋接器將 Antigravity 流量轉送至的路由器端點。 |
CERT_DIR |
~/.omniroute/mitm |
bin/antigravity-bridge.mjs |
存放橋接器 TLS 監聽器所用 server.key/server.crt 的目錄;若缺少任一檔案,橋接器將結束執行。 |
MITM_VERBOSE |
1 |
src/mitm/server.cjs, src/mitm/_internal/bypass.cjs |
路由決策記錄的詳細程度:0 表示不記錄,較高的值會記錄更多略過/路由決策。 |
MITM_ROOT_CA_ENABLED |
false |
src/mitm/manager.ts |
設為 true 以選擇使用根 CA + 各主機分葉憑證模型(#6684)。全新安裝會自動採用此模型;已有受信任舊版分葉憑證的安裝則會繼續使用舊版固定 SAN 憑證,除非明確選擇加入。 |
MITM_CERT_MODE |
legacy |
src/mitm/manager.ts, src/mitm/server.cjs |
由 MITM 管理器為產生的代理程序設定(root-ca | legacy)——反映憑證遷移決策;不應手動設定。 |
OMNIROUTE_NO_SUDO |
0 |
src/mitm/systemCommands.ts |
設為 1(真值)以移除 MITM 憑證信任命令開頭的 sudo——適用於無 root 權限/採用使用者命名空間的部署,其中操作者會手動信任 CA(例如透過 Node 的額外 CA 憑證機制)。 |
SKIP_ANTIGRAVITY_DNS |
(未設定) | src/mitm/dns/provision.ts |
設為 true 以完全略過為 Antigravity 代理主機名稱佈建 /etc/hosts DNS 項目——適用於無 sudo/root 權限的容器。 |
OMNIROUTE_SKIP_DNS_WRITE |
(未設定) | src/mitm/dns/dnsConfig.ts |
設為 1 以在新增/移除 DNS 項目時略過寫入 hosts 檔案——適用於沙箱化或唯讀的測試環境。 |
OMNIROUTE_SKIP_SYSTEM_TRUST |
0 |
src/mitm/cert/install.ts, src/mitm/tproxy/caTrust.ts |
僅供測試/CI 使用的保護機制:設為 1 可使憑證信任的安裝/解除安裝不執行任何操作,確保測試套件不會修改作業系統的信任存放區。測試設定與 CI 工作流程會自動設定此值。 |
CHANGELOG_BASE_REF |
(自動) | scripts/check/check-changelog-integrity.mjs |
明確指定防止 CHANGELOG 內容被誤刪之檢查關卡的基準參照(預設為 CI 中 PR 的基底分支,或版本最高的 release/v*)。 |
FREE_PROXY_AUTO_SYNC_ENABLED |
false |
src/lib/freeProxyProviders/scheduler.ts |
設為 true 可啟用背景免費代理池自動同步排程器。此功能須選擇性啟用,預設為關閉。 |
FREE_PROXY_AUTO_SYNC_INTERVAL_MS |
1800000 |
src/lib/freeProxyProviders/scheduler.ts |
自動同步間隔(以毫秒為單位,預設為 30 分鐘)。 |
FREE_PROXY_1PROXY_ENABLED |
true |
src/lib/freeProxyProviders/oneproxy.ts |
啟用 1proxy 免費代理來源。設為 false 可停用。 |
FREE_PROXY_1PROXY_API_URL |
(請參閱 oneproxy.ts) | src/lib/freeProxyProviders/oneproxy.ts |
覆寫 1proxy API URL。 |
FREE_PROXY_1PROXY_MAX |
500 |
src/lib/freeProxyProviders/oneproxy.ts |
每次從 1proxy 同步時擷取的代理伺服器數量上限。 |
FREE_PROXY_1PROXY_MIN_QUALITY |
50 |
src/lib/freeProxyProviders/oneproxy.ts |
從 1proxy 匯入時的最低品質分數門檻。 |
FREE_PROXY_PROXIFLY_ENABLED |
true |
src/lib/freeProxyProviders/proxifly.ts |
啟用 Proxifly 免費代理來源。設為 false 可停用。 |
FREE_PROXY_PROXIFLY_QUANTITY |
100 |
src/lib/freeProxyProviders/proxifly.ts |
每次 Proxifly 同步時要擷取的代理伺服器數量。 |
FREE_PROXY_PROXIFLY_ANONYMITY |
elite |
src/lib/freeProxyProviders/proxifly.ts |
Proxifly 的匿名等級篩選器(elite、anonymous、transparent)。 |
FREE_PROXY_IPLOCATE_ENABLED |
false |
src/lib/freeProxyProviders/iplocate.ts |
啟用 IPLocate 免費代理來源。僅限選擇加入。 |
FREE_PROXY_IPLOCATE_BASE_URL |
https://raw.githubusercontent.com/iplocate/free-proxy-list/main/protocols |
src/lib/freeProxyProviders/iplocate.ts |
覆寫 IPLocate 代理清單的基礎 URL。 |
FREE_PROXY_WEBSHARE_ENABLED |
true |
src/lib/freeProxyProviders/webshare.ts |
啟用 Webshare 代理集區來源。設為 false 即可停用;此外也必須設定 FREE_PROXY_WEBSHARE_API_KEY。 |
FREE_PROXY_WEBSHARE_API_KEY |
(無) | src/lib/freeProxyProviders/webshare.ts |
Webshare 帳戶 API 權杖(Authorization: Token <key>)。此項為必要設定——若未設定,提供者將維持停用狀態。 |
FREE_PROXY_WEBSHARE_API_URL |
https://proxy.webshare.io/api/v2/proxy/list/ |
src/lib/freeProxyProviders/webshare.ts |
覆寫 Webshare 代理清單 API URL。 |
FREE_PROXY_WEBSHARE_MAX |
500 |
src/lib/freeProxyProviders/webshare.ts |
每次 Webshare 同步可匯入的代理伺服器數量上限。 |
NEXT_PUBLIC_VERCEL_RELAY_ENABLED |
true |
src/app/(dashboard)/…/ProxyPoolTab.tsx |
在代理集區分頁中顯示/隱藏「部署 Vercel Relay」按鈕。 |
VERCEL_API_BASE |
https://api.vercel.com |
src/app/api/settings/proxy/vercel-deploy/route.ts |
覆寫 Vercel API 基礎 URL(用於測試)。 |
NEXT_PUBLIC_VERCEL_RELAY_DEFAULT_PROJECT |
omniroute-relay |
src/app/(dashboard)/…/VercelRelayModal.tsx |
預先填入 Vercel Relay 部署對話方塊的預設專案名稱。 |
TAILSCALE_BIN |
(自動偵測) | src/lib/tailscaleTunnel.ts |
tailscale 二進位檔的明確路徑。 |
TAILSCALED_BIN |
(自動偵測) | src/lib/tailscaleTunnel.ts |
tailscaled 守護程式二進位檔的明確路徑。 |
TAILSCALE_AUTHKEY |
(未設定) | src/lib/tailscaleTunnel.ts |
用於非互動式/無頭模式執行 tailscale up 的預先共用 Tailscale 驗證金鑰(透過 --auth-key= 傳遞)。未設定時,登入會改用互動式瀏覽器驗證 URL。 |
NGROK_AUTHTOKEN |
(未設定) | src/lib/ngrokTunnel.ts |
驗證連出的 ngrok 通道。 |
DB_BACKUP_MAX_FILES |
20 |
src/lib/db/backup.ts |
手動/排程備份清理所保留的 SQLite 備份檔案數上限。遷移快照會依內容定址,且相同的資料庫狀態會重複使用同一份快照;在並行遷移時段內不會予以刪除。覆寫「設定 → 資料庫備份保留」中儲存的值。 |
DB_BACKUP_RETENTION_DAYS |
0 |
src/lib/db/backup.ts |
手動/排程備份清理所保留的最長天數。0 會停用依存留時間刪除。遷移快照在並行遷移時段內不會予以刪除。覆寫「設定 → 資料庫備份保留」中儲存的值。 |
OMNIROUTE_BACKUP_SCHEDULE_JOB_INTERVAL_MS |
30000 |
src/lib/jobs/backupScheduleJob.ts |
執行 backup-schedule.json 的伺服器端作業輪詢間隔(毫秒)。此值必須遠低於 cron 的 1 分鐘粒度;低於 5000 或無法解析的值會回復為 30000。 |
CONTAINER_HOST |
docker |
scripts/check-permissions.sh |
供進入點權限檢查使用的容器執行階段提示。任何 Podman 拓撲皆應設為 podman。由於容器無法判斷引擎是在本機執行,還是透過 Podman Machine 連線,因此警告會保持拓撲中立,並指向 contrib/podman/README.md。 |
QUOTA_STORE_DRIVER |
sqlite |
src/lib/quota/storeFactory.ts |
配額共用用量儲存區後端:sqlite(預設)或 redis。 |
QUOTA_STORE_REDIS_URL |
(未設定) | src/lib/quota/storeFactory.ts |
當 QUOTA_STORE_DRIVER=redis 時使用的 Redis 連線字串(例如 redis://localhost:6379)。 |
QUOTA_SATURATION_THRESHOLD |
0.5 |
src/lib/quota/enforce.ts |
集區飽和比率 (0..1);達到或超過此值時,集區會進入嚴格模式(不可借用)。 |
QUOTA_SOFT_DEPRIORITIZE_FACTOR |
0.7 |
open-sse/services/combo.ts |
當軟配額原則降低目標的優先順序時,套用至該目標的分數乘數 (0..1)。 |
STATUS_SOFT_DEPRIORITIZE_FACTOR |
0.5 |
open-sse/services/combo/autoStrategy.ts |
當預檢配額截止功能關閉時,在自動組合評分中套用至已耗盡提供者 (credits_exhausted/rate_limited) 的分數乘數 (0..1) (#4540)。 |
QUOTA_CONSUMPTION_RETENTION_DAYS |
14 |
src/lib/db/quotaConsumption.ts |
quota_consumption 貯體在 GC (gcQuotaConsumption) 前的保留期間(天)。 |
QUOTA_PREFLIGHT_CUTOFF_ENABLED |
false |
src/lib/resilience/settings.ts |
選用功能(預設關閉):啟用自動路由的硬性配額截止機制,在評分前剔除低配額候選項目。 |
OMNIROUTE_AUTO_FREE_FALLBACK_TO_FULL_POOL |
false |
open-sse/services/autoCombo/virtualFactory.ts |
選用功能(預設關閉):當 auto/<category>:<tier> 篩選器未匹配任何已連線候選項目時,恢復舊有行為,改為回退至完整(未篩選)集區,而非傳回空集區。預設關閉表示 :free 僅代表「免費層級」。 |
OMNIROUTE_CHAOS_MAX_PANEL |
5 |
open-sse/services/autoCombo/virtualFactory.ts |
auto/*:chaos 廣播變體的面板大小上限(限制於 1–10)— 一個請求最多可分送至此數量、涵蓋不同提供者的模型。 |
OMNIROUTE_CHAOS_MIN_PANEL |
(引擎預設值) | open-sse/services/autoCombo/virtualFactory.ts |
轉送至混沌廣播處理常式的最小面板大小調校值;若未設定,則保留引擎預設值。 |
OMNIROUTE_CHAOS_PANEL_TIMEOUT_MS |
(引擎預設值) | open-sse/services/autoCombo/virtualFactory.ts |
整個混沌面板分送作業的硬性逾時(毫秒);若未設定,則保留引擎預設值。 |
GROK_AUTH_PATH |
~/.grok/auth.json |
open-sse/services/grokQuotaFetcher.ts |
用於擷取 grok-web 每週配額的 Grok CLI auth.json 路徑;可針對測試或非標準 CLI 安裝加以覆寫。 |
AGENTBRIDGE_UPSTREAM_CA_CERT |
(未設定) | src/mitm/manager.ts |
AgentBridge 上游 TLS 連線所信任的額外 CA 憑證(PEM)。 |
INSPECTOR_BUFFER_SIZE |
1000 |
src/mitm/inspector/buffer.ts |
Traffic Inspector 環形緩衝區中保留的已擷取請求數量上限。 |
INSPECTOR_MAX_BODY_KB |
1024 |
src/mitm/inspector/buffer.ts |
截斷前可擷取的請求/回應主體大小上限(KB)。 |
INSPECTOR_HTTP_PROXY_PORT |
8080 |
src/mitm/inspector/httpProxyServer.ts |
Traffic Inspector HTTP Proxy 的本機連接埠。 |
INSPECTOR_HTTP_PROXY_AUTOSTART |
false |
src/mitm/inspector/httpProxyServer.ts |
啟動時自動啟動 Inspector HTTP Proxy。 |
INSPECTOR_TLS_INTERCEPT |
false |
src/lib/inspector/captureState.ts |
為擷取的 HTTPS 流量啟用 TLS 攔截(MITM)。 |
INSPECTOR_LLM_HOSTS_EXTRA |
(未設定) | src/lib/inspector/captureState.ts |
額外的主機名稱(以逗號分隔),擷取時會將其視為 LLM 端點。 |
INSPECTOR_MASK_SECRETS |
true |
src/mitm/inspector/buffer.ts |
遮蔽已擷取流量中的機密資訊(驗證標頭/API 金鑰)。 |
INSPECTOR_SYSTEM_PROXY_GUARD_MINUTES |
30 |
src/app/api/tools/traffic-inspector/capture-modes/system-proxy/route.ts |
系統 Proxy 防護機制自動還原作業系統 Proxy 設定前的分鐘數。 |
INSPECTOR_INTERNAL_INGEST_TOKEN |
(自動) | src/app/api/tools/traffic-inspector/internal/ingest/route.ts |
用於驗證擷取資料內部匯入 Inspector 的權杖。 |
PLAYGROUND_COMPARE_MAX_COLUMNS |
4 |
src/app/(dashboard)/dashboard/playground/ |
Playground 比較模式中並排欄位的最大數量。 |
PLAYGROUND_IMPROVE_PROMPT_DEFAULT_MODEL |
(未設定) | src/app/(dashboard)/dashboard/playground/ |
Playground「改善提示詞」動作的預設模型(未設定時會回退至目前使用中的模型)。 |
BIFROST_ENABLED |
1 |
src/app/api/v1/relay/chat/completions/bifrost/route.ts |
Bifrost sidecar 代理的主終止開關。設為 0 時,路由會傳回 503 並附帶 X-Bifrost-Killswitch 標頭,同時將操作導回 TS 路徑。可用於在不重新部署的情況下停用 sidecar(第 1 級路由器事件、金鑰輪替)。 |
BIFROST_BASE_URL |
(未設定) | src/app/api/v1/relay/chat/completions/bifrost/route.ts |
設定後,Bifrost sidecar 代理路由會將 /v1/chat/completions 流量轉送至此 Go 閘道,而非 TS 中繼處理常式。未設定 → 傳回 503 並回退。尾端斜線會被移除。 |
BIFROST_PORT |
8080 |
src/lib/services/bootstrap.ts |
當 OmniRoute 管理 Bifrost sidecar 生命週期時,受監管的 Bifrost 內嵌服務所繫結的連接埠(127.0.0.1:<port>)。預設為 8080。 |
BIFROST_API_KEY |
(未設定) | src/app/api/v1/relay/chat/completions/bifrost/route.ts |
Bifrost 閘道的 API 金鑰(以 Authorization: Bearer ... 傳送)。若未設定,路由會預期請求攜帶有效的 OmniRoute API 金鑰;此金鑰僅供閘道端驗證使用。 |
BIFROST_STREAMING_ENABLED |
true |
src/app/api/v1/relay/chat/completions/bifrost/route.ts |
設為 true 時,Bifrost sidecar 路由會透過閘道以 SSE 將回應串流傳回,而非使用 TS 串流執行器。設為 0 可強制透過閘道傳回非串流 JSON 回應。 |
BIFROST_TIMEOUT_MS |
30000 |
src/app/api/v1/relay/chat/completions/bifrost/route.ts |
代理至 Bifrost 閘道時的單一請求逾時時間(毫秒)。逾時時,路由會透過 X-Bifrost-Fallback 標頭傳回 TS 中繼路徑。 |
OMNIROUTE_BIFROST_KEY |
(未設定) | src/app/api/v1/relay/chat/completions/bifrost/route.ts |
BIFROST_API_KEY 的別名(供透過 OMNIROUTE_* 讀取環境變數的指令碼使用)。兩者皆有設定時,以 BIFROST_API_KEY 為優先。 |
OMNIROUTE_RELAY_BACKEND |
ts / auto |
src/app/api/v1/relay/chat/completions/routingBackend.ts |
/api/v1/relay/chat/completions 的中繼後端:ts | bifrost | auto。ts = TypeScript 中繼(未設定 Bifrost 時的預設值);auto 會在已設定 BIFROST_BASE_URL 且 BIFROST_ENABLED ≠ 0 時選用 Bifrost,若 sidecar 無法連線則自動回退至 TS;bifrost 會強制使用 Bifrost(嚴格模式,不回退)。驗證/速率限制/注入防護/允許清單一律會先在 Next 路由中執行。回應會攜帶 X-Routing-Backend / X-Routing-Fallback / X-Routing-Fallback-Reason。 |
RELAY_ROUTING_BACKEND |
(未設定) | src/app/api/v1/relay/chat/completions/routingBackend.ts |
OMNIROUTE_RELAY_BACKEND 可接受的別名(使用相同的 ts | bifrost | auto 值)。若兩者皆有設定,則以 OMNIROUTE_RELAY_BACKEND 為優先。 |
OMNIROUTE_BIFROST_FAILURE_COOLDOWN_MS |
5000 |
src/app/api/v1/relay/chat/completions/bifrostCooldown.ts |
在 auto 模式下,Bifrost sidecar 躍點失敗後,relay 再次嘗試 sidecar 前的冷卻時間(毫秒);冷卻期間會直接路由至 TS 路徑,之後再重新探測。0 表示停用。僅在 OMNIROUTE_RELAY_BACKEND=auto 時適用。 |
OMNIROUTE_TLS_CERT |
(未設定) | bin/cli/commands/serve.mjs |
PEM TLS 憑證的路徑,用於透過 HTTPS 提供 omniroute serve(等同於 --tls-cert)。必須與 OMNIROUTE_TLS_KEY 搭配使用;之後獨立伺服器會在同一個監聽器上終止 TLS(wss:// 可維持不變正常運作)。未設定 → 一般 HTTP。若僅提供憑證或金鑰其中之一,或路徑無法讀取,系統會記錄警告並維持使用 HTTP。 |
OMNIROUTE_TLS_KEY |
(未設定) | bin/cli/commands/serve.mjs |
omniroute serve HTTPS 所使用的 PEM TLS 私密金鑰路徑(等同於 --tls-key)。必須與 OMNIROUTE_TLS_CERT 搭配使用。請參閱 OMNIROUTE_TLS_CERT。 |
OMNIROUTE_LOCAL_ENDPOINTS_ENABLED |
0 |
src/lib/security/localEndpoints.ts |
/api/local/* 路由的總開關。未設定或設為 0 時,所有 /api/local/* 路由在正式環境中都會傳回 503。在非 loopback 部署中,必須設為 1 才能啟用 Redis 啟動器和類似的一鍵式本機服務啟動工具。另搭配 isLocalOnlyPath() 路由防護分類提供雙重保障(src/server/authz/routeGuard.ts 中的 LOCAL_ONLY_API_PREFIXES)。 |
OMNIROUTE_LOCAL_ENDPOINTS_TOKEN |
(未設定) | src/lib/security/localEndpoints.ts |
提供給非 loopback /api/local/* 呼叫端(例如桌面應用程式)使用的 Bearer token。設定後,來自非 loopback IP 的請求必須攜帶 Authorization: Bearer <token>。在非 loopback 部署中將 OMNIROUTE_LOCAL_ENDPOINTS_ENABLED=1 時,此項為必要設定。 |
OMNIROUTE_REDIS_CONTAINER_NAME |
omniroute-redis |
bin/cli/commands/redis.mjs |
一鍵式 Redis 啟動器(omniroute redis up)的容器名稱。CLI 與 RedisLauncherPanel GUI 都會使用此名稱。 |
OMNIROUTE_REDIS_HOST_PORT |
6379 |
bin/cli/commands/redis.mjs |
一鍵式 Redis 啟動器的主機連接埠。如果主機已繫結 6379,請調高此值。容器的內部連接埠仍維持 6379。 |
OMNIROUTE_REDIS_BIND_HOST |
127.0.0.1 |
bin/cli/commands/redis.mjs |
一鍵式 Redis 啟動器發布服務的主機介面。啟動器會在不設定密碼的情況下啟動 Redis,因此繫結至 0.0.0.0 會讓區域網路中的每台主機都能存取未經驗證的 Redis——只有在您自行為該執行個體設定密碼時,才應擴大繫結範圍。 |
REDIS_BIND_HOST |
127.0.0.1 |
docker-compose.yml |
docker-compose 發布 Redis sidecar 的主機介面(#9286)。Compose Redis 執行時未設定 requirepass;應用程式容器透過 Compose 網路(redis:6379)存取它——發布的連接埠僅供主機端工具使用。0.0.0.0 會將未經驗證的 Redis 暴露給整個區域網路。 |
REDIS_PORT |
6379 |
docker-compose.yml |
Compose Redis sidecar 的主機連接埠。 |
APP_BIND_HOST |
127.0.0.1 |
docker-compose.yml, docker-compose.prod.yml |
docker-compose 用來發布應用程式自身的儀表板/API/即時 WS 連接埠的主機介面 (#12568)。由於 .env.example 預設設定為 REQUIRE_API_KEY=false,使用 0.0.0.0 會將匿名 /v1 LLM Proxy 暴露給整個 LAN/WAN——只有在設定 REQUIRE_API_KEY=true,或前端的反向 Proxy 會強制執行其自身驗證時,才應擴大監聽範圍。 |
QDRANT_BIND_HOST |
127.0.0.1 |
docker-compose.yml |
docker-compose 用來發布 Qdrant 記憶體 sidecar 的主機介面 (#12578)。LAN 暴露風險的考量與 REDIS_BIND_HOST 相同。 |
BIFROST_BIND_HOST |
127.0.0.1 |
docker-compose.yml |
docker-compose 用來發布 Bifrost 路由器 sidecar 的主機介面 (#12578)。LAN 暴露風險的考量與 REDIS_BIND_HOST 相同。 |
REDIS_KEY_PREFIX |
omniroute: |
src/shared/utils/rateLimiter.ts |
套用至每個 OmniRoute Redis 鍵的命名空間前綴(速率限制器、驗證快取、配額儲存區、預熱斷路器)。當 Redis 執行個體與其他應用程式共用時,可防止鍵衝突 (#11042)。 |
OMNIROUTE_INTERNAL_SERVICE_TOKEN |
(未設定 — 機制已停用) | src/lib/api/internalServiceAuth.ts |
用於保留身分之內部 REST 跳轉的共用密鑰 (#9260):OmniRoute 元件呼叫其他本機 OmniRoute 路由時,會將其作為 x-omniroute-internal-service-token 傳送,以保留原始呼叫者身分。使用 timingSafeEqual 進行比較。 |
OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE |
(未設定) | src/lib/api/internalServiceAuth.ts |
內部服務權杖的密鑰檔案變體:其內容去除前後空白後即為權杖的檔案路徑。僅在未設定行內變數時使用。 |
OPENROUTER_PROVIDER_STATS_ENABLED |
true |
src/lib/catalog/openrouterProviderStats.ts |
使用 OpenRouter 每週排名統計資料充實儀表板的提供者清單 (#9324)。預設啟用;設定為 false 可完全略過背景擷取(非阻塞,且絕不會導致致命錯誤)。 |
OPENROUTER_PROVIDER_STATS_TTL_MS |
86400000 (24 小時) |
src/lib/catalog/openrouterProviderStats.ts |
OpenRouter 提供者統計快照的快取 TTL,以毫秒為單位。 |
OMNIROUTE_REDIS_IMAGE |
redis:7-alpine |
bin/cli/commands/redis.mjs |
一鍵式 Redis 啟動器所使用的 Redis 映像檔。可視需要覆寫為 redis:8-alpine 或私有 Registry 映像。 |
QDRANT_HOST |
qdrant |
(選用的叢集設定檔) | 啟用 --profile memory 時 Qdrant sidecar 的主機名稱。預設指向網路內的 qdrant 服務名稱;若使用外部部署,請覆寫此值。僅在程式碼中 qdrantEnabled 為 true 時使用(src/lib/memory/vectorStore.ts:108)。 |
QDRANT_PORT |
6333 |
(選用的叢集設定檔) | Qdrant sidecar 的 REST 連接埠。 |
QDRANT_GRPC_PORT |
6334 |
(選用的叢集設定檔) | Qdrant sidecar 的 gRPC 連接埠。供偏好使用 gRPC 而非 REST 進行串流操作的用戶端程式庫使用。 |
QDRANT_API_KEY |
(未設定) | (選用的叢集設定檔) | Qdrant Cloud 或經過驗證的內部部署執行個體所使用的選用 API 金鑰。留空 → 不傳送 api-key 標頭。 |
QDRANT_COLLECTION |
omniroute-memory |
(選用的叢集設定檔) | OmniRoute 對話記憶嵌入向量的集合名稱。首次執行時會以 QDRANT_VECTOR_SIZE 維度建立。 |
QDRANT_EMBEDDING_MODEL |
text-embedding-3-small |
(選用的叢集設定檔) | 記錄於 Qdrant 集合中繼資料的預設嵌入模型名稱。實際的嵌入向量由 OmniRoute 設定中的 embeddingModel 欄位所指向的提供者產生。 |
QDRANT_VECTOR_SIZE |
1536 |
(選用的叢集設定檔) | 嵌入向量維度。必須與用來產生嵌入向量的模型相符(text-embedding-3-small → 1536;ada-002 → 1536;nomic-embed-text → 768)。 |
QDRANT_HNSW_EF_CONSTRUCT |
128 |
(選用的叢集設定檔) | HNSW 索引建構時的準確度。值越高 = 建構越慢、搜尋越快。 |
OMNIROUTE_ROTATION_ENABLED |
true |
open-sse/services/rotationConfig.ts |
由操作人員設定帳戶輪替功能的總開關。設為 false 時,下方所有 OMNIROUTE_ROTATE_* 類別皆不會觸發帳戶後援切換(總開關關閉狀態也會封鎖預設啟用的 429/500/502 類別)。可讓監督前端(例如 VibeProxy 桌面應用程式)將自身的輪替規則同步至後端的帳戶後援切換引擎。 |
OMNIROUTE_ROTATION_RATE_LIMIT_RESET_SECONDS |
0 |
open-sse/services/rotationConfig.ts |
當上游未提供明確的重設提示時,套用至受速率限制帳戶的冷卻時間(秒)。0 = 使用引擎的預設冷卻時間,而非固定的覆寫值。 |
OMNIROUTE_ROTATION_DISABLE_TAG_WITHOUT_RESET |
true |
open-sse/services/rotationConfig.ts |
前端「沒有重設時間時,不要標記為已達速率限制」偏好設定的鏡像。 |
OMNIROUTE_ROTATE_ON_429 |
true |
open-sse/services/rotationConfig.ts |
針對 429 錯誤啟用依狀態碼區分的後援機制。當設為 false 時(且 OMNIROUTE_ROTATION_ENABLED=true),429 將不再觸發帳戶輪替,而是改為傳回用戶端。 |
OMNIROUTE_ROTATE_429_THRESHOLD |
1 |
open-sse/services/rotationConfig.ts |
在 OMNIROUTE_ROTATE_429_WINDOW_SECONDS 期間內,觸發帳戶輪替所需的 429 錯誤數量。1(預設值)會立即輪替,以保留既有行為。 |
OMNIROUTE_ROTATE_429_WINDOW_SECONDS |
120 |
open-sse/services/rotationConfig.ts |
計算 429 錯誤以判定是否達到 OMNIROUTE_ROTATE_429_THRESHOLD 的滑動時間窗口(秒)。 |
OMNIROUTE_ROTATE_ON_500 |
true |
open-sse/services/rotationConfig.ts |
針對 5xx 伺服器錯誤啟用依狀態碼區分的後援機制(不包括具有自身分類的 502)。當設為 false 時,這些錯誤將不再觸發帳戶輪替。 |
OMNIROUTE_ROTATE_500_THRESHOLD |
1 |
open-sse/services/rotationConfig.ts |
在 OMNIROUTE_ROTATE_500_WINDOW_SECONDS 期間內,觸發帳戶輪替所需的 5xx 錯誤數量。1(預設值)會立即輪替。 |
OMNIROUTE_ROTATE_500_WINDOW_SECONDS |
120 |
open-sse/services/rotationConfig.ts |
計算 5xx 錯誤以判定是否達到 OMNIROUTE_ROTATE_500_THRESHOLD 的滑動時間窗口(秒)。 |
OMNIROUTE_ROTATE_ON_502 |
true |
open-sse/services/rotationConfig.ts |
針對 502(閘道錯誤)錯誤啟用依狀態碼區分的後援機制。當設為 false 時,502 錯誤將不再觸發帳戶輪替。 |
OMNIROUTE_ROTATE_502_THRESHOLD |
1 |
open-sse/services/rotationConfig.ts |
在 OMNIROUTE_ROTATE_502_WINDOW_SECONDS 期間內,觸發帳戶輪替所需的 502 錯誤數量。1(預設值)會立即輪替。 |
OMNIROUTE_ROTATE_502_WINDOW_SECONDS |
120 |
open-sse/services/rotationConfig.ts |
計算 502 錯誤以判定是否達到 OMNIROUTE_ROTATE_502_THRESHOLD 的滑動時間窗口(秒)。 |
OMNIROUTE_ROTATE_ON_400 |
false |
open-sse/services/rotationConfig.ts |
選用(預設為關閉):設為 true 時,一般的 400(錯誤請求)也會觸發帳戶輪替。此設定僅會擴充既有行為,不會阻止引擎的既有機制:若 400 帶有速率限制/配額相關文字,無論此旗標為何,仍會進行故障轉移。 |
OMNIROUTE_ROTATE_400_THRESHOLD |
1 |
open-sse/services/rotationConfig.ts |
在 OMNIROUTE_ROTATE_400_WINDOW_SECONDS 期間內,觸發帳戶輪替所需的 400 錯誤數量(僅在 OMNIROUTE_ROTATE_ON_400=true 時才會採用此設定)。 |
OMNIROUTE_ROTATE_400_WINDOW_SECONDS |
120 |
open-sse/services/rotationConfig.ts |
用於計算達到 OMNIROUTE_ROTATE_400_THRESHOLD 所需 400 錯誤數量的滑動時間視窗(秒)。 |
Claude 預熱排程器
Section titled “Claude 預熱排程器”透過 cron 驅動,為已選擇啟用的 Anthropic OAuth 連線執行預熱,讓 5 小時的速率限制時間視窗由簡單的排程請求開啟,而非由第一個實際請求開啟(#8848)。除非 OMNIROUTE_WARMUP_ENABLED 為真值,且連線已在 settings.claudeWarmup.connections 中標記,否則排程器會維持關閉;即使環境變數已啟用,若連線清單為空,也不會預熱任何連線。
| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
OMNIROUTE_WARMUP_ENABLED |
(未設定 → 關閉) | src/lib/warmupScheduler.ts |
預熱排程器的總開關。接受 1/true/yes/on(不區分大小寫,並會去除前後空白)。任何其他值或未設定時,排程器都會維持關閉。 |
OMNIROUTE_WARMUP_CRON |
0 7 * * * |
src/lib/warmupScheduler.ts |
預熱執行週期的五欄位 cron 運算式;無論主機時鐘為何,皆以 America/Los_Angeles(Anthropic 的重設時區)計算。 |
OMNIROUTE_WARMUP_CONCURRENCY |
3 |
src/lib/warmupScheduler.ts |
每個執行週期可平行預熱的連線數量。限制在 1-10 之間;若值不是數字,則回退為 3。 |
OMNIROUTE_WARMUP_MODEL |
claude-3-5-haiku-20241022 |
src/lib/warmupScheduler.ts |
預熱請求使用的模型。僅當您的方案無法使用預設模型時才覆寫此設定;請選擇仍可開啟時間視窗的最便宜模型。 |
瀏覽器登入 VNC 工作階段與資料目錄別名
Section titled “瀏覽器登入 VNC 工作階段與資料目錄別名”容器化的 Chromium+VNC,用於以互動方式擷取瀏覽器登入憑證(/api/vnc-session),另加一個舊版 DATA_DIR 別名。所有設定皆為選用——VNC 預設值以隨附的 omniroute-vnc-chromium:local 映像檔為目標,僅在使用自訂容器映像檔、連接埠或調整生命週期時才需覆寫。
| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
OMNIROUTE_VNC_IMAGE |
omniroute-vnc-chromium:local |
src/lib/vncSession/manifest.ts |
Chromium+VNC 登入容器的 Docker 映像標籤。請建置 docker/vnc-browser/chromium,或將此變數指向自訂映像。 |
OMNIROUTE_DOCKER_BIN |
docker |
src/lib/vncSession/manifest.ts |
用於啟動 VNC 容器的容器執行階段二進位檔(例如設為 podman)。 |
OMNIROUTE_VNC_CONTAINER_VNC_PORT |
3000 |
src/lib/vncSession/manifest.ts |
容器內公開的 VNC/noVNC 連接埠。 |
OMNIROUTE_VNC_CONTAINER_CDP_PORT |
9223 |
src/lib/vncSession/manifest.ts |
容器內的 Chrome DevTools Protocol 連接埠。 |
OMNIROUTE_VNC_CONTAINER_PROFILE_DIR |
/config |
src/lib/vncSession/manifest.ts |
容器內的 Chromium 設定檔目錄路徑。 |
OMNIROUTE_VNC_PROFILE_DIR |
$HOME/.omniroute/browser-login-profiles |
src/lib/vncSession/manifest.ts |
用於儲存持久化瀏覽器登入設定檔的主機目錄。 |
OMNIROUTE_VNC_IDLE_MS |
600000(10 分鐘) |
src/lib/vncSession/manifest.ts |
回收非作用中 VNC 工作階段前的閒置逾時(毫秒)。 |
OMNIROUTE_VNC_MAX_MS |
1800000(30 分鐘) |
src/lib/vncSession/manifest.ts |
單一 VNC 工作階段生命週期的硬性上限(毫秒)。 |
OMNIROUTE_VNC_MAX_SESSIONS |
4 |
src/lib/vncSession/manifest.ts |
VNC 並行工作階段的數量上限。 |
OMNIROUTE_VNC_READY_MS |
45000 |
src/lib/vncSession/manifest.ts |
等待容器化瀏覽器進入 CDP 就緒狀態的逾時(毫秒)。 |
OMNIROUTE_VNC_HARVEST_MS |
20000 |
src/lib/vncSession/manifest.ts |
登入完成後擷取所捕獲工作階段/Cookie 的逾時(毫秒)。 |
OMNIROUTE_VNC_CHROMIUM_ARGS |
--remote-debugging-port=9222 --no-first-run --no-default-browser-check |
src/lib/vncSession/manifest.ts |
傳遞給容器化 Chromium 的額外命令列旗標。 |
OMNIROUTE_VNC_NETWORK |
omniroute-vnc-browser-login |
src/lib/vncSession/manifest.ts |
VNC 登入容器加入的專用 Docker 網路(#12571),而非預設橋接網路,讓同層容器無法存取其 CDP 橋接連接埠。 |
VIBEPROXY_DATA_DIR |
(未設定) | open-sse/services/notionThreadSessions.ts |
DATA_DIR 的舊版別名,僅在 DATA_DIR 和 OMNIROUTE_DATA_DIR 均未設定時檢查。用於定位 Notion Web 執行緒工作階段快取(<dir>/notion-web-thread-sessions.json)。 |
26. 測試與 E2E 工具
Section titled “26. 測試與 E2E 工具”由 scripts/dev/run-next-playwright.mjs、scripts/dev/smoke-electron-packaged.mjs、
scripts/dev/run-ecosystem-tests.mjs 和 scripts/build/uninstall.mjs 使用。在正式環境部署中,請勿設定以下任何
值。
| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
OMNIROUTE_E2E_BOOTSTRAP_MODE |
auth |
scripts/dev/run-next-playwright.mjs |
Playwright 執行器的 E2E 啟動模式(auth、fresh、reuse)。 |
OMNIROUTE_E2E_PASSWORD |
備援為 INITIAL_PASSWORD |
scripts/dev/run-next-playwright.mjs |
注入 Playwright 環境的管理員密碼。 |
OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK |
true |
scripts/dev/run-next-playwright.mjs |
在 Playwright 執行期間停用本機健康檢查輪詢。 |
OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK |
true |
scripts/dev/run-next-playwright.mjs |
在測試期間停用 OAuth 權杖健康檢查迴圈。 |
OMNIROUTE_HEALTHCHECK_SKIP_PROVIDERS |
(未設定) | src/lib/tokenHealthCheck.ts |
從主動權杖重新整理掃描中排除的提供者,以逗號分隔(例如 codex,openai)。這是完全停用健康檢查的針對性替代方案——短 TTL 提供者會繼續重新整理,而級聯提供者則維持僅被動回應。 |
OMNIROUTE_HIDE_HEALTHCHECK_LOGS |
true |
scripts/dev/run-next-playwright.mjs |
隱藏 Playwright 標準輸出中的健康檢查雜訊。 |
OMNIROUTE_PLAYWRIGHT_SKIP_BUILD |
0 |
scripts/dev/run-next-playwright.mjs |
在 Playwright 啟動前略過 Next.js 正式環境建置(CI 最佳化)。 |
OMNIROUTE_SKIP_UNINSTALL_HOOK |
0 |
scripts/build/uninstall.mjs |
略過 OmniRoute 解除安裝掛鉤(供 CI 用來保持 node_modules 完整)。 |
ECOSYSTEM_SERVER_WAIT_MS |
180000 |
scripts/dev/run-ecosystem-tests.mjs |
執行生態系統/通訊協定測試前,等待伺服器進入健康狀態的時間(毫秒)。 |
ELECTRON_SMOKE_URL |
http://127.0.0.1:20128/login |
scripts/dev/smoke-electron-packaged.mjs |
Electron 冒煙測試工具預期已封裝應用程式提供服務的 URL。 |
ELECTRON_SMOKE_TIMEOUT_MS |
45000 |
scripts/dev/smoke-electron-packaged.mjs |
冒煙測試工具放棄前的總逾時時間(毫秒)。 |
ELECTRON_SMOKE_SETTLE_MS |
2000 |
scripts/dev/smoke-electron-packaged.mjs |
頁面載入後的穩定等待時間(毫秒)。 |
ELECTRON_SMOKE_APP_EXECUTABLE |
(自動) | scripts/dev/smoke-electron-packaged.mjs |
已封裝 Electron 可執行檔的明確路徑。 |
ELECTRON_SMOKE_DATA_DIR |
(tmpdir) | scripts/dev/smoke-electron-packaged.mjs |
Electron 冒煙測試執行所使用的資料目錄。 |
ELECTRON_SMOKE_KEEP_DATA |
0 |
scripts/dev/smoke-electron-packaged.mjs |
設為 1 可在執行後保留冒煙測試資料目錄。 |
ELECTRON_SMOKE_STREAM_LOGS |
0 |
scripts/dev/smoke-electron-packaged.mjs |
設為 1 可在執行期間將 Electron 日誌串流至標準輸出。 |
ELECTRON_SMOKE_COLD_RESTART |
0 |
scripts/dev/smoke-electron-packaged.mjs |
#7592:使用相同的資料目錄重新啟動,並斷言第二次啟動時會選取原生 SQLite 驅動程式。 |
CLI_DEVIN_BIN |
(PATH 查找) | open-sse/executors/devin-cli.ts |
覆寫 Devin CLI 二進位檔案路徑。 |
文件翻譯管線
Section titled “文件翻譯管線”供 scripts/i18n/run-translation.mjs(npm run i18n:run 命令)使用。
這五個變數預設皆未設定——請僅在應能執行文件翻譯器的機器上,於 .env 中設定這些變數。
| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
OMNIROUTE_TRANSLATION_API_URL |
(未設定) | scripts/i18n/run-translation.mjs |
翻譯後端的 OpenAI 相容基底 URL。 |
OMNIROUTE_TRANSLATION_API_KEY |
(未設定) | scripts/i18n/run-translation.mjs |
翻譯後端的 Bearer 權杖(絕不記錄於日誌中)。 |
OMNIROUTE_TRANSLATION_MODEL |
(未設定) | scripts/i18n/run-translation.mjs |
模型 ID,例如 gpt-4o-mini 或 cx/gpt-5.4-mini。 |
OMNIROUTE_TRANSLATION_TIMEOUT_MS |
60000 |
scripts/i18n/run-translation.mjs |
每個請求的逾時時間(毫秒)。 |
OMNIROUTE_TRANSLATION_CONCURRENCY |
4 |
scripts/i18n/run-translation.mjs |
處理多個檔案/語系時的平行翻譯請求數。 |
27. Radar 資訊源(自行託管)
Section titled “27. Radar 資訊源(自行託管)”由 RADAR_ENABLED 功能旗標控制的選用附加功能(預設關閉——此功能旗標透過「設定」/資料庫切換,而非環境變數;請參閱
docs/frameworks/RADAR.md)。
下方前四個變數是自行託管或分支資訊源及支持者金鑰流程的選用覆寫設定。第五個 RADAR_ADMIN_URL 則是另一個沒有預設值的連結,指向擁有者的
私人操作面板。完整模組文件及其
端對端啟用與引導式設定流程,請參閱 docs/frameworks/RADAR.md。
一般的首頁/變更記錄公告讀取器並非透過環境
變數設定,且不依賴 RADAR_ENABLED 功能旗標。它僅透過
GET 讀取 src/shared/utils/releaseNotes.ts 中宣告的公開儲存庫
news.json URL;略過項目的 ID 仍會保留在瀏覽器本機儲存空間中。
| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
RADAR_FEED_URL |
https://radar.omniroute.online |
src/lib/radar/{sync,referralsSync,offersSync,intelSync}.ts |
由個別簽署的目錄、推薦、支持者優惠及 Intel 資訊源共用的基底 URL。可覆寫為指向自行託管或分支的服務。 |
RADAR_FEED_PUBKEY |
(預先固定的預設金鑰) | src/lib/radar/pinnedKeys.ts |
用於驗證自訂資訊源簽章的 Ed25519 公開金鑰(base64-DER SPKI 或 PEM)。 |
RADAR_CONTRIBUTOR_CLAIM_URL |
https://radar.omniroute.online/auth/github |
src/lib/radar/links.ts |
儀表板上「我是貢獻者」按鈕所開啟的 URL(GitHub OAuth 支持者金鑰申領流程)。 |
RADAR_SUPPORTER_PLANS_URL |
https://radar.omniroute.online/planos |
src/lib/radar/links.ts |
儀表板上「支持此專案」按鈕所開啟的 URL(付款/方案頁面)。 |
RADAR_ADMIN_URL |
(未設定) | src/lib/radar/links.ts |
僅限擁有者使用的私人操作面板連結。除透過 SSH 轉送的 HTTP 回送位址外,皆須使用 HTTPS;未設定或無效的值不會建立導覽項目。 |
稽核:已移除/失效的變數
Section titled “稽核:已移除/失效的變數”下列變數曾出現在舊版 .env.example 中,但在目前的程式碼庫內沒有執行階段參照。這些變數已被移除:
| 變數 | 原因 |
|---|---|
STORAGE_DRIVER=sqlite |
任何原始碼檔案皆未讀取此變數。SQLite 是唯一支援的驅動程式,因此不需要選擇。 |
INSTANCE_NAME=omniroute |
存在於舊版文件/環境變數範本中,但執行階段並未使用。未來的多執行個體功能可能會重新採用。 |
SQLITE_MAX_SIZE_MB=2048 |
原始碼中未參照此變數。資料庫大小未受人為限制。 |
SQLITE_CLEAN_LEGACY_FILES=true |
原始碼中未參照此變數。舊版檔案清理功能可能已被移除。 |
CLI_ROO_BIN |
未在 src/shared/services/cliRuntime.ts 中註冊。 |
CLI_KIMI_CODING_BIN |
未在 src/shared/services/cliRuntime.ts 中註冊(Kimi Coding 使用 OAuth,而非 CLI 二進位檔案)。 |
IFLOW_OAUTH_CLIENT_ID / IFLOW_OAUTH_CLIENT_SECRET |
原始碼中任何位置皆未參照。 |
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 |
已於 v3.8.0 移除。執行階段不再讀取這些環境變數——憑證來自 Dashboard/data/provider-credentials.json/加密資料庫。 |
CURSOR_PROTOBUF_DEBUG |
已於 v3.8.0 移除。Cursor 執行器使用 CURSOR_DEBUG/CURSOR_STREAM_DEBUG(請參閱 §22)。 |
CLI_COMPAT_KIRO |
已於 v3.8.0 移除。Kiro 位於 CLI_COMPAT_OMITTED_PROVIDER_IDS 中——其切換設定不會產生任何效果。 |
QIANFAN_API_KEY |
已於 v3.8.0 與其他未使用的提供者 API 金鑰預留項目一併移除。 |
| 變數 | 舊版 .env.example 值 |
實際程式碼預設值 | 修正 |
|---|---|---|---|
APP_LOG_RETENTION_DAYS |
90 |
7 |
✅ 移除具誤導性的值;將 7 記錄為預設值 |
CALL_LOG_RETENTION_DAYS |
90 |
7 |
✅ 移除具誤導性的值;將 7 記錄為預設值 |
OpenCode 設定重新產生(臨時工具)
Section titled “OpenCode 設定重新產生(臨時工具)”由 scripts/ad-hoc/regen-opencode-config.ts 使用,以重新產生 opencode.json,
其中包含從執行中的 OmniRoute 執行個體擷取而來的正確 limit.context 與
limit.output 值。正常運作不需要其中任何一項——此指令碼僅供開發者作為工具使用。
| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
OMNIROUTE_URL |
http://localhost:20128 |
scripts/ad-hoc/regen-opencode-config.ts |
要查詢 /v1/models 的 OmniRoute 執行個體基底 URL。 |
OMNIROUTE_KEY |
(未設定) | scripts/ad-hoc/regen-opencode-config.ts |
用於向 OmniRoute /v1/models 端點進行驗證的 API 金鑰。未設定時會改用 OPENCODE_API_KEY。 |
OPENCODE_API_KEY |
(未設定) | scripts/ad-hoc/regen-opencode-config.ts |
寫入重新產生之 opencode.json 的 OpenCode 樣式 API 金鑰(sk-...)。未設定時會改用 OMNIROUTE_KEY。 |
壓縮離線評估工具(臨時工具)
Section titled “壓縮離線評估工具(臨時工具)”供離線壓縮評估 CLI scripts/compression-eval/index.ts 使用。
正常運作不需要此工具——僅供開發人員使用。
| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
OMNIROUTE_EVAL_CREDENTIALS |
{}(空) |
scripts/compression-eval/index.ts |
由操作人員提供的 JSON 憑證,供離線壓縮評估 CLI 所測試的提供者使用(以 JSON.parse 解析)。若要進行試執行,請保持未設定。 |
VNC 瀏覽器工作階段
Section titled “VNC 瀏覽器工作階段”由 src/lib/vncSession/manifest.ts 使用,以設定適用於瀏覽器自動化提供者、以 Docker 為基礎的無頭 Chromium 工作階段。所有變數皆為選填——預設值如下所示。
| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
OMNIROUTE_DOCKER_BIN |
docker |
src/lib/vncSession/manifest.ts |
用於啟動 VNC 容器的 Docker 二進位檔路徑。 |
OMNIROUTE_VNC_IMAGE |
omniroute-vnc-chromium:local |
src/lib/vncSession/manifest.ts |
VNC Chromium 容器的 Docker 映像。 |
OMNIROUTE_VNC_CHROMIUM_ARGS |
(內建旗標) | src/lib/vncSession/manifest.ts |
傳遞給容器內瀏覽器的額外 Chromium CLI 引數。 |
OMNIROUTE_VNC_CONTAINER_VNC_PORT |
3000 |
src/lib/vncSession/manifest.ts |
容器內的 VNC 連接埠。 |
OMNIROUTE_VNC_CONTAINER_CDP_PORT |
9223 |
src/lib/vncSession/manifest.ts |
容器內的 Chrome DevTools Protocol 連接埠。 |
OMNIROUTE_VNC_CONTAINER_PROFILE_DIR |
/config |
src/lib/vncSession/manifest.ts |
容器內的設定檔目錄。 |
OMNIROUTE_VNC_PROFILE_DIR |
(未設定) | src/lib/vncSession/manifest.ts |
用於保存瀏覽器設定檔的主機端目錄。 |
OMNIROUTE_VNC_IDLE_MS |
600000 |
src/lib/vncSession/manifest.ts |
VNC 工作階段被回收前的閒置逾時(毫秒)。 |
OMNIROUTE_VNC_MAX_MS |
1800000 |
src/lib/vncSession/manifest.ts |
工作階段的最長持續時間(毫秒)。 |
OMNIROUTE_VNC_MAX_SESSIONS |
4 |
src/lib/vncSession/manifest.ts |
VNC 工作階段的最大並行數。 |
OMNIROUTE_VNC_READY_MS |
45000 |
src/lib/vncSession/manifest.ts |
瀏覽器就緒逾時(毫秒)。 |
OMNIROUTE_VNC_HARVEST_MS |
20000 |
src/lib/vncSession/manifest.ts |
回收/清理逾時(毫秒)。 |
OMNIROUTE_VNC_NETWORK |
omniroute-vnc-browser-login |
src/lib/vncSession/manifest.ts |
容器所加入的專用 Docker 網路(#12571),不使用預設橋接網路。 |
VIBEPROXY_DATA_DIR |
(未設定) | open-sse/services/notionThreadSessions.ts |
用於保存 Notion 執行緒工作階段的目錄。 |
內部服務驗證
Section titled “內部服務驗證”| 變數 | 預設值 | 說明 |
|---|---|---|
OMNIROUTE_INTERNAL_SERVICE_TOKEN |
– | 用於管理平面服務對服務驗證的內嵌權杖。 |
OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE |
– | 包含內部服務權杖的檔案路徑(容器中建議使用;會覆寫內嵌變數)。 |
OpenRouter 提供者統計資料
Section titled “OpenRouter 提供者統計資料”| 變數 | 預設值 | 說明 |
|---|---|---|
OPENROUTER_PROVIDER_STATS_ENABLED |
true |
設為 false 可略過擷取 OpenRouter 各提供者的統計資料,以進行目錄增補。 |
OPENROUTER_PROVIDER_STATS_TTL_MS |
3600000 |
已擷取之 OpenRouter 提供者統計資料的快取 TTL(毫秒)。 |
內嵌 Redis 繫結
Section titled “內嵌 Redis 繫結”| 變數 | 預設值 | 說明 |
|---|---|---|
REDIS_BIND_HOST |
127.0.0.1 |
內嵌 Redis 服務的繫結位址。 |
REDIS_PORT |
6379 |
內嵌 Redis 服務的連接埠。 |
OMNIROUTE_REDIS_BIND_HOST |
– | 針對 OmniRoute 範圍設定的內嵌 Redis 繫結位址覆寫值。 |
24. v3.8.50 版本新增項目
Section titled “24. v3.8.50 版本新增項目”這些設定是在先前的環境契約快照之後引入的。
| 變數 | 預設值 | 原始檔案 | 說明 |
|---|---|---|---|
OMNIROUTE_CHAT_ADMISSION_QUEUE_MS |
2000 |
src/shared/middleware/chatBodyAdmission.ts |
在傳回可重試的 503 之前,等待重量級聊天准入名額的最長時間;短暫且有界限的等待會將代理程式的突發請求序列化,而非立即傳回 503。設為 0 可恢復立即拒絕。 |
OMNIROUTE_CHAT_ADMISSION_MAX_QUEUED_BYTES |
4194304 (4 MB) |
src/shared/middleware/chatBodyAdmission.ts |
准入等待的佇列位元組預算:限制整個處理程序中暫存的請求本文位元組總量,避免等待機制放大堆積記憶體用量 (#4380)。超出預算的等待會立即收到可重試的 503。 |
OMNIROUTE_CHAT_VIRTUAL_TTL_MS |
60000 (60 秒) |
src/shared/middleware/chatBodyAdmission.ts |
自 #10110 起已棄用且不執行任何操作:每工作階段的准入通道已移除,改為使用單一的處理程序全域預算。為維持設定相容性仍接受此變數,但會予以忽略。 |
OMNIROUTE_CHAT_VIRTUAL_MAX_SESSIONS |
64 |
src/shared/middleware/chatBodyAdmission.ts |
自 #10110 起已棄用且不執行任何操作:每工作階段的准入通道已移除,改為使用單一的處理程序全域預算。為維持設定相容性仍接受此變數,但會予以忽略。 |
OMNIROUTE_CHAT_VIRTUAL_LANES |
0(停用) |
open-sse/services/admission/runtime.ts |
自適應執行階段虛擬准入通道 (#9654):各租戶自適應閘門(系統 2)的主開關。這與上述已棄用的每連線通道變數(TTL_MS / MAX_SESSIONS,自 #10110 起不執行任何操作)不同。儀表板中有同名的功能旗標;環境變數的優先順序高於儀表板覆寫值;需要重新啟動。 |
OMNIROUTE_RUNNOW_TIMEOUT_MS |
30000 |
src/app/api/jobs/[id]/run-now/route.ts |
限制 run-now 呼叫在啟動佇列中的執行之前,等待進行中工作的最長時間。 |
ADOBE_FIREFLY_BROWSER_REFRESH |
已啟用 | open-sse/services/adobeFireflySession.ts |
透過帳戶範圍的 Chrome CDP 工作階段,讓 IMS 和瀏覽器風險狀態保持最新;設為 0 可停用。 |
ADOBE_FIREFLY_SESSION_DISK |
已啟用 | open-sse/services/adobeFireflySession.ts |
將修復後的 Adobe 工作階段持久化至 DATA_DIR 下;設為 0 可改用僅記憶體狀態。 |
ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS |
12000 |
open-sse/services/adobeFireflySession.ts |
Adobe Firefly 產生請求提交之間的最短間隔。 |
ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS |
15000 |
open-sse/services/adobeFireflySession.ts |
每三次成功提交 Adobe 請求後額外增加的靜默期。 |
ADOBE_FIREFLY_CHROME_HEADLESS |
0 |
open-sse/services/adobeFireflyBrowserLogin.ts |
僅供偵錯使用的真正無頭模式;Adobe colligo 通常會拒絕由此產生的風險工作階段。 |
CHROME_PATH |
自動偵測 | open-sse/executors/cloudflare-playground.ts, open-sse/executors/chatgpt-web-codex.ts |
當平台自動偵測不足時,由瀏覽器驅動的執行器所使用的選用 Chrome 執行檔絕對路徑。 |
TELEGRAM_BOT_TOKEN |
(未設定) | src/lib/telegram/config.ts |
用於啟用傳入 Webhook 並簽署 Mini App initData 的 BotFather 權杖。 |
TELEGRAM_WEBHOOK_SECRET |
(未設定) | src/lib/telegram/config.ts |
透過 setWebhook 註冊的共用密鑰,並在每次 Webhook 傳遞時,根據 X-Telegram-Bot-Api-Secret-Token 標頭進行驗證。Webhook 路徑必須設定此值;未設定表示 Webhook 傳遞將被拒絕並傳回 503。 |
TELEGRAM_DEFAULT_MODEL |
auto/chat |
src/lib/telegram/chatProxy.ts |
用於 Telegram 聊天回覆的模型。 |
TELEGRAM_BOT_API_BASE |
https://api.telegram.org |
src/lib/telegram/config.ts |
適用於代理伺服器或自行託管 Bot API 伺服器的 Bot API 基礎 URL 覆寫值。 |
TELEGRAM_WEBHOOK_TIMEOUT_MS |
60000 |
src/lib/telegram/config.ts |
對外 Bot API 呼叫的逾時時間(毫秒)。 |
OMNIROUTE_OPTIONAL_PACK_TAR |
1(已啟用) |
scripts/build/optionalPackStaging.mjs |
在為 Electron 獨立版目錄樹暫存選用 ML/瀏覽器套件時,設為 0 可略過產生 .tar.gz tarball(仍會產生套件目錄和 optional-packs.index.json)。桌面版發行工作流程會使用此設定來縮減成品上傳大小。 |
ChatGPT Web (Codex)
Section titled “ChatGPT Web (Codex)”無頭瀏覽器和對外工具通道的全域預設值。在儀表板中設定的連線值具有較高優先順序。
| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
CHATGPT_WEB_CODEX_CHROME_PATH |
(自動偵測) | open-sse/executors/chatgpt-web-codex.ts |
用於 npm、systemd 和 PM2 執行模式的明確 Chrome/Chromium 路徑。 |
CHROME_PATH |
(自動偵測) | open-sse/executors/chatgpt-web-codex.ts |
明確 Chrome/Chromium 路徑的共用備援值。 |
CHATGPT_WEB_CODEX_CDP_URL |
(未設定) | open-sse/executors/chatgpt-web-codex.ts |
內部 CDP 端點;Docker 使用位於連接埠 9223 的 Sidecar。 |
CDP_PROXY_TOKEN |
(未設定) | docker/chatgpt-web-codex-browser/cdp-proxy.mjs |
若已設定,每個傳送至 CDP Proxy Sidecar 的請求都必須在 X-Omni-Cdp-Token 標頭中附帶此值(#13679)。若未設定值,Proxy 將以未驗證方式轉送,此時僅由 Compose 網路 chatgpt-web-codex-net 的網路隔離提供保護。可使用 openssl rand -hex 32 產生。 |
CHATGPT_WEB_CODEX_TUNNEL_ID |
(未設定) | open-sse/executors/chatgpt-web-codex.ts |
用於本機 Codex 工具回合的全域 OpenAI 通道 ID。 |
CHATGPT_WEB_CODEX_RUNTIME_KEY |
(未設定) | open-sse/executors/chatgpt-web-codex.ts |
全域通道執行階段金鑰;絕不可輸出至記錄。 |
CHATGPT_WEB_CODEX_CONNECTOR_NAME |
OmniRoute Codex v2 |
open-sse/executors/chatgpt-web-codex.ts |
為 MCP 橋接器新建立之 ChatGPT 自訂連接器的確切名稱。 |
CODEX_CHATGPT_WEB_HOME |
<DATA_DIR>/chatgpt-web-codex |
open-sse/vendor/codex-chatgpt-web/config.ts |
用於瀏覽器、Broker 和通道狀態的專用目錄。 |
CODEX_CHATGPT_WEB_BROWSER_DIAGNOSTICS |
0 |
open-sse/vendor/codex-chatgpt-web/adapters/chatgpt-web/browser-worker.ts |
設為 1 時,會在每個檢查點擷取瀏覽器診斷影像。 |
CODEX_CHATGPT_WEB_LAUNCHER |
(未設定) | open-sse/vendor/codex-chatgpt-web/config.ts |
指向持久性 Launcher 二進位檔的選用絕對路徑。 |
CODEX_CHATGPT_WEB_BUN |
(自動偵測) | open-sse/vendor/codex-chatgpt-web/config.ts |
指向 Bun 執行階段二進位檔的選用絕對路徑。 |
CODEX_WEB_GPT_BUN |
(未設定) | open-sse/vendor/codex-chatgpt-web/config.ts |
CODEX_CHATGPT_WEB_BUN 的舊版備援值;新的設定使用正式名稱。 |
OmniConductor 橋接器
Section titled “OmniConductor 橋接器”長時間執行的 SSE 消費端,會將 OmniConductor 中樞任務鏡像至本機 A2A TaskManager(src/lib/conductor/)。選擇性啟用——只有設定 CONDUCTOR_HUB_URL 時才會啟動橋接器。僅限伺服器端:中樞權杖絕不可傳至瀏覽器。
| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
CONDUCTOR_HUB_URL |
(空白) | src/lib/conductor/boot.ts |
OmniConductor 中樞的基底 URL(例如 http://127.0.0.1:7910)。未設定 = 停用橋接器。 |
CONDUCTOR_HUB_TOKEN |
(空白) | src/lib/conductor/boot.ts |
SSE 資料流的中樞認證資訊——在中樞上建立一個 spokesperson 類型的對等端(POST /v1/peers,需管理員權限)。 |
CONDUCTOR_ORCHESTRATOR_TOKEN |
(空白) | src/lib/conductor/hubProxy.ts |
用於傳入 A2A→中樞任務委派(POST /v1/tasks)的認證資訊;未設定時會退回使用 CONDUCTOR_HUB_TOKEN。 |
CONDUCTOR_SPOKESPERSON_URL |
http://127.0.0.1:7920 |
src/lib/conductor/faroProxy.ts |
儀表板聊天代理(/api/conductor/ask)背後的 spokesperson(Faro)服務基底 URL。 |
配額感知排程
Section titled “配額感知排程”由 open-sse/services/combo.ts 與 src/lib/quota/quotaScheduler.ts 使用,用於請求前的權杖預算檢查。選擇性啟用——未設定時,預設路由行為維持不變。
| 變數 | 預設值 | 來源檔案 | 說明 |
|---|---|---|---|
OMNIROUTE_QUOTA_AWARE_ROUTING |
0 |
open-sse/services/combo.ts |
設為 1 時,若連線的每個時間窗權杖預算(rateLimitOverrides.tpm、資料表 provider_quota_state)在分派前無法負擔預估的請求成本,則略過該連線。未設定預算時採開放式容錯。 |
HagiCode
HagiCode 是智慧代理程式開發工作台,結合結構化工作流程、多代理程式執行與 Hero Dungeon 介面,將想法化為交付成果。
以更聰明、更快速且更有趣的智慧代理程式工作流程,打造實用的軟體。

- Smart結構化流程將意圖轉化為從構想到交付的可執行步驟。
- Efficient多代理程式工作流程讓研究、實作與審查並行進行。
- FunHero Dungeon 讓長時間的程式協作更直覺、更有參與感。