用 dsh-codex-subscription 把 Codex CLI 訂閱接到 DeepSeek Harness

前言

DeepSeek Harness(dsh)是 DeepSeek AI 開源的 agent 框架,設計原則是「一切皆插件」:模型、工具、界面都可以用插件掛上去。很多人日常已經在用 Codex CLI,本機做過 codex login,ChatGPT 訂閱額度也在那個賬號上。換到 DSH 寫代碼、跑 Agent 時,卻還得再申請一份 OpenAI Platform 的 API Key,按 token 另計費。兩套入口、兩套賬單,其實只是想把已經付過的訂閱接到另一個 harness 裏。

社區插件 dsh-codex-subscription 做的就是這件事:不重新走一遍 OAuth 網頁登錄,而是直接讀取 Codex CLI 寫在本機的登錄憑證,讓 ChatGPT 訂閱模型出現在 DSH 的模型選擇器裏。它由 yequ172672 維護,GitHub 倉庫當前 14 星,社區目錄歸在「模型與提供方」。目錄站點 deepseek-harness-plugin.com 是獨立收錄站,和 DeepSeek / 幻方沒有官方從屬關係,安裝前需要自己覈對倉庫。

本文按目錄詳情頁、GitHub README、package.json 與 npm 頁面交叉覈對後整理:這個插件是什麼、憑證怎麼複用、怎麼裝、怎麼配代理。

這是什麼

dsh-codex-subscription 是一款 DSH 的 LLM 適配器插件。目錄頁用這個倉庫名收錄;npm 上的包名是 dsh-llm-codex,當前版本 0.1.2package.json 聲明許可證爲 MIT,倉庫根目錄目前沒有單獨的 LICENSE 文件。要求 Node.js >=20,依賴對齊 DeepSeek Harness 0.1.0-rc.6

它解決的問題很具體:本機已經用 Codex CLI 登錄過 ChatGPT 訂閱,希望在 DSH 裏繼續用同一套額度,而不是再配 OPENAI_API_KEY。插件包內帶有 dsh.bundle.patch(對應 cordis.bundle.yml),用官方 dsh plugin 安裝後會自動成爲 profile 層,不必手工改 composition 文件。

安裝完成後,Web 模型選擇器會出現名爲 Codex (ChatGPT 訂閱) 的 provider,路由名是 codex;設置 → 插件裏會列出 llm-codex 條目。

核心功能

複用本機 Codex 憑證

Codex CLI 執行 codex login 後,會把 ChatGPT 訂閱的 OAuth 令牌寫到 ~/.codex/auth.json(或環境變量 CODEX_HOME 指向的目錄)。本插件與 CLI 同源讀取這個文件,不要求再填 API Key。

憑證有兩種形態,README 寫得很清楚:

憑證形態 端點 認證方式
tokensauth_mode: chatgpt,訂閱) https://chatgpt.com/backend-api/codex/responses Bearer access_token,並帶上 chatgpt-account-id 等 Codex 請求頭
OPENAI_API_KEYauth_mode: apikey https://api.openai.com/v1/responses Bearer API Key

日常用法走第一種:訂閱登錄。第二種是 CLI 裏改成 API Key 模式時的兼容路徑,不是這個插件的主場景。

每次請求都會重新讀 auth.json。你在終端裏換號、登出、再登錄,DSH 下一次請求會跟過去,不用重啓插件。

令牌刷新與寫回

access_token 過期(HTTP 401)時,插件用 refresh_token 請求 auth.openai.com/oauth/token,刷新成功後默認原子寫回 auth.json,再自動重試一次。行爲和 Codex CLI 一致,兩邊憑證保持同步。

如果不希望插件改這個文件,在設置裏把 writeBack 設爲 false。過期令牌只在內存裏刷新,重啓 dsh 後會再讀磁盤上的舊令牌並重新刷新。

模型目錄與協議

模型列表按優先級組裝:

  1. 配置裏顯式給出的 staticModels
  2. 即時請求 GET {base}/codex/models
  3. 失敗則讀 ~/.codex/models_cache.json
  4. 再失敗則用內置靜態列表

內置兜底包括 gpt-5.6-solgpt-5.6-lunagpt-5.6-terragpt-5.5gpt-5.4-mini 等。賬號實際能用哪些模型,以即時目錄或 Codex 本地緩存爲準;靜態列表只是斷網或接口失敗時的保底。

協議走 OpenAI Responses API,開啓 stream: true 的 SSE。推理摘要、正文、工具調用分別映射成 DSH 的 reasoning / text / tool-call 塊,用量從 response.completed 提取。適配器目前是文本 only:帶圖片的內容會以 UNSUPPORTED_CONTENT 拒絕。

安裝與啓用

目錄頁給出的安裝命令如下,在 DeepSeek Harness 終端裏運行即可:

dsh plugin add github:yequ172672/dsh-codex-subscription

需要可復現安裝時,按目錄頁說明固定 commit。當前 main 最新提交是 200a5d3e32fadc99468f8a5e0764a6d089d3bb01(2026-08-17,版本升到 0.1.2):

