给 DSH 接 OpenAI Codex 设备码 OAuth,用 ChatGPT Plus/Pro 订阅跑 Codex 模型,免 API Key。
- 语言
- JavaScript
- License
- MIT
- 分支
- main
安装
$ dsh plugin --profile web add dsh-codex-provider在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
对话式安装
帮我安装 DeepSeek Harness 插件 Hu9956/dsh-codex-provider:先查看仓库 https://github.com/Hu9956/dsh-codex-provider 确认安全性,然后执行安装命令并验证插件加载成功。
把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。
一句话定位
给 DSH 接上 OpenAI Codex:通过设备码 OAuth 登录你的 ChatGPT 账号,把 ChatGPT Plus / Pro 订阅额度接到 DSH 自带的 openai-codex 模型路由上,免去 API Key。
核心能力
- 设备码 OAuth 登录:在「设置 → 供应商」点击登录后,按页面显示的设备码去 OpenAI 授权页完成登录,无需准备 API Key
- 复用 Codex CLI 登录态:直接读取本机
~/.codex/auth.json中已有的 access/refresh token,省掉二次授权 - 自动刷新令牌:后台每分钟检查 access token 过期时间,剩余不足 10 分钟时用 refresh_token 自动轮换(refresh_token 也会一起换新)
- 跨实例刷新锁:通过
~/.dsh/.codex-provider-refresh.lock文件锁保证同机多 DSH 进程串行刷新,避免互相踩坏 token - 供应商管理面板:登录后展示脱敏账号、套餐(Plus/Pro)、令牌过期时间,支持一键退出登录
- 自动激活内置 Codex 路由:登录成功后将
OPENAI_CODEX_API_KEY写入llm-pi-ai.providers.openai-codex.apiKeyEnv,模型选择器里gpt-5.4等 Codex 模型直接可选
技术实现
- 语言: JavaScript (ESM,
"type": "module"),源码无 TS 类型标注但依赖 DSH 的 Typert 装饰器运行时 - 关键依赖:
@deepseek-ai/dsh-typert-protocol(Remote/TypertRemoteService,host-client 远程调用)、@deepseek-ai/dsh-credentials(凭证存取)、@deepseek-ai/dsh-settings(写入llm-pi-ai.providers.openai-codex.apiKeyEnv) - 架构模式: 双端插件 + Typert 远程服务。host 侧
CodexGateway继承TypertRemoteService暴露status/loginStart/loginStatus/loginCancel/importExisting/logout六个远程方法;client 侧用__ModuleLoader__格式注册 UI 组件并$mount同一份远程描述,实现浏览器端不接触原始 token - 入口文件:
lib/index.js(host)、lib/client.js(web bundle),安装时由cordis.patch.yml注入 DSH bundle
适用场景
拥有 ChatGPT Plus / Pro 订阅、又想把 Codex 系列模型(gpt-5.4、gpt-5.5、gpt-5.6-*)放进 DSH 模型选择器的用户。痛点是 DSH 自带的 openai-codex 路由只认凭证引用而没有自带登录入口,没有这个插件时要么掏 API Key 计费、要么手动维护 token。本插件补上登录 UI、令牌刷新和凭证回收这最后一公里。同样适合已经跑 Codex CLI 想复用本机登录态、避免重复授权的人。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| @deepseek-ai/dsh | >=0.1.0-rc.6 | 通过 peerDependencies 声明(typert-protocol / credentials / settings 等 host 包均要求同版本号) |
| @deepseek-ai/cordis | ^4.0.1 | host 插件运行时,peerDependencies 中标为 optional |
| Node.js | >=22 | package.json engines.node 硬要求 |
| React | ^18.2.0 | client 渲染依赖,仅在使用 web profile 时需要 |
| 平台 | 跨平台 | host 代码无平台绑定;用户面仅支持 DSH web profile(client.platform = "web"),CLI/TUI 场景不在此插件覆盖范围 |
| 原生模块 | 无 | 全部为纯 JS + Node 内置模块(node:fs / node:os / node:path)+ fetch |
安装方式
dsh plugin --profile web add dsh-codex-provider
安装时会自动写入 cordis.patch.yml,无需手动编辑。完成后重启 dsh web,在「设置」侧栏出现 供应商 分区即可使用。
配置项
本插件无需额外配置。所有运行时状态(access token、refresh token、登录会话)通过 DSH 凭证库与 settings 写入,不读取任何 Schema 字段。
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| — | — | 本插件无需额外配置 | — |
进阶信息(仅供参考,源码中未声明为用户配置项):刷新锁文件路径由环境变量
DSH_HOME决定,默认~/.dsh/.codex-provider-refresh.lock;凭证引用写入llm-pi-ai.providers.openai-codex.apiKeyEnv,设备码登录入口在https://auth.openai.com/codex/device。
常见问题
Q: 需要 OpenAI API Key 吗?
A: 不需要。本插件消费的是 ChatGPT Plus / Pro 订阅额度,与 Codex CLI 走同一套 OAuth 通道,不走 API 计费。
Q: 已经装了 Codex CLI,能复用登录吗?
A: 可以。在供应商页点击「导入本机 Codex CLI 登录态」,插件直接读取 ~/.codex/auth.json,无需重新走设备码授权。
Q: 登录失败提示设备码授权被拒绝怎么办?
A: 需要先在 ChatGPT 网页端「设置 → 账户安全与登录」中打开「为 Codex 启用设备代码授权」开关。登录成功后建议关掉,下次登录前再打开。
Q: 令牌会自动刷新吗?需要手动操作吗?
A: 自动。host 侧每 60 秒检查一次,access token 剩余寿命低于 10 分钟就用 refresh_token 换新(refresh_token 也会一起轮换),多 DSH 进程之间通过文件锁串行避免竞争。
Q: 凭证存在哪里?浏览器能看到吗?
A: 凭证写入 DSH 凭证库(key 为 OPENAI_CODEX_API_KEY 与 OPENAI_CODEX_REFRESH_TOKEN),浏览器侧只能拿到脱敏账号 ID、套餐类型、过期时间等状态信息,原始 token 不会下发到前端。
Q: 同时跑 Codex CLI 会被踢下线吗?
A: 共享同一 OAuth 会话。任一侧刷新令牌后,另一侧的旧 refresh_token 可能失效,此时在 Codex CLI 侧重新 codex login 即可恢复。
Q: 支持哪些模型?
A: 由当前 DSH 版本内置的 openai-codex 路由决定,README 举例包括 gpt-5.4、gpt-5.5、gpt-5.6-* 等;具体可见性还要看你的 OpenAI 账户权限。
Q: 怎么卸载?
A: 通过 dsh 移除该插件即可。host 侧会自动清空凭证库两条 key,并撤销 settings 中的 apiKeyEnv 引用,重启后设置里的「供应商」分区消失。
上手难度
入门 — 仅需在「设置 → 供应商」点击一次「使用 OpenAI 账号登录」,按页面引导完成设备码授权即可;不涉及代码改动、配置文件或环境变量。
已知问题与限制
- 设备码授权依赖 OpenAI 账户设置:登录前必须先在 ChatGPT 网页端开启「为 Codex 启用设备代码授权」,否则 OAuth 端会拒绝发放设备码(README.md:44-46)
- 与 Codex CLI 共享 OAuth 会话:任一侧刷新令牌后,另一侧持有的旧 refresh_token 可能失效,需要在失效侧重新登录(README.md:57)
- 仅支持 DSH web profile:客户端 bundle 声明
platform: "web",CLI/TUI 场景不在此插件覆盖范围(package.json:57) - 设备码有效期 15 分钟:从拿到设备码起 15 分钟内未完成授权即过期,需要重新发起登录流程(lib/index.js:23)
- 刷新锁等待上限 45 秒:同机多 DSH 进程同时触发刷新时,第二个进程最多等 45 秒;锁文件超过 2 分钟未释放会被视为陈旧锁自动回收(lib/index.js:26-27)
- 依赖 DSH RC 版本:当前针对
@deepseek-ai/dsh 0.1.0-rc.6验证,DSH 后续若调整插件接口,本插件可能需要同步升级(README.md:70)
DeepSeek Harness (DSH) 供应商插件:OpenAI Codex(ChatGPT Plus/Pro 订阅) 的设备码 OAuth 登录、令牌自动刷新与供应商管理。
在 DSH 设置中新增 “供应商” 分区,通过设备码授权登录 OpenAI 账号后,即可在模型选择器中使用 DSH 内置的 openai-codex 模型(gpt-5.4、gpt-5.5、gpt-5.6-* 等),消费你的 ChatGPT Plus / Pro 订阅额度。
✨ 功能
- 设备码 OAuth 登录:在界面点击“使用 OpenAI 账号登录”,按提示完成设备码授权,无需 API Key
- 导入 Codex CLI 登录态:直接复用本机
~/.codex/auth.json中已有的登录(无需重新授权) - 令牌自动刷新:后台定期检查 access token,过期前自动用 refresh token 轮换(refresh_token 也会一并轮换)
- 供应商管理界面:设置 → 供应商,展示登录状态、账号、套餐(Plus/Pro)、令牌过期时间,支持退出登录
- 激活内置 Codex 模型:登录后
openai-codex路由自动激活,模型选择器直接可选
📦 安装
dsh plugin --profile web add dsh-codex-provider
插件包自带 DSH bundle 配置,安装时会自动加入 profile,无需手动编辑 cordis.patch.yml。
重启 dsh web 服务(Ctrl+C 后重新运行启动命令),刷新页面即可在 设置 → 供应商 看到入口。
也可以从 GitHub 安装当前源码版本:
dsh plugin --profile web add github:Hu9956/dsh-codex-provider
🚀 使用
- 打开 设置 → 供应商
- 点击 “使用 OpenAI 账号登录”,按页面提示完成设备码授权
- 登录成功后,在模型选择器中选择 Codex 模型(如
gpt-5.4)开始使用
设备码授权注意事项(页面也会显示)
- 登录前:请先在 ChatGPT 网页端 → 设置 → 账户安全与登录 中打开“为 Codex 启用设备代码授权”开关(未开启将无法授权);
- 授权:先复制页面显示的设备代码,再点击“使用 OpenAI 账号登录”,按提示填入该设备代码;
- 登录后:建议返回 ChatGPT 网页端关闭该开关——不影响本次登录,但下次重新登录前需重新开启。
⚙️ 工作原理
- 设备码 OAuth 流程直接对接
auth.openai.com,令牌直连chatgpt.com/backend-api(与官方 Codex CLI 相同的通道与认证方式) - access token / refresh token 存入 DSH 凭证库(
OPENAI_CODEX_API_KEY/OPENAI_CODEX_REFRESH_TOKEN);仅 Host 侧在请求和刷新时解析,绝不返回浏览器 - 凭证引用写入
llm-pi-ai.providers.openai-codex.apiKeyEnv,激活 DSH 内置的openai-codex路由(routeAuth会在 OAuth 旁附加 harness apiKey 通道) - 后台任务每分钟检查 access token 过期时间,剩余不足 10 分钟时自动刷新并轮换;同机多实例通过刷新锁串行处理
⚠️ 注意事项
- 与 Codex CLI 共享同一 OAuth 会话:任一侧刷新令牌后,另一侧持有的旧 refresh token 可能失效(届时在 Codex CLI 侧重新
codex login即可) - 不需要 API Key:本插件消费的是 ChatGPT 订阅额度,不是 OpenAI API 计费
- 需要 DSH
>= 0.1.0-rc.6 - 可用模型由当前 DSH 版本和 OpenAI 账户权限决定
🔒 安全与隐私
- access token 与 refresh token 只写入 DSH 凭证库;浏览器端只接收脱敏账号信息和登录状态
- 请勿在 Issue、Discussion、日志或截图中公开设备代码、OAuth token、
~/.dsh/.credentials.yaml或~/.codex/auth.json的内容 - 安全问题请按 SECURITY.md 通过 GitHub 私下报告
兼容性
当前版本针对 @deepseek-ai/dsh 0.1.0-rc.6 和 Node.js 22 验证。DSH 尚处于 RC 阶段,后续版本若调整插件接口,本插件也可能需要同步升级。
🛠️ 开发
| 文件 | 说明 |
|---|---|
lib/index.js | host 插件:设备码 OAuth、凭证存取、令牌刷新、Typert Remote 服务(codexProvider) |
lib/client.js | client 插件:设置页“供应商”分区 UI(ModuleLoader bundle 格式) |
📄 License
免责声明
这是社区维护的非官方插件,与 OpenAI、DeepSeek 或 DeepSeek Harness 官方没有隶属或背书关系。OpenAI、ChatGPT、Codex 和 DeepSeek 等名称与商标归各自权利人所有。
查看使用指南 →
该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。
收录徽章
[](https://deepseek-plugin.org/plugins/Hu9956/dsh-codex-provider)把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。