← 返回列表
需源码安装
接入 ChatGPT 账号,在网页端畅聊 Codex 模型
暂不能直接安装(需源码编译或环境不满足):缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。 · 最近上游提交 2026/9/14 · 已提供中文文档
为DeepSeek Harness提供的OpenAI Codex提供商,支持ChatGPT OAuth、原生设置和账户用量。
综合分
36.4
GitHub 分
36.4
用户评分
—
★ Stars
5
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add DamonBao/dsh-codex-suite缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装,改用 GitHub 源安装
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查需源码安装
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-codex-suite-workspace(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/17 18:24:11
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
DSH Codex Suite
CI
License: MIT
Node
pnpm
为 DeepSeek Harness(DSH)打造的插件套件:把 ChatGPT / OpenAI Codex 模型和 Codex 风格的对话体验带进 DSH Web UI。基于 DSH 0.1.5-alpha.1 构建(peer 范围 >=0.1.5-alpha.1 =0.1.5-alpha.1 =24、pnpm 11。
安装整套 Suite(推荐):
dsh plugin --profile web add @jcy2387/dsh-suite
dsh web
或单独安装插件:
dsh plugin --profile web add @jcy2387/dsh-codex-provider
dsh plugin --profile web add @jcy2387/dsh-conversation-ui
dsh web
本地开发 —— 用工作区内的包替代发布版:
dsh plugin --profile web add link:$PWD/packages/codex-provider
dsh plugin --profile web add link:$PWD/packages/conversation-ui
dsh web
在同一个 profile 里,整套 Suite 和单独插件二选一安装,不要让同一插件的两份来源共存。共存不会崩溃(Suite 通过嵌套加载组挂载插件,避免了重复 loader entry id),但直接安装的行与 Suite 的子行会共享同一个加载条目:在运行中的 dsh 进程里移除任意一侧,对应插件会静默停止,直到下次重启才恢复。变更 bundle 列表后请重启 dsh。
快速开始
1. 安装套件(见上)并打开 Web UI(dsh web)。
2. 进入 设置 → OpenAI Codex,点击连接,选择浏览器登录(无头/远程机器可用设备码登录),完成 ChatGPT 授权。
3. 回到对话,在模型选择器中挑选 openai-codex 模型即可开聊。
4. 可选:在同一设置页查看用量面板,并在 设置 → 插件 → 插件配置 中调节对话流参数。
配置
两个插件都通过 profile 的 cordis.patch.yml overlay 配置;用户级偏好保存在设置界面并跨重启持久化。
Codex Provider(profile patch ID:codex-provider)
| 选项 | 取值 | 默认 | 说明 |
| --- | --- | --- | --- |
| transport | sse \| websocket \| websocket-cached \| auto | sse | SSE 可避免流后期失败时部分输出被重复。 |
| streamIdleTimeoutMs | 正整数 | 300000 | 读取单个响应流的最大空闲间隔。 |
| timeoutMs / websocketConnectTimeoutMs | 正整数 | — | 可选的请求级超时。 |
| retryPolicy | 重试策略对象 | 内置 | 请求重试行为。 |
| credentialRef | 凭据引用 | OPENAI_CODEX_OAUTH | 保存 OAuth 状态的 Harness 凭据槽。 |
| ipv6CallbackBridge | 布尔 | true | 为 IPv6 主机转发 OAuth 回环回调。 |
| proactiveRefresh | 布尔 | true | 在过期前主动刷新令牌。 |
| proxyMode | auto \| environment \| off | auto | 重启后生效;也可在设置页修改。 |
Conversation UI(profile patch ID:conversation-ui)
| 选项 | 取值 | 默认 | 说明 |
| --- | --- | --- | --- |
| mode | teleprompter \| typewriter | teleprompter | 助手内容的揭示风格。 |
| preset | realtime \| balanced \| silky | balanced | 平滑节奏档位。 |
| revealCharsPerSec | 5–200 | 80 | 打字机揭示速度。 |
| scrollSpeedPxPerSec | 1–200 | 48 | 已弃用的兼容字段;滚动由 DSH 管理。 |
| maxScrollSpeedPxPerSec | 1–2000 | 1000 | 已弃用的兼容字段;滚动由 DSH 管理。 |
若想临时禁用 Conversation UI 而不卸载,应用包内自带的 conversation-ui-off.yml overlay:
- id: conversation-ui
disabled: true
设置入口
| 位置 | 可控内容 |
| --- | --- |
| 设置 → OpenAI Codex | 连接/断开账号、登录方式、用量面板、重置次数查看与兑换、代理模式。 |
| 设置 → 插件 → 插件配置 | 自动展开思考(实时生效)、插件版本、npm 安装一键更新。 |
架构
每个运行时插件都由两半组成:
- Host 半(Node)—— Cordis 插件:Provider 注册、OAuth 生命周期、网络与设置持久化,从包根加载。
- Web 半(浏览器)—— 通过 dsh.client manifest 发现的 React 视图。Codex Provider 提供设置分区;Conversation UI 替换助手节点视图并包装工具行。
两半之间只通过两条窄通道通信:注入到 HTML 的启动配置全局变量(window.__DSH_CONVERSATION_UI_CONFIG__)把校验后的插件配置带给浏览器;经鉴权的 Connection RPC 把设置读写带回 Host。机密信息(令牌、代理地址)绝不跨越 RPC 边界。
各包详细文档:codex-provider · conversation-ui · suite
开发
要求:Node.js ^22.19.0 || >=24.0.0,pnpm 11.7。
pnpm install
pnpm run check # typecheck + test + build + pack dry-run,与 CI 一致
单包命令:
pnpm --filter @jcy2387/dsh-codex-provider check # typecheck + test + build + publint
pnpm --filter @jcy2387/dsh-conversation-ui typecheck
pnpm --filter @jcy2387/dsh-conversation-ui test
pnpm --filter @jcy2387/dsh-conversation-ui build
pnpm --dir packages/all pack --dry-run
测试基于 vitest,共 15 个套件,覆盖 OAuth 状态机、令牌刷新、网络/代理探测、用量与重置次数解析、设置控制器和流式客户端视图。客户端测试直接解析已安装的 DSH 发布包(用一个小型 module-table 替身实例化其浏览器 factory bundle)。CI 会校验发布 tag 与三个包版本一致、审计发布 tarball 的内容,并跑一个消费方冒烟测试:把打包出的 tarball 装进一个全新工程(用真实 registry 解析已发布的 peer 依赖区间),再导入全部 Node 侧入口。
发布
发布由 Release 工作流(.github/workflows/release.yml)自动完成:只要发布一个 GitHub Release 就会触发。它要求 release tag 与三个包的共同版本一致(允许可选的 v 前缀),重跑全部质量门禁,打包三个 tarball,校验 suite 组合包不再携带 workspace: 区间,然后按依赖顺序(provider → conversation-ui → suite)发布到 npm,自带 provenance 溯源,采用 OIDC Trusted Publishing 认证 —— 不需要任何长期有效的 NPM_TOKEN secret。
一次性配置:在 npmjs.com 上为 @jcy2387/dsh-codex-provider、@jcy2387/dsh-conversation-ui、@jcy2387/dsh-suite 分别配置 Trusted Publishing,授权仓库 DamonBao/dsh-codex-suite、工作流 release.yml(environment 留空)。
dist-tag 跟随 GitHub Release 的 pre-release 勾选:正式 Release(不勾 pre-release)一律发 latest(包括 rc 版本);勾了 pre-release 则按版本通道打 tag(0.1.2-alpha.4 → alpha,0.1.2-rc.1 → rc)。工作流具备幂等性 —— 某个包的版本若已存在于 npm 则跳过,因此部分失败后重跑只会补发缺失的包。
一次典型的发布:
先在三个 packages/*/package.json 里统一升版本号,然后:
pnpm run check
VERSION="$(node -p "require('./packages/codex-provider/package.json').version")"
git commit -am "release: $VERSION"
git tag "$VERSION"
git push origin main --tags
随后为该 tag 创建并发布一个 GitHub Release 即可。Dependabot 每周检查 GitHub Actions 依赖。刻意未启用 Dependabot 的 npm 依赖更新:它重新生成 pnpm-lock.yaml 时不带 workspace overrides,PR 无法通过 pnpm install --frozen-lockfile —— 依赖升级请用 pnpm update 手动处理。
仓库结构
.
├─ packages/
│ ├─ codex-provider/ # @jcy2387/dsh-codex-provider
│ │ ├─ src/ # Host 半:OAuth、刷新、网络、用量、重置次数、LLM 适配器
│ │ ├─ src/client/ # Web 半:设置分区 UI
│ │ ├─ tests/ # 12 个 vitest 套件
│ │ └─ cordis.patch.yml
│ ├─ conversation-ui/ # @jcy2387/dsh-conversation-ui
│ │ ├─ src/ # Host 半:配置桥、设置 RPC
│ │ ├─ src/client/ # Web 半:流式视图、卡片、原生滚动桥接
│ │ ├─ tests/ # 3 个 vitest 套件
│ │ └─ cordis.patch.yml
│ └─ all/ # @jcy2387/dsh-suite(纯组合包,无运行时代码)
├─ .github/workflows/ci.yml # 校验 + tarball 审计 + 消费方冒烟
├─ .github/workflows/release.yml # GitHub Release 触发 npm 发布
├─ pnpm-workspace.yaml
└─ README.md / README.zh.md
故障排查
- 浏览器登录迟迟不完成 —— 回调桥监听 127.0.0.1:1455;请确认端口空闲且浏览器可达回环地址。设置页会给出具体失败类别(端口冲突、超时、state 不匹配……)。
- 区域不受支持 —— OpenAI 拒绝受限区域登录;设置页会以独立原因提示。可通过代理模式(proxyMode)改变出口线路(需重启生效)。
- 一段时间后提示「需要重新连接」 —— 刷新令牌已过期或被吊销(如改密)。在设置页重新连接一次即可。
许可证
MIT © jcy2387同作者(DamonBao)的其他插件
扫码进群