插件目录 / Developer / dsh-llm-codex-oauth
dsh-llm-codex-oauth
已验证 · 实测可装 Player-MINEPIG
功能简介
在 dsh(DeepSeek Harness)里使用你的 ChatGPT / Codex 订阅。插件通过 OpenAI Codex 的 OAuth 流程登录 ChatGPT 账号,把订阅额度暴露成 dsh 的 `codex-oauth` 模型提供方。
已归档 — 不再维护,谨慎使用
该插件已归档、不再维护——除非你愿意自己维护,否则慎用。
「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。
README
dsh-llm-codex-oauth
English | 中文
[!IMPORTANT]
本项目已停止维护
由于 DeepSeek Harness 持续发生破坏性更新,而个人维护精力有限,本项目不再跟进后续兼容性更新,也不再承诺修复新版本中的问题。本仓库已归档,下方内容仅作为最后维护版本的历史文档保留。
推荐替代品:
- WSL043/dsh-codex-subscription — 首选的一对一替代,适合主要使用 ChatGPT/Codex 订阅的用户。
- V1ki/dsh-plugin-subscriptions — 推荐的多订阅上位替代,支持 Codex、Claude、Grok 和 GitHub Copilot。
其他轻量或进阶选择及迁移注意事项,请参阅替代品与迁移指南。以上均为独立第三方项目,与本项目不存在维护或担保关系。
本项目由 DeepSeek-V4-Pro 在 DeepSeek Harness 用时约 3h 不到完成,未进行完整 Code Review,仅人工审查确保基础功能可用,使用前需了解安全风险并自行为此负责。
在 dsh(DeepSeek Harness)里使用你的 ChatGPT / Codex 订阅(Plus / Pro / Business / Edu)。插件通过 OpenAI Codex 的 OAuth 流程登录 ChatGPT 账号,把订阅额度暴露成 dsh 的 codex-oauth 模型提供方。
⚠️ 风险提示:本插件调用 ChatGPT 网页版后端(
chatgpt.com/backend-api),这是一个未公开、官方不支持的接口,违反 OpenAI 服务条款的风险真实存在,可能导致账号受限。请自行评估后使用。
目录
功能特性
- 订阅模型接入:把 pi-ai 内置的
openai-codexprovider(openai-codex-responses线上协议)注册为 dsh LLM seam 的codex-oauth提供方;模型目录随所装 pi-ai 维护(如gpt-5.3-codex-spark、gpt-5.4、gpt-5.5、gpt-5.6-*等)。 - 图片输入:Web 粘贴或拖放走 dsh 耐久附件(PNG / JPEG / WebP / GIF);仅目录声明
image的模型会接收(多数 gpt-5.x;gpt-5.3-codex-spark仍为纯文本)。read_image等工具结果里的图也会转发到下一轮。 - OAuth 设备码登录:走
auth.openai.com(与 Codex CLI 同一 OAuth client),headless 友好,无需本地回调服务器。 - 凭据安全:refresh / access token 只存在 dsh 凭据库
$DSH_HOME/.credentials.yaml(0600),不进配置、不进会话日志、不进本仓库;access token 过期时由 pi-ai 在串行化的写路径里自动用 refresh token 续期。 - 设置页登录:在设置页提供「Codex 订阅 (ChatGPT)」区块,含登录 / 登出按钮与实时状态;对话侧仅保留只读的
/codex-status、/codex-logout命令。 - 多轮对话:完整保留 provider 原生回放元数据(签名等),支持跨轮次多轮请求。
安装
免 pnpm 的一键安装(本地 / 开发用,跨平台)
不想装 pnpm、也不想手动找 profile 目录时,仓库脚本会替你复制插件并登记 bundle(Windows / macOS / Linux 通用,用 Node 即可,无需 bash):
node scripts/install.mjs # 默认装到 web profile
node scripts/install.mjs headless # 指定其他 profile
脚本会自动定位 $DSH_HOME(默认 ~/.dsh),把插件复制进 DSH 实际优先解析的 node_modules 并写入 bundle 列表,全程不碰 pnpm。Windows 上在 cmd / PowerShell 里直接运行同一命令即可,插件本身是纯 Node 实现,不依赖 bash / pwsh。
更新已有安装前先停止对应的 dsh 进程,然后重复运行同一命令。脚本会识别脚本管理的共享安装和 profile 内由 pnpm 管理的安装,在目标旁完成暂存与可回滚替换,并删除会遮蔽新版的重复副本。OAuth 凭据位于 $DSH_HOME/.credentials.yaml,刷新插件目录不会读取、移动或删除凭据。
对应的卸载脚本:
node scripts/uninstall.mjs # 从 web profile 卸载
node scripts/uninstall.mjs headless # 从其他 profile 卸载
(若当初是用 dsh plugin add(pnpm)安装的,优先用官方 dsh plugin --profile <name> remove dsh-llm-codex-oauth;卸载脚本也会顺带清掉 manifest 里的条目作为兜底。)
手动命令行安装
# 前置 1:需要 pnpm(dsh plugin 转发给它)。没有的话先:npm install -g pnpm
# 前置 2:需要 dsh CLI,二选一:
# · 全局安装(推荐):npm install -g @deepseek-ai/dsh
# · 临时使用:把下面命令里的 dsh 换成 npx @deepseek-ai/dsh
# 已全局安装 dsh 时:
dsh plugin --profile web add file:/path/to/dsh-llm-codex-oauth
# 未全局安装、临时用 npx 时:
npx @deepseek-ai/dsh plugin --profile web add file:/path/to/dsh-llm-codex-oauth
# 重启 dsh web 使新 bundle 生效
必须用
file:前缀。直接传目录路径时 pnpm 会以link:(软链到本仓库)安装,
Node 按真实路径解析插件内部依赖时会找不到node_modules而加载失败;file:会把包复制进 profile 的依赖树(已实测验证)。
pnpm 11 的 minimum-release-age 门禁会自动放行本插件依赖的 rc 包,无需额外配置。pnpm 11 的 ignored-builds 提示会让
dsh plugin报 "pnpm failed"(依赖其实已装好)。
修复:把 profile 目录pnpm-workspace.yaml里 pnpm 生成的allowBuilds:占位值改为false
(@google/genai、protobufjs的构建脚本对本插件无关紧要),然后重跑同一命令完成 bundle 对账。
验证安装完成
安装后 dsh --profile web --dump-config(或 npx @deepseek-ai/dsh --profile web --dump-config)应能看到 llm-codex-oauth 行。
更新插件代码:
file:安装是硬链接快照,编辑器替换式写入不会被 pnpm 感知,直接重跑add可能不会刷新。推荐先停止 dsh,再从仓库运行一键脚本;它会刷新当前真正生效的安装位置,
不需要为本地迭代反复 bump version:node scripts/install.mjs如果坚持只使用 pnpm,则必须完整 remove/add:
dsh plugin --profile web remove dsh-llm-codex-oauth dsh plugin --profile web add file:/path/to/dsh-llm-codex-oauth # 未全局安装 dsh 时,把上面的 dsh 换成 npx @deepseek-ai/dsh
使用
- 重启 dsh 后打开设置页,侧栏选择「Codex 订阅 (ChatGPT)」。
- 点击「登录 ChatGPT 账号」,按提示打开验证网址、输入设备码并登录你的 ChatGPT 账号。
- 状态变为「已连接」后,在 Models 设置页把模型切到
codex-oauth提供方下的某个模型。 - 登出:回设置页点「登出」,或在对话里输入
/codex-logout;/codex-status可随时查看状态。
工作原理
| 组件 | 说明 |
|---|---|
src/adapter.js |
LlmAdapter 实现:codex 流 → dsh StreamChunk 协议、签名回放、错误分类、空闲看门狗;用户/工具结果里的图片经 ctx.attachments 转成 pi-ai ImageContent |
src/store.js |
pi-ai CredentialStore ↔ dsh 凭据库的桥(串行化读写,token 不出宿主) |
src/login.js |
设备码登录编排(pi-ai 官方流,自动持久化凭据) |
src/server.js |
宿主 webServer 挂 /codex-oauth HTTP 路由(status / login / logout),供浏览器半调用 |
src/client.js |
浏览器半:设置页 settings.section 区块,经 build.mjs 打包成 client-modules 工厂格式 |
src/commands.js |
只读命令 /codex-status、/codex-logout |
开发
- 纯 ESM JavaScript;宿主半无构建步骤(命名导出
apply/inject/name)。 - 浏览器半用 esbuild 打包:
node build.mjs(React 外部化为require("react"),复用宿主实例)。 dsh.bundle.patch指向cordis.patch.yml,dsh plugin add安装后自动加入 profile 的 bundle 层。npm test在临时DSH_HOME中验证重复安装、pnpm 内层快照刷新、凭据不变和 profile 路径校验,无需网络或真实凭据。- 测试套件在
test/:smoke.mjs(provider 路由 / HTTP 端点 / 命令 / 凭据库)、stream-test.mjs(流翻译、回放、错误分类、选项装配、图片附件转换,含多轮回放回归用例)、login-smoke.mjs(设备码流联网冒烟,不涉及账号)。它们通过 profile 依赖树解析依赖,放进已安装本插件的 profile 目录运行:cp test/*.mjs .testhome/profiles/codex-test2/ && cd .testhome/profiles/codex-test2 node smoke.mjs && node stream-test.mjs && node login-smoke.mjs - 已知限制:
- Codex ChatGPT 后端不接受
temperature、maxTokens、stop。前两项会静默忽略(SillyTavern / dsh-tavern 预设几乎总会带温度);stop仍拒绝。reasoningEffort与sessionId会继续下发。 - 不做图片生成。 Codex 生图走独立的
/codex/images/generations与/edits,不是对话流的一部分。有 ChatGPT / Codex 订阅时请直接用 Codex CLI / App,或安装更成熟、更通用的生图插件;本仓库只做订阅模型接入和看图。 - PDF / Office 等非图片不会作为多模态块发送;放入工作区后用文件工具读取。
- 看图需要 profile 挂载
attachments(web 默认有);纯文本模型或未挂载附件服务时,图片请求会被拒绝。 - 模型目录跟随所装 pi-ai 版本;登录状态(设备码)仅存于进程内存,重启后以凭据库为准。
- Codex ChatGPT 后端不接受
安全与合规
- 仓库内不包含任何秘密。推送到 GitHub(公开或私有)前请确认
.gitignore生效,永远不要提交$DSH_HOME/.credentials.yaml或其中内容。 - 本插件使用未公开的 ChatGPT 后端接口,存在违反 OpenAI 条款、账号受限的风险,使用者自担风险。
License
MIT
安装
装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:
dsh plugin add dshbase-catalog 然后对 agent 说「帮我装 dsh-llm-codex-oauth」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。
该插件是 GitHub 源码(未发 npm)——直接从仓库装:
Web profile:
dsh plugin --profile web add github:Player-MINEPIG/dsh-llm-codex-oauth Headless(CLI)profile:
dsh plugin --profile headless add github:Player-MINEPIG/dsh-llm-codex-oauth 实测报告
验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。
使用场景
扩展 agent 的编码能力面——给它一个新工具、工作流或集成,让它接手以前做不了的开发任务。
适合谁
想让 dsh 在真实代码库上像队友一样干活的开发者——能改、能跑、能验证,而不只是回答问题。
二次开发建议
工具/命令面就是缝:暴露更多 SDK 能力、加更聪明的上下文接线,或收紧改代码与验证之间的循环。