前言¶
DeepSeek Harness(dsh)把运行时拆成一层层插件:官方仓库的口号是 Everything is a Plugin(一切皆插件)。模型适配、工具、会话、沙箱和界面都可以换,不必去改 Harness 源码。很多人已经有 ChatGPT 订阅,日常也在用 Codex;一旦把工作流迁到 DSH,常见做法却是再申请一份 OpenAI Platform 的 API Key,按量计费,和订阅配额不是同一条路。
社区插件 dsh-codex 走的是另一条路径:按 OpenAI 的 Codex 登录流程完成 ChatGPT OAuth,把 Codex 后端接到当前 dsh 进程里。不需要 Platform API Key,也不要求给 Harness 打补丁。
本文按社区目录页、GitHub 仓库 README / INSTALL.md / package.json,以及 DeepSeek Harness 官方仓库交叉核对后整理:它是什么、怎么装、登录之后能做什么。社区插件目录 deepseek-harness-plugin.com 是独立站点,与 DeepSeek / 幻方没有官方从属关系,不要把它当成官方应用商店。
这是什么¶
dsh-codex 是一款 DeepSeek Harness 插件,由 Yan-Zero 维护,托管在 GitHub 仓库 Yan-Zero/dsh-codex。社区目录把它归在「会话与消息」分类。仓库 package.json 版本号为 0.2.4(与 npm 上的 dsh-codex 一致),主要语言是 TypeScript,许可证是 Apache-2.0。2026-08-17 查看时,GitHub 显示 19 星;目录页当时列出 10 星,以仓库页面为准。
目录页的一句话定位是:通过 Codex 登录流程,在 DSH 中使用 ChatGPT 订阅。README 写得更具体——它是一个独立的 dsh bundle,在设置面板或 CLI 里完成 ChatGPT OAuth,并自动刷新 token;随后把 Codex GPT 目录接到标准 LLM 服务上,走流式响应、工具调用、推理回放、提示词缓存和 dsh 压缩。
有一条边界必须先说清楚:ChatGPT 订阅认证和按量计费的 OpenAI API 是不同产品。本插件只使用 ChatGPT Codex 后端,不会把订阅转换成通用 OpenAI API 凭据。套餐资格、模型权限、配额和后端行为由 OpenAI 控制,可能变化。
核心功能¶
ChatGPT OAuth 与独立凭据¶
登录入口有两处:Web 界面的 设置 → OpenAI Codex → 使用 ChatGPT 登录,以及 CLI 命令 dsh-openai-codex login。插件会打开 OpenAI 授权页,经 localhost 回调完成登录。无浏览器环境可用 --device-code。
凭据与 Codex CLI / Desktop 分开存放:
- 文件位置是
$DSH_HOME/.openai-codex-auth.json,默认在~/.dsh - 写入是原子的,token 刷新会在本地 dsh 进程之间加锁
- 浏览器状态和诊断接口不返回 token 值
- 不会复制或修改
~/.codex/auth.json
分开存放是为了避免两个客户端抢同一个会轮换的 refresh token。卸载 bundle 不会删除这份凭据;要清掉本地账号,需要走账号页或 logout 命令。账号页会显示实时 Codex 额度进度条和剩余百分比;信用余额或工作区限额只有账号接口提供时才会出现。
Codex 模型目录¶
装上之后,bundle 会为新建 agent 选择 openai-codex / gpt-5.6-sol,并选用 Codex 搜索提供方。cordis.patch.yml 里对应的是 agent-default-model 与 web.searchProvider。dsh settings 里已经保存的模型仍然优先;模型选择器可以切到当前账号可见的其他 Codex 模型。账号若提供视觉模型,插件会声明其图片输入能力。
在 dsh-tui 里,重启后 /model 会列出 openai-codex 目录;没有显式路由或已保存选择时,TUI 采用 bundle 注册的 gpt-5.6-sol。
搜索、读图与生图¶
这几项都挂在 dsh 已有工具上,而不是另起一套协议给模型看:
- 联网搜索:把 dsh 的
web_search接到 Codex 的独立搜索协议,返回普通文本和 HTTP(S) 引用,后续轮次和压缩能保留同一份工具历史。默认searchMode是cached,INSTALL.md 给自动化安装用的是live。 - 读图:为现有
read_image增加可选的 HTTP(S) URL 输入;本地路径仍原样交给 Harness,沿用当前文件系统和沙箱。URL 侧会限制重定向次数与下载字节,并拒绝嵌入凭据的地址。Web 输入框的 Ctrl+V 粘贴和拖放图片继续走 dsh 自己的附件路径。 - 生图:注册
imagegen工具,由gpt-image-2执行。当前模型只写普通提示词,可选用工作区路径或会话里最近的参考图;插件读字节再发送,模型不输出 base64。结果会在对话里显示、存成持久附件,并写入当前工作区。省略output_path时生成唯一的generated-<时间戳>-.png。
设置页有两个默认开启的开关:增强 read_image 和 允许其他模型使用生图。关掉第一项会恢复 Harness 原本只接受本地路径的 read_image Schema;关掉第二项后,Codex 视觉模型仍可用 imagegen,其他模型提供方的调用会在执行入口被拒绝。只有明确声明支持图片输入的模型才能接收图片。
两个默认关闭的实验开关¶
设置页还有两项只作用于 openai-codex、默认关闭的开关:
- WebSocket 上下文复用:保持
store: false,在同一会话可复用连接且下一轮与已有上下文严格衔接时,用previous_response_id只发新增输入。历史改写、压缩、Fork、断连或进程重启后会退回完整上下文。关闭时普通轮次走 SSE,每次发送 Harness 完整上下文。 - 原生 Responses 压缩:按 Codex 当前 V2 流程发送历史和一个
compaction_trigger。不可用或失败时,同一次调用回退到原来的 Harness 模型摘要。默认配置使用 SSE 和dsh-compaction-basic的文本摘要路径。
这两个开关互相独立。README 也写明:Codex 端点不执行普通 Responses 的 max_output_tokens 字段,压缩可以工作,但该路由无法在服务端落实配置的摘要上限。
安装与启用¶
社区目录页给出的安装命令原文如下,在 DeepSeek Harness 终端中运行:
dsh plugin add github:Yan-Zero/dsh-codex
如需可复现安装,按目录页说明固定 commit 哈希:
dsh plugin add github:Yan-Zero/dsh-codex#<commit>
维护者 README 推荐的是从 npm 安装预构建 bundle 到指定 profile(Web 为例):
dsh plugin --profile web add dsh-codex
dsh web
从 DeepSeek Harness 源码 checkout 运行时,把 dsh 换成 pnpm dsh:
pnpm dsh plugin --profile web add dsh-codex
在 dsh-tui 中使用时,把同一个包装进对应 profile:
dsh plugin --profile dsh-tui add dsh-codex
开发本地 checkout 仍可用 link:/absolute/path/to/dsh-codex。Codex、Claude Code 等自动化 agent 应直接按仓库里的 INSTALL.md 执行,那是一份可重复的 runbook。
目录页和官方 CLI 都提醒:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前应检查源代码仓库和许可证。
登录与基本用法¶
Web 界面¶
- 安装后启动
dsh web。 - 打开 设置 → OpenAI Codex → 使用 ChatGPT 登录。
- 在打开的 OpenAI 授权页完成批准,等待 localhost 回调结束。
- 账号页查看额度;需要退出时用同一页的登出,或下面的 CLI。
不要同时走 GUI 和 CLI 各登录一次。INSTALL.md 写明:OAuth 批准属于用户,不要让自动化流程代填密码或代点账号页。
终端与无界面环境¶
dsh plugin --profile web exec dsh-openai-codex status
dsh plugin --profile web exec dsh-openai-codex login
dsh plugin --profile web exec dsh-openai-codex login --device-code
dsh plugin --profile web exec dsh-openai-codex logout
先跑 status。已是 signed in 就不要再开一轮登录。本机打不开浏览器时用 --device-code。浏览器登录是 loopback-only;远程主机上的 dsh 应在那台机器上走 CLI。
TUI 侧可用 /codex status|login|logout|usage|config 管理账号和查看配置。四个布尔开关可用:
/codex set <read-image|imagegen-other-models|websocket-context|native-compaction> <on|off>
浏览器登录完成后,凭据与 Web profile 共用同一份 dsh 凭据文件。
搜索配置示例¶
需要改搜索模式时,在对应 profile 的 cordis.patch.yml 里保留恰好一行 id: llm-openai-codex(INSTALL.md 要求不要追加重复 id):
- id: llm-openai-codex
config:
searchMode: live
searchContextSize: medium
README 列出的字段如下:
| 字段 | 默认值 | 可选值 |
|---|---|---|
searchModel |
gpt-5.6-sol |
Codex 模型 id |
searchMode |
cached |
cached、indexed、live |
searchContextSize |
medium |
low、medium、high |
searchMaxOutputTokens |
10000 |
正整数 |
每个已解析默认值、不含凭据的辅助请求,会在发送前记成插件自己注册的会话事件 web/openai-codex-search-llm-request。独立搜索端点不是公开的 OpenAI Platform API,兼容性取决于固定版本的 Codex / pi-ai 实现。
图片怎么进对话¶
README 给出的可复现路径:
- Web 输入框 Ctrl+V 粘贴,或把图片拖进去
- Windows 上适配版 dsh-tui 可用 Ctrl+V 粘贴剪贴板图片,或输入
@相对/图片.png - 让模型调用
read_image:工作区图片用file_path,HTTP(S) 图片用url - 在当前 dsh 附件限制内支持 PNG、JPEG、WebP 与 GIF
生图时由当前视觉模型写提示词;结果写入工作区。工作区若由 dsh-remote-ssh 管理,远程写入路径由那个插件负责。本插件单独安装时即可生成附件并保存本地输出。
适用场景与注意事项¶
比较适合已经在用 DSH,同时持有可用的 ChatGPT / Codex 资格、希望少申请一份 Platform API Key 的人。Web、TUI、无界面 CLI 都可以登录;文件系统、shell、skills、MCP、subagents、权限、附件、压缩和 web_search 工具本身仍来自当前 dsh profile,本插件只把模型路由和 Codex 侧能力接进去。
使用前注意这些已经能核对到的边界:
- 权限与许可证。 插件与当前 dsh 进程同权运行,安装可能执行代码。本仓库采用 Apache-2.0,安装前仍应自己看源码和许可证。
- 订阅不是 API Key。 它不会把 ChatGPT 订阅变成通用 OpenAI API 凭据;不能拿这份登录去调 Platform 上的任意接口。
- 资格由 OpenAI 决定。 模型列表、视觉能力、配额和后端行为可能变化;选不到某个模型时,先看账号页和
/model,而不是假定插件损坏。 - 凭据文件。 不要读取、打印或提交
$DSH_HOME/.openai-codex-auth.json,也不要去碰~/.codex/auth.json。诊断只看status的非密钥状态。 - 图片有前置条件。 当前模型必须在目录里明确声明图片输入,
read_image/imagegen才会把图交给模型。 - DSH 仍在快速迭代。 官方 README 标明 developer preview,会有兼容性破坏。本插件声明只使用已发布的插件表层,peer 依赖里可见
@deepseek-ai/dsh-*的0.1.0-rc.6;升级 Harness 后应再核对仓库。 - 目录不是官方商店。 以 GitHub 源码和页面上的
dsh plugin add原文为准;星标、分类以打开页面时的数字为准,会随时间变化。
小结¶
dsh-codex 做的事情很具体:用 Codex 的 ChatGPT 登录,把订阅侧的模型、搜索和部分多模态能力接到 DeepSeek Harness,而不改 Harness 源码、也不把订阅伪装成 Platform API。装好之后,日常路径就是设置页或 CLI 登录一次,再按账号可见的 Codex 目录选模型。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-codex/
GitHub:https://github.com/Yan-Zero/dsh-codex