前言¶
DeepSeek Harness(DSH)的插件系统允许在运行时扩展功能。上游 Harness 的多提供商适配器故意 withhold openai-codex 适配器,因为 Codex 认证需要通过 ChatGPT OAuth 进行,且该适配器不持有凭据存储也不运行登录流程。这个社区插件通过提供可安装的插件包来补全这两项:一个基于文件的 OAuth 凭据存储、一个 /codex login 人类可读命令,以及在公共 LLM 接口上注册的 codex provider 路由。
安装¶
安装过程会自动处理 pnpm 构建脚本的批准。在 web profile 下执行以下命令:
npx --yes https://github.com/birat-chapagain/dsh-codex-oauth/releases/download/v0.1.6/dsh-codex-oauth.tgz install
该命令会写入一次性的 pnpm 构建批准,并运行 dsh plugin add 将插件添加到当前 profile。
手动安装方式(效果相同):
dsh plugin --profile web add https://github.com/birat-chapagain/dsh-codex-oauth/releases/download/v0.1.6/dsh-codex-oauth.tgz
pnpm 11.22+ 对传递依赖中的构建脚本有严格限制。此插件树包含两个未使用的构建脚本(@google/genai, protobufjs)。如果手动安装遇到 ERR_PNPM_IGNORED_BUILDS 错误,需在 profile 的 pnpm-workspace.yaml 中添加以下内容:
allowBuilds:
'@google/genai': true
protobufjs: true
登录¶
登录是一个人类命令,不作为模型工具进入提示流。
Web UI¶
在 DeepSeek Harness 的聊天输入框中输入:
/codex login
浏览器将打开 ChatGPT 授权页面。完成授权后,命令会报告令牌已存储。也可以使用 /codex logout 和 /codex status 进行管理。如果是设备登录流程,UI 会提示你使用 CLI 命令。
CLI / Headless¶
插件包含一个独立的二进制文件 dsh-codex-oauth,可在 Harness 外部运行:
npx dsh-codex-oauth login # 浏览器流(桌面端)
npx dsh-codex-oauth login --method device # 设备码流(无头端)
npx dsh-codex-oauth status
npx dsh-codex-oauth logout
设备码流会打印一次性代码和 OpenAI 设备验证 URL。在任意设备上输入代码,CLI 会等待授权并将令牌存储在与 Harness 读取位置相同的文件中。
使用¶
插件注册了 codex provider 路由。通过 gpt-5.x-codex 及其相关模型(来自已安装的 pi-ai 目录)进行访问。
在 Web UI 的模型选择器中选择 codex 或 Codex 模型。对于 headless profile,可以在 profile 的 cordis.patch.yml 中设置默认模型:
- id: agent-default-model
config:
provider: codex
model: gpt-5.4
在 Web UI 中按会话选择无需额外配置。Provider、模型和能力的解析通过上游 seam 的实现,与内置 provider 行为一致。
配置¶
插件支持以下配置项。在 cordis.patch.yml 中覆盖这些项:
| 字段 | 默认值 | 说明 |
|---|---|---|
provider |
codex |
适配器注册的 provider 路由 ID。 |
storePath |
$DSH_HOME/codex-oauth.json |
OAuth 凭据存储位置。 |
transport |
sse |
Codex 响应传输方式:sse、websocket、websocket-cached 或 auto。sse 在一次性无头交互后优雅退出;websocket 可用于长会话。 |
cacheRetention |
long |
pi-ai prompt-cache 保留策略:none、short、long。 |
streamIdleTimeoutMs |
300000 |
读取挂起期间流无事件的最大毫秒数。超时将中止 SDK 流并返回 TIMEOUT LLM 失败。 |
示例配置:
- id: codex-oauth
config:
provider: codex
transport: sse
注意事项¶
- 订阅要求:需要有效的 ChatGPT Plus 或 Pro 订阅。OpenAI 平台 API 密钥无效,因为订阅访问绑定到 ChatGPT 账户,而非 API 密钥。
- pnpm 警告:安装时可能会看到
@deepseek-ai/cordis、@deepseek-ai/dsh-llm或@deepseek-ai/dsh-invariants的 peer dependency 警告。这是正常的,因为 Harness 主安装提供了这些包,且 profile 设置了autoInstallPeers: false。不要添加重复的 Cordis 或 invariants 包来消除警告。 - 文件权限:凭据文件权限为
0600,写入时原子操作,且拒绝组/世界可读。请勿将模型工作区指向 Harness 主目录。 - URL 限制:仅支持 https URL。
- 工作原理:登录流程由 pi-ai 的 provider 实现。
结尾¶
该插件在无需 Fork 或修改 Harness 核心代码的情况下,为 DeepSeek Harness 增加了对 OpenAI Codex 订阅的支持。你可以通过 GitHub 仓库查看源码或提交问题。