DeepSeek Harness 插件:使用 Codex 訂閱模型

前言

DeepSeek Harness (DSH) 支持通過插件擴展功能。針對 Codex CLI 用戶,如果希望在 DSH 中直接使用 Codex 的訂閱模型(如 gpt-6-astra),需要解決後端接口不兼容的問題。dsh-codex-provider 插件通過適配器層,將 DSH 與 ChatGPT 的訂閱後端連接起來,複用 OAuth 會話憑證。

插件介紹

這是一個由 HaydenSmith1121 維護的插件,旨在爲 DeepSeek Harness 提供對 Codex 模型的支持。它不依賴 API Key,而是讀取 Codex CLI 登錄後的會話信息(~/.codex/auth.json),通過 OAuth 認證訪問訂閱模型。

核心價值在於:不需要購買 OpenAI API Key 即可使用 Codex 的模型,且不產生額外的按 token 計費賬單,僅消耗 ChatGPT 訂閱額度。

安裝與啓用

Web Profile

安裝插件:

dsh plugin --profile web add dsh-codex-provider

安裝完成後,重啓 dsh web,進入 設置 → 模型,即可看到 Codex (ChatGPT) 選項。

Headless Profile

dsh plugin --profile headless add dsh-codex-provider

安裝後,需要在 headless.patch.yml 中配置默認模型:

- id: agent-default-model
  config:
    provider: codex
    model: gpt-6-astra

核心能力

插件實現了以下功能:

  • 流式輸出:支持 SSE 逐幀轉換,邊生成邊顯示。
  • 工具調用:支持 function_call / function_call_output 與 DSH 的 tool-call / tool-result 映射。
  • 推理檔位:支持 low 到 ultra 等檔位,不支持該檔位時會明確報錯。
  • 思考內容:支持展示 reasoning_summary 事件。
  • 圖片輸入:支持上傳圖片並轉換爲 input_image。
  • 多輪歷史:支持助手輪次與工具結果的回放。
  • 用量顯示:讀取訂閱剩餘額度。

工作原理與網絡

認證與會話

插件必須依賴 Codex CLI 已登錄的會話。它讀取 ~/.codex/auth.json 中的 access/refresh token。插件僅讀取該文件,不會寫回數據,也不會影響 codex 命令本身的登錄態。

網絡與代理

由於 Codex 後端接口不在 api.openai.com,且後端在受限網絡下無法直連,插件自行實現了 HTTP CONNECT 隧道:

export HTTPS_PROXY=http://127.0.0.1:7897
  • NO_PROXY 生效(支持域名後綴匹配)。
  • 本機地址(127.0.0.1、localhost)永不走代理。
  • 不使用 Node 全局 fetch,而是自己實現傳輸層。

源站容災

Codex 後端有兩個等價源站,插件在主源站(https://chatgpt.com/backend-api/codex)連接失敗(TRANSPORT / TIMEOUT)時會自動切換至備用源站(https://chat.openai.com/backend-api/codex)。

模型探測

模型目錄並非硬編碼,而是從後端 /models 接口實時獲取。插件會從本地 Codex 安裝中探測 client_version,確保請求頭與第一方客戶端一致。

已知限制與錯誤碼

已知限制

  • 依賴訂閱:依賴 ChatGPT 訂閱的可接受使用政策。
  • 接口變動:後端接口不是公開契約,可能隨時變化。
  • Stop 序列:不支持 stop 序列,會報 UNSUPPORTED_OPTION。
  • 用量面板:用量顯示依賴未文檔化的後端接口,解析失敗時會靜默降級。

錯誤碼說明

DSH 按路由碼恢復策略,以下是插件定義的錯誤分類:

場景 Code 說明
沒有可讀的 Codex 會話 MISSING_CREDENTIAL 提示運行 codex login
憑證被拒絕 AUTH 401/403,作廢緩存 token
訂閱額度耗盡 QUOTA usage_limit_reached,需等待重置
請求頻率限制 RATE_LIMIT 瞬時 429,可重試
超出上下文 CONTEXT_WINDOW_EXCEEDED
後端不提供該模型 UNKNOWN_MODEL
模型不支持圖片 UNSUPPORTED_CONTENT
不支持 stop 序列 UNSUPPORTED_OPTION 明確拒絕
模型不支持該推理檔位 UNSUPPORTED_REASONING_EFFORT
連接/超時/代理拒絕 TRANSPORT / TIMEOUT / PROXY_REJECTED
模型返回空回覆 EMPTY_RESPONSE 可安全重試

參考資源

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

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

小夜