跳到內容
OmniRoute source

Codex CLI — Configuration with OmniRoute (中文 (繁體))

TOML 是唯一有效的格式。 現代版 Codex 僅會讀取 ~/.codex/config.toml (已使用 codex-cli 0.147.0 驗證:codex --help 說明 -c/--config 覆寫的是「從 ~/.codex/config.toml 載入」的設定)。舊版 ~/.codex/config.yaml 屬於舊式 npm CLI,會被無提示地忽略。 儀表板產生器(/api/cli-tools/apply,工具 codex)會以保守合併方式寫入 TOML—— 現有鍵值與其他提供者區塊都會保留,API 金鑰仍存放於 OMNIROUTE_API_KEY (絕不寫入檔案),而殘留的舊版 config.yaml 會以遷移提示回報,但不會遭到修改。

將 <YOUR_HOST> 與 <YOUR_KEY> 替換成你的值:

~/.codex/config.toml
model = "cx/gpt-5.5"
model_provider = "omniroute"
model_reasoning_effort = "xhigh"
model_context_window = 400000
model_auto_compact_token_limit = 350000
tool_output_token_limit = 32768 # 每次工具呼叫的歷史記錄儲存上限
[model_providers.omniroute]
name = "OmniRoute"
base_url = "http://<YOUR_HOST>:20128/v1"
env_key = "OMNIROUTE_API_KEY"
requires_openai_auth = false
wire_api = "responses"
Terminal window
# ~/.bashrc 或 ~/.zshrc——實際金鑰值,絕不可寫入 config.toml
export OMNIROUTE_API_KEY="<YOUR_KEY>"

macOS:內建於 ChatGPT 應用程式中的 Codex

Section titled “macOS:內建於 ChatGPT 應用程式中的 Codex”

如果你是透過 ChatGPT 桌面應用程式安裝 Codex,codex 二進位檔可能 只存在於應用程式套件內,尚未加入 shell 的 PATH。請將 資源目錄加入你的 shell 啟動檔案:

Terminal window
export PATH="/Applications/ChatGPT.app/Contents/Resources:$PATH"

開啟新的 shell,然後驗證:

Terminal window
command -v codex
codex --version

本機未驗證的 OmniRoute:使用佔位金鑰即可

Section titled “本機未驗證的 OmniRoute:使用佔位金鑰即可”

在第一個請求離開 CLI 之前,Codex 會驗證 env_key 所指定的環境變數 是否存在。如果你的本機 OmniRoute 執行個體不需要驗證, 使用任何非空白佔位值即可:

Terminal window
export OMNIROUTE_API_KEY="${OMNIROUTE_API_KEY:-local}"

如果你的 OmniRoute 伺服器受到保護或位於遠端,請改用真實金鑰。

常見主機選項

存取方式 URL
區域網路 http://192.168.0.1:20128/v1
Tailscale http://100.x.x.x:20128/v1
迴路位址 http://localhost:20128/v1

wire_api = "responses"——為何適用於所有模型

Section titled “wire_api = "responses"——為何適用於所有模型”

Codex CLI 已於 2026 年 2 月棄用 wire_api = "chat"(Chat Completions),現在要求使用 wire_api = "responses"(OpenAI Responses API)。自 v0.138 起,設定 wire_api = "chat" 會導致啟動時立即當機。

包括 GLM 和 Kimi 在內的許多提供者,目前仍只提供 Chat Completions 端點。DeepSeek V4 現在除了 Anthropic 相容端點之外,也提供原生 Responses API;OmniRoute 預設使用 Responses,並允許每個 DeepSeek 連線選擇 Anthropic 相容模式。

OmniRoute 會以透明方式解決此問題:

Codex CLI
→ wire_api = "responses"
→ POST /v1/responses (OmniRoute)
→ OmniRoute 選擇提供者的原生協定,並在需要時進行轉譯
→ POST /responses (DeepSeek V4) 或 /chat/completions (Mistral / GLM / Kimi / 其他)

使用 OmniRoute 時,你完全不需要額外的轉譯代理。所有模型都使用 wire_api = "responses"——其餘部分由 OmniRoute 處理。

