前言¶
DeepSeek Harness (DSH) 的生態強調插件化。在使用 dsh-llm-pi-ai 適配器調用模型時,通常需要配置 API Key。如果開發者已經在 Codex CLI 中完成了 ChatGPT 的 OAuth 登錄,手動維護兩套憑證不僅繁瑣,還容易出錯。dsh-codex-auth-bridge 插件旨在解決這一重複配置問題,它允許 DSH 直接複用 Codex 的登錄狀態。
核心功能¶
該插件以 Host Cordis bundle 的形式提供。主要功能包括:
* 憑證讀取與刷新:讀取 Codex 的 auth.json,通過 @earendil-works/pi-ai 的原生實現保持 OAuth 令牌新鮮。
* 憑證同步:將同步後的訪問令牌寫入 DSH 的憑證服務。
* 路由配置:自動配置 pi-ai 內置的 openai-codex 模型路由。
* 安全性:插件代碼及運行時均不包含、上傳或提交任何令牌數據。
安裝與啓用¶
在運行安裝命令前,請確保滿足以下前置條件:
* Node.js 版本爲 22.19 或更高。
* DSH 安裝使用了 dsh-llm-pi-ai 適配器。
* Codex 已通過 ChatGPT 登錄(即 ~/.codex/auth.json 中包含 auth_mode: "chatgpt")。
在已登錄 Codex 的設備上運行以下命令:
npx --yes github:shaomingbo/dsh-codex-auth-bridge#v0.1.0
安裝過程會自動執行以下步驟:
1. 向 ~/.dsh/profiles/web/package.json 添加該包。
2. 在對應 profile 的 dsh.profile.bundles 列表中添加 dsh-codex-auth-bridge。
3. 在該 profile 目錄下運行 pnpm install。
安裝完成後,重啓 dsh web,模型選擇器將包含由 pi-ai 的 openai-codex 目錄暴露的模型。
典型用法¶
- 基礎安裝:執行上述安裝命令即可完成配置。
- 指定 Profile:如果需要在非默認配置下使用,可以通過
--profile參數指定:
npx --yes github:shaomingbo/dsh-codex-auth-bridge#v0.1.0 --profile web
- 本地源安裝:從本地源碼安裝:
node ./bin/install.js --source file:../../packages/dsh-codex-auth-bridge
工作原理¶
插件會在啓動時、每 10 分鐘,以及每次 openai-codex LLM 流請求前執行同步邏輯:
1. 讀取 ${CODEX_HOME:-~/.codex}/auth.json。
2. 解碼訪問令牌的過期時間。
3. 如果令牌過期或即將過期,通過 @earendil-works/pi-ai 刷新令牌。
4. 原子性地將刷新後的令牌寫回 Codex 的 auth.json。
5. 將當前訪問令牌存儲在 DSH 的憑證服務中,引用名爲 OPENAI_CODEX_ACCESS_TOKEN。
插件還會配置以下 Composition 基礎:
llm-pi-ai:
providers:
openai-codex:
apiKeyEnv: OPENAI_CODEX_ACCESS_TOKEN
適用場景與注意¶
該插件適用於需要通過 DSH 訪問 ChatGPT 模型,且已使用 Codex CLI 進行過 ChatGPT OAuth 登錄的開發者。
需要注意以下幾點:
* 權限與安全:Codex 的 auth.json 包含旋轉的刷新令牌,必須保持私密。DSH 的本地憑證提供者會將同步的訪問令牌寫入 $DSH_HOME/.credentials.yaml(通常權限爲 0600)。插件本身不會記錄任何令牌值。
* 併發保護:插件實現了“寫入前比較”機制,如果 Codex 在後臺同時刷新了令牌,新的刷新令牌不會被覆蓋。
* 環境變量:可以通過環境變量調整路徑和刷新間隔,如 DSH_CODEX_AUTH_PATH 和 DSH_CODEX_REFRESH_MARGIN_MS。
結語¶
通過複用 Codex 的 OAuth 登錄,開發者可以避免在 DSH 中重複配置 API Key。該插件通過 @earendil-works/pi-ai 實現了令牌的自動刷新與同步,確保了會話的持續性。更多細節可參考 GitHub 倉庫。