dsh plugin add github:yequ172672/dsh-codex-subscription#200a5d3e32fadc99468f8a5e0764a6d089d3bb01

倉庫 README 還提供了按 npm 包名安裝的寫法,效果是裝進指定 profile(示例用 web):

dsh plugin --profile web add dsh-llm-codex

兩種來源指向同一份包。社區裏還有其他名稱相近的 Codex 接入插件,安裝時請覈對維護者是 yequ172672、倉庫是 yequ172672/dsh-codex-subscription

前置條件

README 列出四條,缺一不可:

  1. 已經安裝 dsh 本體。沒有 dsh 命令時,先按官方倉庫安裝,例如:
npm install -g @deepseek-ai/dsh
dsh --version

DeepSeek 官方倉庫當前推薦也可以直接 npx @deepseek-ai/dsh web 啓動 Web UI。插件本身是 profile 層,必須先有可用的 dsh。

  1. 已經安裝 pnpm。dsh plugin 會轉發給它,缺失時 CLI 會提示。
  2. 已經執行過 codex login。插件不負責彈出登錄頁,只讀本機憑證。
  3. 能訪問 chatgpt.com。國內網絡通常需要代理,見下一節。

驗證是否掛上

不啓動服務也可以檢查組合結果:

dsh --profile web --dump-config

輸出裏應能看到 # == dsh-llm-codex 以及 llm-codex 行。然後重啓 dsh,打開 Web 界面,模型選擇器裏應出現 Codex (ChatGPT 訂閱)

典型用法

配代理

ChatGPT 後端經常需要走本地代理。Node 原生 fetch 不讀系統代理,要在 $DSH_HOME/settings.yaml 裏寫:

llm-codex:
  proxy: http://127.0.0.1:7890

也可以用環境變量 HTTPS_PROXY。優先級是:顯式 proxy 配置 > HTTPS_PROXY > HTTP_PROXY;命中 NO_PROXY 的主機直連。端口按你本機代理軟件改,7890 只是 README 裏的示例。

設置段熱更新,改完不必重啓。其他可選字段還有 clientVersion(默認 0.144.1)、writeBack(默認 true)、authFilemodelsCacheFilestaticModels

設成默認模型

同樣寫在 settings.yaml

agent-default-model:
  provider: codex
  model: gpt-5.6-sol
  reasoningEffort: medium

gpt-5.6-sol 是 README 和內置目錄裏的示例模型。賬號若拉到別的 slug,把 model 改成選擇器裏實際出現的 id 即可。

常見報錯

現象 README 給出的處理
MISSING_CREDENTIAL:無法讀取 Codex 憑證文件 先運行 codex login
TRANSPORT:Connect Timeout 直連 ChatGPT 後端失敗,配置 proxy
HTTP 401 且刷新失敗 訂閱過期或被風控,重新 codex login
HTTP 429 訂閱額度或限流,稍後重試
模型列表爲空 即時發現失敗且本地沒有 models_cache.json 時,會落到內置靜態列表

倉庫還帶冒煙測試,默認只讀、不會寫 auth.json

npm run test:smoke

需要走代理時設置 HTTPS_PROXY。這是開發者自測路徑,日常使用不必跑。

README 另外推薦搭配 dsh-session-import-codex:本插件負責模型和憑證,那個插件負責把 Codex 歷史會話導入 DSH。兩者不是同一倉庫,需要的話再單獨安裝。

適用場景與注意事項

適合已經在用 Codex CLI、本機有有效 ChatGPT 訂閱登錄、希望把同一份額度接到 DSH 裏做文本對話和工具調用的人。不適合:還沒裝過 Codex CLI、沒有訂閱資格、或者主要依賴多模態(圖片)輸入——當前適配器會拒絕圖片內容。訂閱額度由 OpenAI 按賬號計量,和 Codex CLI 共用同一配額,在 DSH 裏跑任務會佔用 CLI 那邊的額度。

插件會讀取、並在刷新時改寫 ~/.codex/auth.json。這是登錄態文件,不要把它提交進 git,也不要在不可信環境裏打開 writeBack。社區目錄和 README 都提醒過:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。裝之前應檢查源碼倉庫和許可證;需要可復現環境時固定 commit 哈希。

DeepSeek Harness 仍處於開發者預覽,官方說明未來可能出現破壞兼容性的變更。本插件依賴 @deepseek-ai/dsh-llm0.1.0-rc.6 包,升級 dsh 之後如果 provider 掛不上,應回到倉庫覈對版本,而不是假定永遠兼容。

小結

dsh-codex-subscription 把 Codex CLI 已經寫好的本機登錄接到 DSH:訂閱模型進選擇器,令牌跟着 CLI 熱更新,代理和默認模型寫在 settings.yaml。它不是官方應用商店裏的一等公民,而是社區按「一切皆插件」寫出來的適配器。先確認 codex login 可用、網絡能打到 ChatGPT 後端,再按目錄頁命令安裝,會比先配一把 Platform API Key 更貼近「已經付過訂閱」這件事。

目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-codex-subscription/

GitHub:https://github.com/yequ172672/dsh-codex-subscription

npm 包:https://www.npmjs.com/package/dsh-llm-codex

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