wire_api 是預設值——此欄位預設為 "responses",可完全從 config.toml 省略。只有在需要明確記錄設定意圖時,才應明確設定此欄位。


欄位 說明
model_context_window 目前模型的 Token 總預算。請設為該模型標示的上限。
model_auto_compact_token_limit 觸發自動歷史記錄壓縮的閾值。上限:model_context_window 的 90% — 超過 90% 的值會被無提示地忽略。
tool_output_token_limit 歷史記錄中每次工具呼叫輸出可儲存的 Token 上限。避免單一大型工具回應占滿視窗。這不是最大輸出量 — 而是歷史記錄的儲存上限。
compact_prompt 壓縮時使用的系統提示詞內嵌覆寫設定(v0.138+)。

關於 model_max_output_tokens 的注意事項:此欄位不屬於 Codex CLI 設定結構描述的一部分(Codex Rust 程式碼庫中不存在)。若設定此欄位,系統會無提示地忽略。請勿依賴此欄位 — 請使用 tool_output_token_limit 控制歷史記錄中儲存的工具輸出量。

模型 OmniRoute ID 上下文視窗 auto_compact tool_output_limit
GPT-5.5 cx/gpt-5.5 可靠 400k(最大 1M) 350,000 32,768
Kimi K2.7(思考型) kmc/kimi-k2.7 131,072 112,000 32,768
Kimi K2.6 kmc/kimi-k2.6 131,072 112,000 32,768
GLM-5.2 / 5.2-max(思考型) glm/glm-5.2 131,072 112,000 32,768
MiMo V2.5 Pro(思考型) opencode-go/mimo-v2.5-pro 131,072 112,000 32,768
Qwen 3.7 Plus(思考型) opencode-go/qwen3.7-plus 32,768 28,000 16,384
DeepSeek V4 Pro(OllamaCloud) ollamacloud/deepseek-v4-pro 131,072 112,000 32,768
DeepSeek V4 Pro ds/deepseek-v4-pro 1,000,000 900,000 65,536
MiMo V2.5 opencode-go/mimo-v2.5 131,072 112,000 32,768
Gemma 4 31B(OllamaCloud) ollamacloud/gemma4:31b 32,768 28,000 16,384
Nemotron 3 Super(OllamaCloud) ollamacloud/nemotron-3-super 32,768 28,000 16,384
GPT-OSS 20B(OllamaCloud) ollamacloud/gpt-oss:20b 32,768 28,000 16,384
DeepSeek V4 Flash(OllamaCloud) ollamacloud/deepseek-v4-flash 65,536 56,000 16,384
Gemini 3 Flash Preview(OllamaCloud) ollamacloud/gemini-3-flash-preview 1,000,000 850,000 32,768
GLM-5 Turbo glm/glm-5-turbo 131,072 112,000 16,384
GLM-4.7 Flash glm/glm-4.7-flash 131,072 112,000 16,384
Mistral Large Latest mistral/mistral-large-latest 262,144 220,000 16,384

壓縮公式: effective_window = model_context_window - min(tool_output_token_limit, 20000)。超過 20k 的值不會改變壓縮觸發條件。

經驗法則: 將 model_auto_compact_token_limit 設為 model_context_window 的 85–88%。切勿超過 90% — 否則會被無提示地忽略。


OmniRoute 中的所有 Codex 模型皆使用 cx/ 前綴:

Codex CLI 名稱 OmniRoute 模型
cx/gpt-5.5 GPT-5.5 標準版
cx/gpt-5.4 GPT-5.4 標準版
cx/gpt-5.4-mini GPT-5.4 mini
cx/gpt-5.1-codex-mini GPT-5.1 Codex mini

其他提供者使用各自的前綴(kmc/、glm/、ds/、ollamacloud/、opencode-go/、mistral/)— 前綴與 OmniRoute 提供者別名一致。


控制模型在回應前進行多少「思考」。

值 適用情境
none 不進行推理 — 直接回應
low 瑣碎任務(重新命名、格式化)
medium 未指定時的伺服器預設值
high 中階任務(重構、偵錯)
xhigh 架構設計、深入分析、複雜問題
Terminal window
# 覆寫單次呼叫的設定
codex -c model_reasoning_effort=low "將變數 x 重新命名為 count"
codex -c model_reasoning_effort=xhigh "設計驗證模組"

