用 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

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

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

小夜