前言¶
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.2。package.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 写得很清楚:
| 凭证形态 | 端点 | 认证方式 |
|---|---|---|
tokens(auth_mode: chatgpt,订阅) |
https://chatgpt.com/backend-api/codex/responses |
Bearer access_token,并带上 chatgpt-account-id 等 Codex 请求头 |
OPENAI_API_KEY(auth_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 后会再读磁盘上的旧令牌并重新刷新。
模型目录与协议¶
模型列表按优先级组装:
- 配置里显式给出的
staticModels - 实时请求
GET {base}/codex/models - 失败则读
~/.codex/models_cache.json - 再失败则用内置静态列表
内置兜底包括 gpt-5.6-sol、gpt-5.6-luna、gpt-5.6-terra、gpt-5.5、gpt-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 列出四条,缺一不可:
- 已经安装 dsh 本体。没有
dsh命令时,先按官方仓库安装,例如:
npm install -g @deepseek-ai/dsh
dsh --version
DeepSeek 官方仓库当前推荐也可以直接 npx @deepseek-ai/dsh web 启动 Web UI。插件本身是 profile 层,必须先有可用的 dsh。
- 已经安装 pnpm。
dsh plugin会转发给它,缺失时 CLI 会提示。 - 已经执行过
codex login。插件不负责弹出登录页,只读本机凭证。 - 能访问
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)、authFile、modelsCacheFile、staticModels。
设成默认模型¶
同样写在 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-llm 等 0.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