另外也請設定推理摘要,讓 Desktop 能呈現思考文字(而不只是加密的資料區塊):

~/.codex/config.toml
model_reasoning_effort = "xhigh" # 支援時也可使用 ultra
model_reasoning_summary = "detailed" # auto | concise | detailed | none

OmniRoute 思考預算(伺服器設定)

Section titled “OmniRoute 思考預算(伺服器設定)”

在 OmniRoute 主機上,Settings → AI → Thinking Budget 必須設為 passthrough,Codex 的強度/摘要設定才能傳到上游。auto 模式會移除所有用戶端的 reasoning / reasoning_effort 欄位,即使 Codex 已正確設定,也會導致思考面板內容為空。

完整指南:THINKING_BUDGET.md。

壓縮與提示快取彼此獨立,並且在 passthrough 模式下仍會正常運作。


設定檔 — 依模型/工作流程命名的設定

Section titled “設定檔 — 依模型/工作流程命名的設定”

設定檔可讓你使用單一旗標切換模型與上下文視窗。每個設定檔都是一個扁平的 ~/.codex/&lt;name&gt;.config.toml,會疊加在基礎 config.toml 之上。

**命名規則(Codex CLI v0.137+):**檔案必須命名為 ~/.codex/&lt;name&gt;.config.toml — 不可加上 profile- 前綴。 CLI 會將 -p kimi-k27 解析為 ~/.codex/kimi-k27.config.toml。如果找不到該檔案,便會直接套用預設設定而不顯示提示。

Terminal window
codex --profile kimi-k27 "分析此程式碼庫的 10k 行程式碼"
codex -p glm52 "架構審查"
codex --profile deepseek-flash "重新命名變數" # 快速、便宜

強度設定檔(相同模型,不同強度)

Section titled “強度設定檔(相同模型,不同強度)”
Terminal window
codex -p low # cx/gpt-5.5,強度=low
codex -p medium # cx/gpt-5.5,強度=medium
codex -p high # cx/gpt-5.5,強度=high
codex -p xhigh # cx/gpt-5.5,強度=xhigh(預設)
codex -p chat # cx/gpt-5.5,未設定強度(伺服器預設值)

思考模型(高強度思考)— xhigh + 詳細摘要

Section titled “思考模型(高強度思考)— xhigh + 詳細摘要”
設定檔 模型 上下文 適用情境
kimi-k27 kmc/kimi-k2.7 128k 最佳思考品質(Kimi)
glm52 glm/glm-5.2 128k GLM 思考
glm52max glm/glm-5.2-max 128k GLM 最大思考能力
mimo-pro opencode-go/mimo-v2.5-pro 128k MiMo 思考
qwen37plus opencode-go/qwen3.7-plus 32k Qwen 思考
設定檔 模型 上下文 適用情境
kimi-k26 kmc/kimi-k2.6 128k 通用用途(Kimi)
deepseek-pro ollamacloud/deepseek-v4-pro 128k 透過 OllamaCloud 使用 DeepSeek Pro
deepseek ds/deepseek-v4-pro 1M 直接使用 DeepSeek Pro,超大上下文
mimo opencode-go/mimo-v2.5 128k MiMo 通用用途
設定檔 模型 上下文 適用情境
gemma4 ollamacloud/gemma4:31b 32k 經濟實惠且能力良好
nemotron ollamacloud/nemotron-3-super 32k NVIDIA Nemotron
gptoss ollamacloud/gpt-oss:20b 32k 開放原始碼 GPT
設定檔 模型 上下文 適用情境
deepseek-flash ollamacloud/deepseek-v4-flash 64k 快速任務
gemini-flash ollamacloud/gemini-3-flash-preview 1M 極快、超大上下文
glm5turbo glm/glm-5-turbo 128k GLM Turbo
glm47flash glm/glm-4.7-flash 128k GLM Flash
mistral mistral/mistral-large-latest 256k Mistral Large
任務 建議的設定檔
重新命名、格式化、樣板程式碼 --profile deepseek-flash 或 -p low
解釋、簡易審查 -p chat 或 -p gemini-flash
除錯、中度重構 -p medium 或 -p kimi-k26
新功能、複雜測試 -p high 或 -p mimo
架構、深入分析 -p kimi-k27 或 -p glm52 或 -p xhigh
程式碼庫分析(需要 1M 上下文) --profile deepseek 或 --profile gemini-flash
最高思考品質 -p glm52max 或 -p mimo-pro
注重成本 -p gemma4 或 -p gptoss

