dsh-codex-provider:在 DSH 里走 ChatGPT 订阅调用 Codex 模型

前言

在 DeepSeek Harness(DSH)里接模型,常见做法是配置 OpenAI 兼容端点或各家 API Key。Codex 面向 ChatGPT 订阅用户的那套模型并不挂在 api.openai.com 上,请求要走 chatgpt.com/backend-api/codex,凭证是 Codex CLI 登录后的 OAuth 会话,而不是 API Key;协议也不是通用的 chat/completions,而是 Responses 形态的 input 数组,并附带 client_version 等查询参数与若干请求头。通用 OpenAI provider 很难完整表达这些约束。

下面介绍社区插件 dsh-codex-provider(维护者 DPH-1121),它把 DSH 的模型路由接到与 Codex CLI 相同的后端,复用本机 ~/.codex/auth.json 的登录态,在订阅额度内使用 GPT-6-Astra、GPT-5.6 系列等模型,支持流式输出、工具调用与图片输入。

这是什么

dsh-codex-provider 是 DSH 的「模型推理」类插件:作为 Codex(ChatGPT)模型提供方,读取 Codex CLI 已建立的 OAuth 会话,向 Codex 后端发起请求,并把 Responses / SSE 流转换成 DSH 侧 LLM 接口能消费的事件。不产生按 token 计费的 API 账单,消耗的是 ChatGPT 订阅对应的 Codex 额度。

插件在 SkillHub 目录 与 GitHub 分发;当前 package 版本为 0.1.1,许可证 MIT。运行环境要求 Node ^22.19.0 || >=24.0.0,并与若干 DSH 核心包版本区间匹配(见仓库 package.json 的 engines 与 peerDependencies)。

与通用 OpenAI 接入的差异

README 用实测表格归纳了后端要求,要点如下:

要求 说明
OAuth 会话 ~/.codex/auth.json 中的 access/refresh token,不是 API Key
请求体 Responses 风格的扁平 input item 数组
client_version /models 必填查询参数,缺失会 400;插件默认从本机 Codex 安装自动探测,也可在配置里覆盖
请求头 插件按与 Codex CLI 一致的方式携带相关头(含从本机 Codex 二进制读出的 OpenAI-Beta 等),以降低后端日后加强校验时的风险

因此插件自行实现适配器、传输层与协议转换,而不是复用「填一个 base URL + API Key」的通用路径。

核心功能

依据 README,已实现的能力包括:

  1. 模型目录:从后端 /models 实时拉取;成功目录会缓存,默认每 5 分钟刷新,后端不可达时退回内置兜底表,选择器不会变空。
  2. 流式输出:SSE 逐帧转换,边生成边显示。
  3. 工具调用:function_call / function_call_output 与 DSH 的 tool-call / tool-result 按 call_id 双向映射。
  4. 推理档位:映射后端上报的 low / medium / high / xhigh / max / ultra;不支持的档位会明确报错。
  5. 思考内容:reasoning_summary 转为独立 reasoning 块。
  6. 图片输入:经 attachment 服务解析为 input_image;读失败时降级为可见占位文本。
  7. 多轮历史:按 Responses 规范回放助手轮次与工具结果。
  8. 用量显示:Host 侧 codexUsage 读取订阅剩余额度(依赖未文档化的 /usage,解析失败时静默不显示)。
  9. 网络:自实现 HTTP CONNECT,识别 HTTPS_PROXY / ALL_PROXY 与 NO_PROXY;主源站 chatgpt.com 连接失败时可自动试备用 chat.openai.com(仅传输层失败,不对 429 等业务错误换源重试)。

对 SSE 事件名未完全验证的情况,转换器按载荷形状分派,以降低「后端改名导致整轮空回复」的概率。

错误会带上稳定 code(如 MISSING_CREDENTIAL、AUTH、QUOTA、RATE_LIMIT 等),便于 DSH 按类型处理;其中订阅额度耗尽(QUOTA)与瞬时限流(RATE_LIMIT)刻意区分,避免对长周期额度错误盲目重试。

安装与启用

插件以当前 DSH 进程权限运行,安装前建议自行审阅 源码与许可证。DSH 生态是「一切皆插件」;SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。

Web 配置

dsh plugin --profile web add dsh-codex-provider

或从本地目录安装(路径按你的环境替换):

dsh plugin --profile web add D:\path\to\dsh-codex-provider

安装后重启 dsh web,在 设置 → 模型 中应出现 Codex (ChatGPT),再在会话模型选择器里选 Codex 模型。

Headless 配置

dsh plugin --profile headless add dsh-codex-provider

在 headless.patch.yml 中可指定默认模型,例如:

- id: agent-default-model
  config:
    provider: codex
    model: gpt-6-astra

前置条件:Codex CLI 登录

必须先在本机完成 Codex CLI 的 ChatGPT 账号登录:

codex login

插件只读取 ~/.codex/auth.json,不写回;刷新后的 token 仅在进程内存中使用,不影响你平时使用 codex 的登录态。若文件不存在或登录方式为 API Key 而非 ChatGPT 账号,启动时会打印修复指引。

配置示例

可在 设置 → 模型 → Codex (ChatGPT) 编辑,或直接改 settings.yaml 的 llm-codex 段(改动热更新,无需重启):

llm-codex:
  enabled: true
  baseURL: https://chatgpt.com/backend-api/codex
  refreshMinutes: 5
  streamIdleTimeoutMs: 120000
  maxRequestImageBytes: 4194304
  clientVersion: ''
  catalogAdditions: []

受限网络下可设置代理,例如:

export HTTPS_PROXY=http://127.0.0.1:7897

典型用法与排错

正常使用:完成 codex login 与插件安装后,在 DSH Web 或 Headless 配置里将 provider 指向 codex(若路由冲突,插件可能自动改用 codex-provider 并打 warn),选择目录中的模型即可对话;需要工具、图片、推理档位时由插件按后端元数据处理。

看不到 Codex 一行:确认 dsh plugin --profile web list 已装入插件、auth.json 为 ChatGPT 登录,并查看日志里 llm-codex: 相关行。

QUOTA:表示 ChatGPT 订阅 Codex 额度用尽,需等待后端给出的重置时间,非插件缺陷。

卸载:

dsh plugin --profile web remove dsh-codex-provider

适用场景与注意

适合已经在用 ChatGPT 订阅 + Codex CLI、希望在 同一订阅额度 下把 DSH 智能体接到 Codex 模型族(含流式、工具、多模态)的开发者。不适合期望用 OpenAI API Key 按量计费、或无法完成 codex login 的环境。

已知限制包括:使用须符合 OpenAI 对订阅的可接受使用政策;后端非公开契约可能变化;stop 序列明确不支持(报 UNSUPPORTED_OPTION);开发文档提到部分 SSE 事件名在真实成功轮次上验证不足,插件以形状分派做容错。

仓库提供 npm test 及需额度的联网检查脚本(test/live-transport.mjs、test/integration.mjs),用于自测传输与集成行为。

结尾

dsh-codex-provider 把 DSH 的模型层接到 Codex CLI 同款的 ChatGPT 订阅后端:OAuth 会话、Responses 协议与传输细节由插件封装,你在 Harness 里选模型即可,无需单独为 Codex 再配 API Key。

  • 目录页:https://www.skillhub.cn/plugins/DPH-1121/dsh-codex-provider
  • 源码:https://github.com/DPH-1121/dsh-codex-provider
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye