Joshua Guo

設計工程師 · V2SPACE 創辦人

技術筆記

使用 Homebrew 為 Codex 設定 Codex Router

在 Codex App 與 CLI 中使用外部程式模型的實際設定流程,同時保留原生 GPT 存取,避免暴露供應商金鑰。

內文

我想在 Codex 裡多幾個模型可以選。但我不想再多一個 AI Agent 介面,也不想要一個塞滿供應商金鑰的設定檔。Codex Router 剛好是一座本機的橋,兩個問題都避開了。

我是在 macOS 上用 Codex Router 0.5.1 設定的。Linux 上的 Codex CLI 也能用。這是社群專案,不是 OpenAI 做的,也沒有官方背書。

路由器做了什麼

Codex 本來就能透過使用者層級的 ~/.codex/config.toml 接自訂的模型供應商。官方設定參考文件裡有 model_provider、自訂 base_url 和 model_catalog_json 的說明。這些設定要放在使用者設定檔,不是專案裡的 .codex/config.toml。

Codex Router 幫你把這些接好。它在本機跑一個背景服務,根據你啟用的供應商建立模型目錄,再把 Codex 的每個 Responses 請求送到你選的模型。如果 Codex 還登入著 OpenAI,原生的 GPT 模型也會留在同一個選單裡。

比較巧妙的是工具這一塊。外部模型得看得懂 Codex App 的工具,所以路由器會把原生工具定義傳過去,名稱攤平成 codex_app__、mcp__ 這類形式。模型呼叫工具時,路由器再把原本的命名空間接回去。真正執行工具的還是 Codex,路由器只負責翻譯和轉送。

透過 Homebrew 安裝

你需要 Codex App 或 CLI,以及一個能正常運作的 Homebrew。這個 formula 會裝好路由器和它的 CLI。Electron Control Center、選單列 App 和桌面小工具都不在裡面。

加入 tap 再安裝:

brew tap duolahypercho/codex-router https://github.com/duolahypercho/codex-router
brew install codex-router

然後跑引導式設定:

codex-router setup --guided

它會問你要啟用哪些供應商,找找看有沒有可以沿用的登入資訊,缺少的憑證再私下請你輸入。接著替你的使用者帳號裝一個背景服務,並把它接上 Codex。輸入憑證時畫面不會顯示內容。供應商金鑰不應該出現在命令參數、受版本控制的檔案或聊天訊息裡。

我建議先從一家供應商開始。先確認一條路由能通,比一次把選單塞滿模型容易除錯得多。各家供應商不太一樣:有的用 API 金鑰,有的用 OAuth,有的走訂閱或本機端點,而且各自計費。

除非你自己選擇跑 smoke test,引導式設定不會送出要付費的測試請求。

確認安裝結果

我會先看服務狀態:

codex-router status

再跑完整的診斷:

codex-router doctor

doctor 會檢查 Codex 設定、背景服務、供應商憑證、產生出來的模型目錄、路由模型的定義,以及受管理的技能包。如果警告提到的是你根本沒設定的供應商,通常只是提示而已。真正要處理的,是跟你打算使用的供應商、服務或模型目錄有關的失敗。

列出供應商也很安全,這個命令不會印出任何憑證:

codex-router providers

都通過之後,把 Codex 完全結束再重開。開一個新任務,路由模型應該就會出現在選單裡。Codex 只在啟動時讀取外部模型目錄,所以只關掉一個視窗再打開,可能不夠。

在 CLI 裡可以直接指定路由模型:

codex -m PROVIDER/MODEL

請用路由器顯示的完整 ID。供應商前綴很重要,因為同一個模型系列可能同時能透過好幾種訂閱或 API 使用。

新增或更新模型

有些供應商提供即時的模型目錄。想看某一家現在有什麼:

codex-router discover-models PROVIDER

再挑出要在 Codex 裡顯示的:

codex-router curate-models PROVIDER

改完目錄記得重開 Codex。就算上游 API 會接受,我也不會用猜的去加模型 ID。Codex 還需要正確的 metadata,才能處理上下文長度、推理控制、輸入類型、搜尋和工具使用。

想實際打一次,Codex Router 有一個明確的測試命令:

codex-router test-model PROVIDER/MODEL --live --yes --quick

它會送出真實請求,可能會花錢。命令同時要求 --live 和 --yes,所以不會一不小心就跑了一次付費測試。

常見問題

如果選單裡沒有任何路由模型,先跑 codex-router providers,確認供應商有啟用、也登入了。接著跑 codex-router doctor,再把 Codex 完全重開,讓它讀到重新產生的模型目錄。

如果模型能回答,卻用不了 App 的工具,就去看 doctor 輸出裡的受管理技能包。另外裝瀏覽器或電腦操作驅動程式解決不了這個問題。路由模型應該呼叫 Codex 給它的工具名稱,命名空間的轉換交給路由器。

如果模型出現了,請求卻一直失敗,就仔細核對供應商和模型的組合。能用的模型會因 API、訂閱或地區而不同。我會先跑 discover-models,搞清楚這家怎麼計費之後,才送一個小的即時測試。

不要去改路由器簽署過的本機 URL,也不要把它的內部憑證複製到別的設定檔裡。如果受管理的 Codex 整合壞了,重跑一次引導式設定,或用 codex-router enable。

更新或移除

更新:

brew upgrade codex-router

要移除的話,先停掉使用者層級的服務、還原受管理的 Codex 設定,再解除安裝 formula:

codex-router uninstall
brew uninstall codex-router

順序很重要。套件歸 Homebrew 管,但使用者服務和設定時改過的 Codex 設定,歸 Codex Router 管。

參考資料