dsh-openai-auth
solstice621/dsh-openai-auth
将本机 Codex 的 ChatGPT 登录接入 DSH 桌面版,提供账号管理、额度快照、模型自动同步和模型勾选。
安装
dsh plugin --profile web add github:solstice621/dsh-openai-authREADME
OpenAI / Codex Auth for DeepSeek Harness Desktop
在 DeepSeek Harness 桌面版连接本机 Codex 的 ChatGPT 登录,使用同一账号的 Codex 订阅额度,并在原生设置页管理授权、查看额度、同步模型,以及勾选会话中显示的模型。
原生 Harness bundle + 后端 provider + 客户端设置页 · MIT · 无安装脚本 · 无需 OpenAI Platform API key
这是独立社区插件,与 DeepSeek 或 OpenAI 的官方插件无关联。插件不增加额度,也不改变 OpenAI 的账号权限或限速规则。
截图展示
以下为 Harness 桌面端实际界面,账号邮箱已隐藏,背景工作区已收起。
账号与订阅额度

原生模型选择器

模型自动同步

停用连接

功能
| 功能 | 使用方式 |
|---|---|
| 复用已有登录 | 识别当前用户本机 Codex 的 ChatGPT 登录缓存 |
| 浏览器登录 | 点击登录,进入官方 Codex 启动的 ChatGPT 浏览器授权流程 |
| 自动续期 | token 即将过期时,由官方 Codex CLI 负责更新缓存 |
| 手动刷新 | 页面中的「刷新授权」立即请求官方续期 |
| 查看额度 | 显示官方返回的各额度窗口、剩余比例和重置时间 |
| 秒开额度 | 打开页面先显示上次读取的额度,再在后台刷新 |
| 后台刷新额度 | Harness 运行且连接启用时默认每 5 分钟刷新,不依赖设置页 |
| 管理连接 | 启用或停用 Harness 中的 Codex 连接,并保存选择 |
| 隐藏账号 | 录屏、演示或截图前隐藏邮箱 |
| 自动同步模型 | 启动时及默认每 6 小时读取官方 Codex 目录;设置页可手动刷新 |
| 筛选模型 | 搜索并勾选会话中显示的模型,自动保存、即时生效,重启后保留 |
| GPT-6.1 Sol | 补齐旧版 Harness 目录缺少的模型入口;支持 low / medium / high / xhigh / max |
| 原生对话能力 | 复用 Harness adapter 的流式输出、工具调用、历史 replay 和图片处理 |
| 系统代理 | macOS 上按当前系统 HTTP/HTTPS 代理运行,不修改系统设置 |
兼容性与前提
- 当前验证环境:macOS + DeepSeek Harness Desktop
0.2.1-rc.3+ pi-ai1.1.0,包含原生适配器和桌面模型勾选流程。此前也在 Harness0.2.0-rc.2/0.2.1-rc.2验证过;账号操作验证过 Codex CLI0.154.0和0.162.0-alpha.17.2。 - 设置页顺序:账号连接 → 订阅额度 → 模型自动同步 → 模型显示;
showModelSync: false只隐藏同步卡片,仍可勾选模型。 - 依赖声明允许 Harness
0.2.0-rc.2/0.2.1-rc.2/0.2.1-rc.3,以及配套的 pi-ai0.87.1/1.1.0;其他版本仍需验证。 - 需要本机安装官方 Codex CLI,并有可用的 ChatGPT / Codex 账号。
- 当前支持 file 存储的 Codex ChatGPT 登录,即
CODEX_HOME/auth.json或默认的~/.codex/auth.json。 - Keychain-only 存储、Windows 和 Linux 桌面环境尚未验证;macOS PAC / SOCKS-only 系统代理暂不支持。
- 额度和模型权限由 OpenAI 管理,模型出现在选择器中不代表该账号一定有调用权限。
安装到桌面版
以下从 main 安装,包含上述 Harness 兼容性修复、后台额度刷新和模型勾选功能。旧 Release 不一定包含这些更新;如需固定版本,可将地址中的 main 换成已确认的提交 SHA。
-
安装官方 Codex CLI。在终端运行
codex login status,确认使用 ChatGPT 登录;没有登录时可先运行codex login,也可安装后从插件界面登录。 -
在 Harness 左侧打开「插件」→「添加插件」。
-
输入以下 GitHub 包地址:
github:solstice621/dsh-openai-auth#main -
安装并启用插件,然后完全退出并重新打开 Harness。
-
打开「设置」→ OpenAI / Codex,确认账号已连接;也可在这里点击「登录 ChatGPT」。
-
在「模型自动同步」中点击「刷新模型」,然后在「模型显示」中搜索并勾选常用模型。
-
回到会话,在模型选择器的 OpenAI · Codex 额度 下选择模型。
本地安装可在仓库中运行 npm pack --ignore-scripts,再在「添加插件」中填写生成的 .tgz 的绝对路径。
本仓库提供可直接运行的 JavaScript 和原生 client entry,不需要执行 prepare、postinstall 或第三方安装脚本,也不需要修改 App 安装包或 asar。
若桌面启动时显示 DeepSeek 欢迎页,可选择「添加 API Key」→「稍后配置」进入,再使用 Codex 模型。
授权界面操作
使用已有账号
页面显示邮箱、ChatGPT 订阅类型、当前连接状态和授权有效期。已在 Codex 登录的账号会自动识别,无需复制 token。
登录与切换账号
点击「登录 ChatGPT」或「重新登录 ChatGPT」,浏览器会打开官方登录页面。插件页显示等待状态,提供再次打开页面和取消本次登录的按钮;完成后自动更新。等待十分钟后会取消本次尝试。
登录与本机 Codex 共用。重新登录会切换本机 Codex 的账号。 取消本次登录不会主动执行全局退出。
刷新授权
点击「刷新授权」,插件通过官方 codex app-server 请求续期,再重新读取缓存。成功后页面更新有效期。实际推理请求也会在 token 距离过期不足五分钟时自动续期。
查看额度
打开页面时,插件先显示上次成功读取的额度快照,同时通过官方 codex app-server 在后台刷新;刷新完成后数字自动替换。这样启动 Codex 的几秒钟里页面不是空的。
也可点击「刷新额度」手动读取。页面优先使用官方返回的多额度桶数据,显示每个可用窗口的剩余百分比和重置时间。缺失窗口显示不可用,网络失败会显示错误,未知数据不会被当成零。
显示缓存时,时间行标注为「上次更新」;刷新失败会保留原有数字并在下方给出原因,而不是把额度清空。缓存按账号隔离:~/.dsh/cache/dsh-openai-auth/<CODEX_HOME 哈希>/quota.json 只保存限速窗口本身,不含 token、账号 id 或任何 provider 文本,切换账号后不会复用上一个账号的快照(可用 quotaCachePath 改位置)。
DSH 运行且连接启用时,后端默认每 5 分钟自动刷新额度,即使没有打开设置页也会保存成功快照;可用 quotaRefreshMinutes 调整(1–1440 分钟)。启动时已有新鲜快照会避免重复请求;后台与手动读取并发时共用一次官方 RPC。设置页每 30 秒读取本地快照来显示后台更新,不额外触发额度网络请求。失败保留上次快照,停用或退出 DSH 时停止刷新。
退出不会清除已保存的连接开关、Codex 登录、模型目录和上次额度快照;重启后按当前账号恢复,再继续定时更新。等待浏览器登录等临时流程、正在执行的请求、隐藏邮箱等页面临时状态不会恢复。额度快照与本机 Codex 共享账号;页面时间是最近一次成功读取时间,不是实时余额。
停用与启用
「停用此连接」只阻止该 Harness provider 发起新的推理请求,并保存选择;不会退出 Codex、删除缓存或取消已有请求。点击「启用此连接」恢复使用。
自动同步模型
插件在启动时通过官方 codex app-server 的 model/list 读取模型目录,默认每 6 小时刷新;每分钟检查一次账号变化,切换账号后重新同步。设置页的「模型自动同步」卡片显示模型数量、目录来源、最近成功时间,提供「刷新模型」按钮。停用连接时自动同步暂停。
目录更新会通知 Harness 的原生模型选择器,无需重启;保留现有模型和当前选择,正在运行的请求继续使用准备请求时的模型描述。网络或读取失败时保留本账号最近成功的目录,重启后也可从本地缓存恢复。缓存只保存经过筛选的模型字段、账号标识的 SHA-256 和成功时间,不保存 token、邮箱或原始 RPC 数据。
model/list 可能使用 Codex 的内置或缓存目录,因此新模型出现速度仍取决于模型发现所使用的官方 Codex 版本及账号。默认使用 codexCommand;也可以将 modelDiscoveryCommand 指向本机另一份更新的官方 Codex 可执行文件。插件不会自动下载或运行新代码。目录更新适用于现有 Codex Responses 协议;协议变化仍需要升级插件。
只展示当前 Harness 支持的 text/image 输入及 off、minimal、low、medium、high、xhigh、max 推理选项,具体等级取决于模型目录。未知新模型若没有限额数据,使用 16,384 上下文、4,096 输出的保守本地预算,价格未知按零估计;这些不是服务端容量或价格承诺。已有模型继续保留 Harness 的限额和兼容性元数据。
选择会话中显示的模型
打开「设置 → OpenAI / Codex → 模型显示」,勾选希望在会话模型选择器中保留的模型。每次勾选自动保存并即时更新,无需重启;支持按名称或 ID 搜索、全选、全不选和恢复默认。
| 操作 | 会话中的模型列表 | 之后同步到的新模型 |
|---|---|---|
| 初次使用 / 恢复默认 | 显示完整目录 | 自动显示 |
| 手动勾选 / 全选 | 只显示已选模型;全选勾选当前完整目录 | 需要手动勾选 |
| 全不选 | 隐藏该插件的全部模型 | 需要手动勾选 |
设置页始终保留完整目录,即使全不选也能重新勾选。选择会随 Harness 配置保存并在重启后恢复;暂时不在目录中的已选 ID 也会保留。保存失败时页面会提示并恢复上次已保存的选择。
筛选只影响会话模型列表,不主动切换已有会话或默认模型;已有请求继续使用原来的模型描述。
配置
桌面进程的 PATH 可能找不到 Codex。用 command -v codex 查询可执行文件,然后在桌面 profile 的 cordis.patch.yml 配置插件:
- id: dsh-openai-auth
name: dsh-openai-auth
config:
codexCommand: /absolute/path/to/codex
# 可选;默认 CODEX_HOME 或 ~/.codex
# codexHome: /absolute/path/to/.codex
# useSystemProxy: true
# refreshSkewSeconds: 300
# selectedModelIds: null # 默认显示全部;也可填写模型 ID 列表
# showModelSync: true
# modelRefreshMinutes: 360
# quotaRefreshMinutes: 5
# modelDiscoveryCommand: /absolute/path/to/current/official/codex
# modelCachePath: /absolute/path/to/models.json
| 字段 | 默认值 | 说明 |
|---|---|---|
enabled | true | 可在界面实时修改并保存 |
selectedModelIds | 未设置 / null | 会话中显示的模型 ID;未设置显示全部,[] 隐藏全部;实时修改并保存 |
codexCommand | codex | 官方 Codex CLI 的命令或绝对路径 |
codexHome | CODEX_HOME 或 ~/.codex | 登录缓存所在目录 |
refreshSkewSeconds | 300 | 提前续期窗口,范围 0–3600 秒 |
showModelSync | true | 显示模型同步卡片;设为 false 仍保留模型显示卡片 |
modelRefreshMinutes | 360 | 自动目录刷新周期,范围 5–10080 分钟 |
quotaRefreshMinutes | 5 | 后端额度刷新周期,范围 1–1440 分钟;关闭设置页仍运行 |
modelDiscoveryCommand | codexCommand | 模型发现所用官方 Codex,可配置较新的本机版本 |
modelCachePath | ~/.dsh/cache/dsh-openai-auth/<home-hash>/models.json | 经过筛选的模型元数据缓存;按 Codex 目录分开、按账号校验 |
quotaCachePath | ~/.dsh/cache/dsh-openai-auth/<home-hash>/quota.json | 上次成功的额度快照;按账号校验,默认位置跟随 DSH_HOME |
useSystemProxy | macOS 为 true | 没有 Harness 显式代理时,沿用当前系统静态 HTTP/HTTPS 代理 |
连接开关和模型显示选择即时生效;修改其他配置后请重启 Harness。
凭据、权限与网络
- 插件读取当前用户指定目录中的 Codex 登录缓存,校验 ChatGPT 登录类型、账号一致性和 token 有效期。
- 插件不把 access/id/refresh token 写入 Harness 设置或浏览器存储;UI 只接收允许展示的账号字段、状态与额度。
- 登录和续期由官方 Codex CLI 负责写入 Codex 缓存;插件不自行实现 refresh token 轮换。
- 后端会启动所配置的 Codex 可执行文件,使用 app-server 的账号 RPC。请只配置自己信任的官方 CLI 路径。
- 对话内容按正常模型调用发送给 OpenAI。账号、登录和额度请求通过官方 Codex;插件没有自己的统计或中转服务。
- 模型缓存以本地私有权限写入
~/.dsh/cache/dsh-openai-auth/,只记录模型元数据和不可逆账号摘要;切换账号不会加载另一账号的目录。 - 页面操作经过 Harness 原生
/api认证边界,卸载插件时撤销其路由和后台资源。 - macOS 读取当前系统代理时会调用系统自带的
scutil。如果 Harness 已有显式代理,优先沿用该配置。 - 使用系统代理时,代理设置变化会阻止后续请求并提示重启,不会自动修改操作系统代理或启动 VPN。
apiKey 是底层 pi-ai 的通用 bearer-token 传递接口;本插件传入的是 Codex OAuth access token,不接受 OpenAI Platform API key,也不会回退到 API 按量计费。
常见问题
显示未登录或无法读取缓存:确认 Codex 使用 ChatGPT 登录。Keychain-only 用户若希望使用本插件,可自行运行 codex -c cli_auth_credentials_store='file' login;插件不会自动修改凭据存储偏好。
无法启动 Codex:配置 codexCommand 为真实绝对路径,再重启 Harness。
网络超时或代理已切换:检查当前网络与代理是否可达,重启 Harness,再刷新授权。不要把仅在特定网络可用的代理永久启用。
设置页没有出现:确认已安装 main 或包含当前 Harness 兼容性修复的包,并在启用后完全退出、重新打开 Harness。
新模型没有出现在会话列表:先在「模型自动同步」中刷新,再到「模型显示」搜索模型并勾选;手动筛选或「全选」后,新模型不会自动加入。需要持续显示所有新模型时点击「恢复默认」。目录本身缺少模型时,检查账号及用于发现模型的官方 Codex CLI 版本。
模型调用被拒绝:检查账号权限、额度和限速,尝试该账号可用的模型。模型目录和勾选状态并非账号权限证明。
为什么已有会话没自动换模型:插件不会重写旧会话;请在会话模型选择器中切换。
如何卸载:先选择其他 provider,再在 Harness「插件」页停用或卸载本插件。Codex 自己的登录保持由 Codex 管理。
验证与开发
npm test
npm pack --ignore-scripts
当前实现的验证记录(插件 0.3.3-local.5):
- 65 项测试通过:覆盖授权、额度快照与账号隔离、后台刷新与并发去重、模型发现与缓存、模型筛选和保存失败恢复、代理及卸载清理。
- Harness
0.2.1-rc.3原生适配器通过:模型列表筛选、隐藏模型的精确查询、已准备请求和配置 schema 均通过验证。 - 桌面设置页通过:搜索、勾选、即时更新会话模型列表及页面重载后的选择恢复已验证。
此前还验证过官方登录启动与取消、真实续期、额度查询,以及原生流式推理、工具调用和历史回放。模型可用性以各账号实际权限和额度为准。更早的验证细节见 验证记录。
English overview
A native bundle and settings plugin for DeepSeek Harness Desktop. It reuses the local official Codex ChatGPT login, adds browser sign-in and managed token refresh, and refreshes quota and model data in the background. Search and check models in Settings → OpenAI / Codex → 模型显示 to control the conversation picker; changes apply immediately and persist across restarts. Reset to defaults to include future models automatically; a custom selection or Select all requires selecting newly discovered models manually.
Install from github:solstice621/dsh-openai-auth#main for the current compatibility and model-selection updates. The current native adapter and desktop selection flow were verified on macOS with Harness 0.2.1-rc.3 and pi-ai 1.1.0; earlier checks also cover 0.2.0-rc.2 and 0.2.1-rc.2. File-based Codex ChatGPT login storage is required. Credentials stay managed by Codex. This independent community plugin is not an official OpenAI or DeepSeek product.