dsh-openai-codex-auth
Device-code-first OpenAI Codex login and same-origin Web integration for DeepSeek Harness
pure01fx
@pure01fx
⬇ 1
★ 0
main
安装
dsh plugin --profile web add github:pure01fx/dsh-openai-codex-auth
需要可复现安装时,可在仓库后追加 #commit 固定提交。
Device-code-first OpenAI Codex login and same-origin Web integration for DeepSeek Harness
该插件未提供要点说明,请参考仓库 README。
- 安装并启动 DeepSeek Harness:
npx @deepseek-ai/dsh web - 在终端执行上面的安装命令(CLI 会解析插件并核验来源)
- 用 dsh plugins list 确认已安装,必要时重启 Harness 生效
插件以当前 dsh 进程的权限运行,安装时可能执行代码。请先通读仓库源码与许可证,确认无破坏性命令与越权访问;本站只做索引,不对第三方插件安全性作担保。
| 代码仓库 | github.com/pure01fx/dsh-openai-codex-auth |
| 许可证 | MIT |
| 主要语言 | main |
| 下载量 | 1 |
| GitHub 星标 | 0 |
| 最近推送 | 2026-08-16 |
| 收录日期 | 2026-09-19 |
| 分类 | 工具与能力 |
事实信息来自公开插件目录快照(2026-10-01),介绍文案由本站再加工。
以下为插件仓库 README 全文(原始内容,由公开目录抓取整理)。
[图片: dsh-openai-codex-auth:在 DeepSeek Harness 中通过设备码或本机浏览器 OAuth 登录 OpenAI Codex、查看用量并接入模型提供方]
把 ChatGPT 订阅登录接入 DeepSeek Harness。
设备码优先、浏览器 OAuth 备用;在 DSH 设置页完成登录、查看 Codex 用量,并自动向 openai-codex 模型提供方提供有效凭据。
快速开始 ·
登录方式 ·
功能一览 ·
远程访问 ·
安全边界
## 快速开始
将插件安装到 DSH 的 `web` profile。开发 checkout 可直接使用本地路径:
```sh
dsh plugin --profile web add /absolute/path/to/dsh-openai-codex-auth
```
启动或重启 Web profile:
```sh
dsh web
```
然后:
1. 打开 DSH Web,进入 **设置 → OpenAI Codex**。
2. 点击 **使用设备码登录**。
3. 先复制设置页显示的用户码,再点击按钮打开 OpenAI 验证页并完成登录。
4. 返回 DSH,在 **设置 → 模型提供方** 中选择 `openai-codex`。
设备码登录无需 OAuth callback,适合本机、SSH 隧道和 HTTPS 反向代理场景。
## 两种登录方式
### 设备码登录(推荐)
1. Host 从 OpenAI 申请一次性用户码。
2. 设置页显示用户码、验证网址和 15 分钟倒计时。
3. 用户可以在任意设备打开 并输入代码。
4. Host 后台轮询授权结果,交换令牌并写入本地凭据。
设备码 flow 的临时 ID、用户码和轮询状态只存在于内存;DSH Web 重启或用户取消后即失效。
> [!NOTE]
> OpenAI workspace 可能要求管理员允许设备码登录。若申请接口返回 404,设置页会提示改用本机浏览器 OAuth。
### 本机浏览器 OAuth(备用)
OpenAI 的 Codex 公共 client ID 只接受已注册的精确 callback:
```text
http://localhost:1455/auth/callback
```
点击浏览器登录后,设置页会展开诊断卡片,插件同时在 IPv4/IPv6 loopback(`127.0.0.1`/`::1`)的 1455 端口启动临时 callback listener。浏览器会探测自身到 `127.0.0.1:1455` 的连接:成功显示绿色勾选;失败则给出端口转发提示,并提供重新检测和强制继续按钮。外部 OpenAI 页面只会在用户点击按钮后打开。
如果自动 callback 无法抵达,还可以把浏览器地址栏中的完整 callback URL 或 authorization code 粘贴回诊断卡片完成交换。登录完成、取消、失败或 10 分钟超时后 listener 立即关闭;1455 不会在 DSH 启动后常驻监听。
只有通过 HTTP `127.0.0.1` 或 `localhost` 打开 DSH 时,设置页才启用浏览器 OAuth 按钮。反代域名、LAN IP 或 HTTPS 入口应使用设备码。若 DSH 运行在远程服务器,还必须把本机 1455 转发到服务器的 1455。
## 功能一览
| 能力 | 说明 |
| --- | --- |
| 设备码登录 | 无本机 callback,支持远程/headless 使用 |
| 浏览器 OAuth fallback | PKCE + state、端到端 1455 探测、手动 code 回填和临时 callback listener |
| Codex 用量面板 | 展示短周期与周用量、剩余额度和重置时间 |
| 自动凭据续期 | 在令牌接近过期时刷新,并更新 DSH credentials |
| DSH 模型接入 | 将有效令牌提供给 `openai-codex` 模型提供方 |
| 登录生命周期管理 | 支持取消、15 分钟设备码超时、10 分钟浏览器超时和安全退出 |
| 同源管理路由 | 状态与控制接口挂载到 DSH Web;1456 已移除,1455 仅在浏览器登录期间临时使用 |
## 工作方式
[图片: 设备码授权由 DSH Host 轮询并写入本地凭据;浏览器 OAuth 备用方式仅在登录期间监听 localhost:1455 callback]
登录成功后:
1. 凭据以 owner-only 权限原子写入 `$DSH_HOME/openai-codex-auth.json`。
2. access token 通过 DSH credentials 注入 `DSH_OPENAI_CODEX_TOKEN`。
3. `openai-codex` 模型提供方在请求时读取该凭据。
4. 设置页只读取登录状态、账号 ID、过期时间和用量摘要,不接触 token。
## 同源路由
日常状态与控制接口由 DSH Web 提供;只有浏览器 OAuth flow 会额外创建一个短生命周期 callback Server:
| 方法 | 路径 | 用途 |
| --- | --- | --- |
| GET | `/openai-codex/status` | 登录、flow、用量和 CSRF 状态 |
| POST | `/openai-codex/device/start` | 创建或复用设备码 flow |
| POST | `/openai-codex/browser/prepare` | 创建浏览器 flow,返回授权 URL 和一次性 1455 探测 URL |
| POST | `/openai-codex/browser/complete` | 接收用户粘贴的 callback URL 或 authorization code |
| GET | `/openai-codex/browser/start` | 兼容入口:直接启动并跳转浏览器 OAuth |
| POST | `/openai-codex/cancel` | 取消当前登录、关闭临时 listener,保留旧凭据 |
| POST | `/openai-codex/logout` | 取消 flow 并删除本地凭据 |
1456 已完全退役。1455 平时关闭,仅浏览器 OAuth pending 时绑定 loopback;设备码登录完全不使用它。
## 远程与反向代理
### SSH 隧道
设备码登录只需转发 DSH Web 端口,本地端口可以不同:
```sh
ssh -L 8080:127.0.0.1:3080 user@server
```
若还要使用浏览器 OAuth fallback,同时转发 OpenAI 固定的 callback 端口:
```sh
ssh -L 8080:127.0.0.1:3080 -L 1455:127.0.0.1:1455 user@server
```
然后打开 `http://localhost:8080`。设备码登录仍不依赖 1455;只有浏览器 fallback 会临时使用该转发。
### HTTPS 反向代理
DSH Web 继续绑定 `127.0.0.1`。为外部域名配置 DSH trusted host:
```sh
dsh web --trusted-host dsh.example.com
```
反代必须保留浏览器原始 Host,例如 Nginx:
```nginx
location / {
proxy_pass http://127.0.0.1:3080;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
}
```
通过反代域名访问时使用设备码登录;浏览器 OAuth 按钮会被禁用。反代还需按 DSH Web 本身的要求转发 WebSocket。
## 配置
插件通常无需额外配置。默认凭据文件为:
```text
$DSH_HOME/openai-codex-auth.json
```
如需改变存储位置,可在 Cordis 配置中设置 `path`:
```yaml
- insert:
- id: openai-codex-auth
name: dsh-openai-codex-auth
config:
path: /secure/path/openai-codex-auth.json
```
`path` 的优先级高于 `dshHome`。
## 凭据处理边界
以下内容说明插件如何处理本地凭据与管理接口,不代表或承诺任何 OpenAI 账号风控结果。
- 浏览器 OAuth 使用 PKCE,并通过随机 `state` 防止 callback 串用。
- 设备码由 Host 轮询;Web 页面只看到用户码、验证网址和过期时间。
- 凭据目录与文件分别以 owner-only 权限创建,并通过文件锁和原子写入更新。
- access token 与 refresh token 只保存在 Host 侧;Web 页面不会读取或保存它们。
- 管理路由复用 DSH `trustedHosts`,并检查 Host、Origin、Fetch Metadata 和 CSRF。
- 临时 callback Server 只绑定 IPv4/IPv6 loopback 的 1455,并只接受注册 URI 对应的 `Host: localhost:1455`、`/auth/callback` 路径和匹配的 state。
- 浏览器连通性探测使用 flow 专属随机 URL,只向 HTTP `127.0.0.1`/`localhost` Origin 返回 CORS 结果;手动 code 提交受同源管理检查和 CSRF 保护,粘贴完整 URL 时还会校验 state。
- cancel 会保留旧凭据;logout 会先停止 flow,再删除凭据,避免迟到写回。
- 若 `DSH_OPENAI_CODEX_TOKEN` 被只读环境来源覆盖,插件会拒绝开始登录并显示明确错误。
## 代理
插件使用 Node.js 原生 `fetch`。若访问 OpenAI 需要 HTTP 代理,启动 DSH 前设置:
```sh
NODE_USE_ENV_PROXY=1 \
HTTP_PROXY=http://127.0.0.1:7890 \
HTTPS_PROXY=http://127.0.0.1:7890 \
dsh web
```
可按环境补充 `NO_PROXY=localhost,127.0.0.1,::1`。
## 常见问题
设备码登录提示不可用或返回 404
当前 OpenAI workspace 可能未启用 device auth。若是组织账号,请联系管理员;也可以通过 HTTP `127.0.0.1`/`localhost` 入口使用浏览器 OAuth fallback。
设备码一直等待或超时
确认验证页已使用正确账号完成授权,并检查 Host 到 `auth.openai.com` 的网络与代理。设备码 15 分钟后自动失效,可取消后重新申请。
为什么浏览器 OAuth 按钮不可用?
该 fallback 只支持 HTTP loopback 入口。请用 `http://127.0.0.1:` 或 `http://localhost:` 打开 DSH;反代域名、LAN IP 和 HTTPS 入口请使用设备码。
为什么登录提示 DSH_OPENAI_CODEX_TOKEN 是只读来源?
环境变量或其他只读 credential source 正在覆盖插件管理的 token。移除该覆盖并重启 DSH 后再登录,避免文件凭据写入成功但模型仍使用旧 token。
账号已连接,但没有显示额度窗口
点击 **刷新用量** 重试。若 OpenAI 当前未返回可展示的窗口,插件会保留登录状态并显示说明。
## 本地开发
```sh
pnpm install
pnpm run build
pnpm test
node --check client.js
```
`src/index.ts` 是 Host 实现源;`lib/index.js` 与 `lib/index.d.ts` 由 TypeScript 构建生成。
## License
[MIT](./LICENSE)
数据来源:公开的 DeepSeek Harness 插件目录与各插件 GitHub 仓库。本站为独立第三方目录,与 DeepSeek、幻方(High-Flyer)及插件作者均无隶属或背书关系。