使用 omniroute setup-codex 自動產生設定檔

Section titled “使用 omniroute setup-codex 自動產生設定檔”

如果您在 VPS 上執行 OmniRoute,可以從即時模型目錄自動產生設定檔:

Terminal window
# 從 VPS 執行(使用連接埠 20128 上的本機 OmniRoute)
omniroute setup-codex
# 從任何機器執行——指向您的 VPS
omniroute setup-codex --remote http://100.x.x.x:20128 --api-key sk-xxx
# 預覽但不寫入檔案
omniroute setup-codex --remote http://100.x.x.x:20128 --dry-run
# 僅產生 GLM 和 Kimi 設定檔
omniroute setup-codex --only glm,kimi
# 寫入自訂目錄
omniroute setup-codex --codex-home /path/to/.codex

此命令會擷取 /v1/models,對已知模型使用經過調校的設定檔,對其他相容的文字模型則改用目錄中繼資料,並為每個模型寫入 ~/.codex/&lt;name&gt;.config.toml。此操作具備冪等性,因此可安全地重複執行。

成功探索/匯入提供者模型並變更即時目錄後,OmniRoute 也可以自動同步這些相同的設定檔。這是選用功能,預設為停用:可從 CLI Code 儀表板切換(「CLI 設定檔自動同步」→ Codex),或設定 OMNIROUTE_AUTO_SYNC_CODEX_PROFILES=true(它也會遵循 CLI_ALLOW_CONFIG_WRITES,此設定預設為啟用)。啟用後,它只會寫入個別的 ~/.codex/*.config.toml 設定檔;絕不會變更作用中/預設的 ~/.codex/config.toml、Codex-lb 設定、驗證資訊或提供者選擇。


使用 omniroute launch-codex 啟動 Codex

Section titled “使用 omniroute launch-codex 啟動 Codex”

在啟動 Codex 前,先對您的 OmniRoute 執行個體進行健康狀態檢查:

Terminal window
# 使用本機 OmniRoute 啟動(預設連接埠為 20128)
omniroute launch-codex
# 使用指定的設定檔啟動
omniroute launch-codex --profile kimi-k27
# 使用遠端 VPS 啟動
omniroute launch-codex --remote http://100.x.x.x:20128/v1 --api-key sk-xxx
# 將額外引數傳遞給 codex
omniroute launch-codex --profile glm52 -- --yolo "fix this bug"

Codex 也是兩個由資訊清單驅動之通用進入點的目標 (bin/cli/cli-manifest.mjs):

Terminal window
# 互動式模型選擇器 → 寫入 ~/.codex/&lt;name&gt;.config.toml(TOML、env_key)
omniroute configure codex
# 透過 -c 旗標注入 omniroute 提供者並啟動 codex(不寫入設定)
omniroute run codex

版本 功能
v0.138 桌面應用程式交接(/app)、v2 個人存取權杖、以 --profile 作為唯一的設定檔選擇器(舊版檔案內的 [profiles] 表格會導致啟動時當機)
v0.139 web_search = "live"——從程式碼模式使用原生網路搜尋;MCP 工具結構描述中的 oneOf/allOf;codex doctor 環境診斷
v0.140 工作階段內的 /usage 權杖檢視;從 Claude Code 工作階段執行 /import;codex delete <SESSION_ID> 子命令;透過提供者設定中的 aws 物件進行 Amazon Bedrock 驗證
v0.141 適用於遠端執行器的端對端加密 Noise 中繼;SQLite WAL 修正;P-521 TLS 支援

新增的 config.toml 欄位(v0.137 之後)

Section titled “新增的 config.toml 欄位(v0.137 之後)”
# 原生網路搜尋(v0.139)
web_search = "live" # "disabled" | "cached" | "live"
# 獨立的開發人員系統提示詞(v0.138)
developer_instructions = "Always prefer functional style."
# 自訂壓縮提示詞
compact_prompt = "Summarise the above as bullet points."
# 將 /review 路由至成本較低的模型
review_model = "glm/glm-5-turbo"
# OpenAI 服務層級
service_tier = "fast" # "fast" | "flex"

新增的 [model_providers.&lt;id&gt;] 欄位

Section titled “新增的 [model_providers.&lt;id&gt;] 欄位”
[model_providers.omniroute]
base_url = "http://100.x.x.x:20128/v1"
env_key = "OMNIROUTE_API_KEY"
requires_openai_auth = false
# 每個請求所使用的靜態額外標頭
[model_providers.omniroute.http_headers]
"X-Custom-Header" = "value"
# 從環境變數讀取的標頭
[model_providers.omniroute.env_http_headers]
"X-Trace-Id" = "TRACE_ID"
# 額外的 URL 查詢參數(適用於 Azure api-version)
[model_providers.omniroute.query_params]
"api-version" = "2024-12-01-preview"
[model_providers.bedrock]
base_url = "https://bedrock-runtime.us-east-1.amazonaws.com"
[model_providers.bedrock.aws]
profile = "default" # ~/.aws/credentials 設定檔
region = "us-east-1"

[model_providers.omniroute-main]
base_url = "http://192.168.0.1:20128/v1"
env_key = "OMNIROUTE_API_KEY"
[model_providers.omniroute-tailscale]
base_url = "http://100.x.x.x:20128/v1"
env_key = "OMNIROUTE_API_KEY"

Codex CLI (config.toml) Claude Code(環境變數) 效果
tool_output_token_limit = 32768 (未直接公開) 各工具的歷史記錄上限
model_context_window = 400000 (由模型決定) 上下文視窗
— CLAUDE_CODE_MAX_OUTPUT_TOKENS=65536 每次回應的最大 token 數
Terminal window
# ~/.bashrc — Claude Code token 上限
export CLAUDE_CODE_MAX_OUTPUT_TOKENS=65536

旗標 短旗標 效果
--model &lt;id&gt; -m 覆寫此次呼叫的 model
--profile &lt;name&gt; -p 載入 ~/.codex/&lt;name&gt;.config.toml
--config key=value -c 覆寫任意 config.toml 欄位(可重複使用)
--enable &lt;feature&gt; — 強制啟用功能旗標
--disable &lt;feature&gt; — 強制停用功能旗標
--search — 為此次呼叫啟用即時網頁搜尋

v0.140 新增:

Terminal window
codex delete <SESSION_ID> # 刪除工作階段
codex delete <SESSION_ID> --force # 跳過確認
codex debug models --bundled # 以 JSON 列出內建模型目錄

在互動式工作階段中:

指令 效果
/model 開啟模型選擇器
/usage 顯示此工作階段的 token 使用量(v0.140)
/app 移交至桌面應用程式(v0.138)
/import 匯入 Claude Code 工作階段(v0.140)
/help 列出所有斜線指令

OmniRoute 的兩項預設值可能會在不知不覺中破壞持續數小時的 Codex CLI 工作階段。兩者都不是 Codex CLI 設定,而是位於 OmniRoute 端。從會固定帳號並停用閒置中止機制的上游代理移轉設定時,使用者經常會同時遇到這兩個問題,並因此認為 OmniRoute「無法維持長時間工作階段」。

症狀 可能原因 調整項目
工作階段持續切換帳號/各輪之間的提示快取連續性中斷 工作階段親和性 TTL 為 0(已停用) sessionAffinityTtlMs
推理過程中連線中斷,且未向用戶端顯示任何提示 串流閒置監視器在上游 10 分鐘未傳送資料區塊後觸發 STREAM_IDLE_TIMEOUT_MS

相關討論:#7126(長時間任務中斷)、#5718(親和性預設停用的原因)。追蹤議題:#7287。

1. 工作階段親和性 — 將單一對話固定至單一帳號

Section titled “1. 工作階段親和性 — 將單一對話固定至單一帳號”

預設值: sessionAffinityTtlMs = 0(已停用)。

設定位置

  • 儀表板 → 設定 → 路由 → 工作階段親和性 → 親和性 TTL(秒)(ComboDefaultsTab)
  • 或透過 PATCH 設定中的 sessionAffinityTtlMs,單位為毫秒(Zod 範圍為 0–86_400_000,即最長 24 小時)

在 #7274 中由僅適用於 Codex 的 codexSessionAffinityTtlMs 重新命名而來。舊版鍵仍可作為唯讀別名使用;新設定應使用 sessionAffinityTtlMs。只要 TTL 大於 0,親和性現在就會套用至任何提供者,而不僅限於 Codex — 請參閱 docs/architecture/RESILIENCE_GUIDE.md → 工作階段親和性。

維持為 0 時會發生什麼問題

多輪 Codex 對話中的每一輪都會由目前啟用的組合策略獨立路由,因此每一輪都可能落到不同的帳號。這會破壞上游工作階段/提示快取的連續性。只有當 TTL 大於 0 時,OmniRoute 才會查閱 Codex 工作階段標頭(x-codex-session-id / x-session-id / x-omniroute-session)以及 prompt_cache_key / session_id 等本文欄位(src/sse/services/auth.ts 中的 extractSessionAffinityKey)。

針對持續數小時的單一任務之建議

將 TTL 設為高於任務預期的實際經過時間(UI 上限為 86400 秒 = 24 小時):

預期任務時間 親和性 TTL(UI,秒) sessionAffinityTtlMs
數小時 14400(4 小時) 14400000
整夜/約 12 小時 43200(12 小時) 43200000
一整天 86400(24 小時,上限) 86400000

選擇加入是刻意的設計:停用親和性有利於在多個帳號之間進行負載平衡;啟用親和性則有利於維持單一長時間代理工作階段的連續性。本指南不會變更預設值 — 執行長時間 Codex 任務的操作人員必須自行選擇啟用。

2. 串流閒置逾時 — 不要終止安靜的推理輪次

Section titled “2. 串流閒置逾時 — 不要終止安靜的推理輪次”

預設值: STREAM_IDLE_TIMEOUT_MS = 600000(10 分鐘)。未設定時會繼承 REQUEST_TIMEOUT_MS;共用基準值也是 600000。請參閱 docs/guides/SETUP_GUIDE.md → 逾時。

使用預設值時會發生什麼問題

Codex 的推理/工具回合若超過 10 分鐘保持靜默,且沒有真正的上游資料區塊,就會被 SSE 閒置監控程式(open-sse/utils/stream.ts)強制關閉。用戶端通常只會看到連線直接中斷——這與「在沒有任何通知的情況下自動停止」的現象一致。

關鍵細節:OmniRoute 合成的 SSE 心跳不會重設閒置計時。只有真正的上游回應本文區塊才會更新 lastChunkTime。從監控程式的角度來看,仍在「思考」但保持安靜的模型,與停滯的上游沒有任何差別。

相關的 Undici 回應本文閒置設定:FETCH_BODY_TIMEOUT_MS(預設值也是相同的 10 分鐘基準;設為 0 可停用)。對於串流,FETCH_TIMEOUT_MS 只涵蓋連線建立/首批標頭;串流啟用後,停滯狀況由 STREAM_IDLE_TIMEOUT_MS 與 FETCH_BODY_TIMEOUT_MS 控制。

針對持續數小時的單一任務之建議

在 OmniRoute 處理程序的環境中(.env / compose / systemd):

Terminal window
# 停用串流閒置與回應本文閒置逾時,以支援長時間推理回合
STREAM_IDLE_TIMEOUT_MS=0
FETCH_BODY_TIMEOUT_MS=0

或者,將其提高至超過您預期的最長靜默間隔(值以毫秒為單位):

Terminal window
# 範例:允許上游資料區塊之間最多靜默 2 小時
STREAM_IDLE_TIMEOUT_MS=7200000
FETCH_BODY_TIMEOUT_MS=7200000

變更這些環境變數後,請重新啟動 OmniRoute。

具體做法——持續數小時的 Codex 任務

Section titled “具體做法——持續數小時的 Codex 任務”
  1. 固定帳戶: Dashboard → Settings → Routing → Session affinity → Affinity TTL = 43200(12 小時)或 86400(上限 24 小時)。
  2. 提高/停用閒置逾時,請在 OmniRoute 的環境中設定:
Terminal window
STREAM_IDLE_TIMEOUT_MS=0
FETCH_BODY_TIMEOUT_MS=0
  1. 保留一般的 Codex config.toml 設定(wire_api = "responses"、正確的 base_url、OMNIROUTE_API_KEY)——Codex 端不存在可控制這兩種行為的親和性/閒置設定。
  2. 重新啟動 OmniRoute,然後開始長時間執行的 Codex 任務。
設定 發布預設值 是否在本指南中變更?
sessionAffinityTtlMs 0(停用) 否——維持選擇性啟用(負載平衡與連續性之間的取捨;請參閱 Discussion #5718)
STREAM_IDLE_TIMEOUT_MS 600000(10 分鐘) 否——一般流量仍維持 10 分鐘;長時間執行 Codex 的維運人員可提高或停用此設定

全域變更其中任何一項預設值,都會改變執行個體中每個用戶端的行為,而不僅是 Codex。請記錄這些設定;在維運人員作出明確決策之前,維持預設值不變。

當閒置監控程式觸發時,OmniRoute 會記錄格式如下的日誌:

[STREAM] Idle timeout: no data from codex for 600000ms (model: cx/gpt-5.5)

搜尋 Idle timeout: no data from(或代碼 stream_idle_timeout/錯誤名稱 StreamIdleTimeoutError)。提供者區段會顯示 OmniRoute 為該請求使用的值(codex、其他提供者 ID,或在未知時顯示 provider)——它不一定永遠是字面值 codex。


Error: wire_api = "chat" is no longer supported 從設定中移除 wire_api = "chat"。設定 wire_api = "responses",或省略此欄位(自 v0.138 起預設為 "responses")。

Error: model not found 確認模型存在於 OmniRoute 中,且具有正確的前綴。使用 omniroute models list,或開啟 /dashboard/providers/&lt;provider&gt;。

Authentication error 確認已匯出 OMNIROUTE_API_KEY:echo $OMNIROUTE_API_KEY。

ERROR: Missing environment variable: OMNIROUTE_API_KEY Codex 會在發出第一個請求之前,驗證該環境變數是否存在。對於受保護的伺服器,請匯出真實的金鑰;若您的本機 OmniRoute 執行個體不需要驗證,則可使用非空白的預留值,例如 OMNIROUTE_API_KEY=local。如果您已將其新增至 ~/.bashrc 或 ~/.zshrc,請重新啟動 shell。

Connection refused 確認 OmniRoute 正在執行,且 base_url 的主機/連接埠對您的網路而言是正確的(本機、Tailscale 或 VPS)。

工作階段在接近上下文限制時當機 明確設定 model_context_window 和 model_auto_compact_token_limit。請參閱上方的上下文視窗表格。

壓縮觸發得太晚 將 model_auto_compact_token_limit 降至視窗大小的 80–85%。切勿設定為高於 90%。

設定檔未載入(-p &lt;name&gt; 被悄然忽略) 確認檔案存在於 ~/.codex/&lt;name&gt;.config.toml(沒有 profile- 前綴)。執行 ls ~/.codex/*.config.toml。

長時間執行的 Codex 任務在執行途中中斷/不同回合之間切換帳戶 請參閱長時間執行的任務。啟用工作階段親和性(TTL 應長於任務執行時間),並提高或停用 STREAM_IDLE_TIMEOUT_MS/FETCH_BODY_TIMEOUT_MS。使用 grep 在 OmniRoute 日誌中搜尋 Idle timeout: no data from。


OmniRoute 原始碼 (a58000c7685f)

HagiCode

HagiCode 是智慧代理程式開發工作台,結合結構化工作流程、多代理程式執行與 Hero Dungeon 介面,將想法化為交付成果。

以更聰明、更快速且更有趣的智慧代理程式工作流程,打造實用的軟體。

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