前言¶
DeepSeek Harness(dsh)是 DeepSeek AI 开源的智能体框架,目前仍处于开发者预览阶段。它的核心设计是「一切皆插件」:模型、工具、技能、会话、沙箱和 UI 都可以在配置层替换,不必改框架源码。官方仓库在 deepseek-ai/deepseek-harness,本地最快的启动方式是:
npx @deepseek-ai/dsh web
模型提供方同样是插件。很多人已经有 ChatGPT / Codex 订阅,却不想再买一份 OpenAI Platform API Key,也不想给 Harness 打补丁。社区插件 dsh-codex-connect 做的就是这件事:用 ChatGPT OAuth 登录,把 openai-codex 模型目录挂进 Harness 原有的模型选择器。
需要先说明两点。第一,deepseek-harness-plugin.com 是社区目录,和 DeepSeek / 幻方没有官方从属关系,不能当成官方应用商店。第二,这个插件本身也写明:与 OpenAI、ChatGPT、Codex、DeepSeek 或 DeepSeek Harness 都不存在隶属或背书关系。
这是什么¶
dsh-codex-connect 是一款「模型与提供方」插件,显示名是 Codex Connect,由 franksong2702(Frank Song)维护,许可证 Apache-2.0,主要语言 TypeScript。目录页简介是:为 DeepSeek Harness 提供 ChatGPT OAuth 与 Codex 模型。
仓库 README 把边界写得很清楚:
- 它注册
openai-codex模型目录,并提供独立的 ChatGPT OAuth 登录。 - 模型请求仍走 Harness 标准 LLM 服务。流式输出、工具调用、reasoning replay、压缩、文件系统控制、权限门禁和审批提示,继续由 Harness 负责。
- ChatGPT 订阅不会因此变成 OpenAI Platform API 凭据。
- 安装是增量的:不会替换当前默认模型或全局搜索路由;独立搜索提供方和
view_image默认关闭。
项目派生自 Yan-Zero/dsh-codex,NOTICE 里保留了上游版权。两者使用同一套 provider id(openai-codex),不能同时启用。GitHub 仓库当前 22 星(目录页快照仍显示 7 星,以仓库页面为准)。npm 包名是 dsh-codex-connect,当前预发布版本为 0.1.0-alpha.4.9。
核心功能¶
把 Codex 模型放进原生选择器¶
登录成功后,打开 Harness 原有的模型选择器,可用项会出现在 OpenAI Codex 分组下。GPT-5.6 Luna 这类标识是规范名称,界面语言换成中文也不会翻译。
这一步只影响当前 agent 或会话选中的模型,和写入 profile 的默认模型、全局搜索路由是两件事。装上插件,不等于以后所有新会话都走 Codex。
设置页里完成登录,不把 token 写进配置¶
打开 设置 → 插件 → 插件配置 → Codex Connect。新安装时账户区显示「尚未登录」,点击「使用 ChatGPT 登录」,在浏览器里自己完成审批。
README 明确要求:不要把授权 URL、授权码、token 或账户标识复制到 Issue、日志或配置文件里。OAuth 状态单独写在 $DSH_HOME/.openai-codex-auth.json(默认 ~/.dsh),不会复制或改动 ~/.codex/auth.json。支持的平台上,父目录和文件使用仅所有者可访问权限,写入是原子替换,刷新时有跨进程文件锁。
卡片显示「重新登录」,或服务端要求重新认证时,走同一套浏览器流程即可。不要为了刷新会话去执行 logout;卸载插件也不会删除这份凭据,只有确实要清掉登录态时才登出。
搜索和看图默认关掉¶
安装后的配置行大致是:
- id: llm-openai-codex
config:
enableSearch: false
enableImageTool: false
在同一张 Codex Connect 卡片里可以改这两项,点「保存更改」只影响本插件能力,不会去改默认模型或全局搜索路由。
enableSearch: true:把 Codex 注册成可选的搜索提供方,但不会自动选成全局搜索。enableImageTool: true:给具备视觉能力的模型打开view_image,用于审批后的本地读取和公网图片获取。远程地址只允许公共 HTTP(S);每次 DNS 结果和重定向都会再检查,并把连接钉在已验证地址上,避免打到 localhost、私网、link-local 或云元数据。
仓库文档给出的其余字段默认值如下:
| 字段 | 默认值 | 可选值 |
|---|---|---|
enableSearch |
false |
boolean |
enableImageTool |
false |
boolean |
searchModel |
gpt-5.6-sol |
Codex 模型 id |
searchMode |
cached |
cached、indexed、live |
searchContextSize |
medium |
low、medium、high |
searchMaxOutputTokens |
10000 |
正整数 |
诊断命令不打印密钥¶
不启动 OAuth、也不输出凭据内容的检查:
dsh plugin --profile web exec dsh-codex-connect status --json
dsh plugin --profile web exec dsh-codex-connect doctor --json
status --json 只报告 signed-in 或 signed-out。已登录时退出码 0,未登录时退出码 1,后者应回去登录,不要当成插件损坏。doctor --json 输出一条非敏感 JSON:包版本、Node 信息、认证文件状态、能力开关、冲突提示;它会省略认证文件绝对路径,以及 OAuth、账户、过期时间。
Alpha 4.9 的界面补充¶
v0.1.0-alpha.4.9 发行说明(2026-08-17)增加了两项界面能力:按会话的 Codex Fast Mode(默认关闭,仅 GPT),以及 Composer 上按模型显示的周额度条。额度、模型是否可见、后端行为仍由 OpenAI 控制,可能随时变化。
安装与启用¶
先确认本机已有可用的 dsh。如果是从 DeepSeek Harness 源码目录运行,把下面命令前的 dsh 换成 pnpm dsh。下文以 web profile 为例,请换成你实际在用的 profile 名。
目录页给出的安装命令¶
社区目录页原文是:
dsh plugin add github:franksong2702/dsh-codex-connect
目录同时提醒:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前应检查源代码仓库和许可证;需要可复现安装时,固定 commit 哈希:
dsh plugin add github:franksong2702/dsh-codex-connect#commit
把 #commit 换成真实哈希,不要照抄这个占位符。
仓库当前推荐的安装方式¶
README 把 npm 预发布通道写成五分钟快速开始的主路径:
dsh plugin --profile web add dsh-codex-connect@alpha
精确复现本文核对到的版本:
dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.9
对应 GitHub prerelease 已存在但 npm 不可用时,再用:
dsh plugin --profile web add 'github:franksong2702/dsh-codex-connect#v0.1.0-alpha.4.9'
本地 checkout 可以装成 link:/absolute/path/to/dsh-codex-connect。
装完后启动:
dsh web
用下面命令确认配置里恰好有一条加载本插件的 llm-openai-codex,并且默认模型和搜索路由没有被改掉:
dsh --profile web --dump-config
这份输出可能包含无关的 profile 设置,只在本机查看。
更新和卸载:
dsh plugin --profile web update dsh-codex-connect@alpha
dsh plugin --profile web remove dsh-codex-connect
典型用法¶
登录并选一次模型¶
- 打开 设置 → 插件 → 插件配置 → Codex Connect。
- 点击「使用 ChatGPT 登录」,在浏览器里完成审批。
- 账户区变为「已登录」后,打开模型选择器,选一个
openai-codex模型。 - 本机再跑一次
status --json,确认是signed-in。
无图形界面或远程 Host 时,INSTALL.md 允许在用户明确要求登录后使用 login 或 login --device-code。OAuth 审批必须由用户自己完成,不要让自动化脚本代点。
只有你明确要求时,才改默认模型和搜索¶
把 Codex 设成新 agent 的默认模型,需要另写一条 Harness 配置,插件不会替你写:
- id: agent-default-model
config:
provider: openai-codex
model: gpt-5.6-sol
把 Codex 设成全局搜索,是第二次显式修改:先打开 enableSearch,再改 web.searchProvider。
- id: llm-openai-codex
config:
enableSearch: true
searchMode: live
searchContextSize: medium
- id: web
config:
searchProvider: openai-codex
从另一台设备打开 Web UI 时¶
默认 OAuth 路由只接受 loopback 浏览器请求。DSH 跑在设备 A、你从局域网另一台设备打开 Web UI 时,要在运行 DSH 的那台机器上,把浏览器地址栏里的完整 origin(含协议和端口)加入信任列表:
dsh plugin --profile web exec dsh-codex-connect trust-origin http://192.168.1.20:3080
dsh plugin --profile web exec dsh-codex-connect trusted-origins
dsh plugin --profile web exec dsh-codex-connect untrust-origin http://192.168.1.20:3080
把示例换成你地址栏里的真实 origin。不要填访问设备的 IP、裸主机、路径、query 或 fragment。只在自己控制的网络里使用,不要把这条路由暴露到公网;不适合显式信任时,用 SSH 隧道。浏览器页面只会显示并复制这条命令,不会自己改授权列表。
已经装过 dsh-codex 时¶
openai-codex 只能有一个 adapter。启动报冲突时,先看有效配置,只移除已确认的旧 dsh-codex bundle 或手动 provider 行,不要删认证文件,也不要动无关 provider。
迁移步骤见仓库 MIGRATION.md:先记下当前默认模型、搜索路由和 llm-openai-codex 配置(不要去读 OAuth 文件),卸掉 dsh-codex 再装 dsh-codex-connect,确认只剩一条加载本插件的配置行。enableSearch 和 enableImageTool 迁移后都默认 false,要不要打开由你决定。status 已显示已登录就不必再走一遍 OAuth。回滚是反向换包,过程中不要删除或复制那份独立的认证文件。
适用场景与注意事项¶
适合这些情况:
- 已经在用 DeepSeek Harness Web UI,希望用现有 ChatGPT 订阅调用 Codex 模型。
- 不想把订阅「兑换」成 Platform API Key,也不想改 DSH 源码。
- 希望默认模型、搜索路由仍由自己控制,插件只负责注册提供方。
- 需要本机诊断、冲突检查,以及从旧
dsh-codex迁过来。
使用前注意:
- 权限与来源。 插件以当前 dsh 进程权限运行,安装时可能执行代码。装之前阅读仓库源码和 Apache-2.0 许可证,只安装你信任的来源。社区目录不是官方商店。
- 仍是 Alpha。 当前唯一写进
compatibility.json的组合是:DSH 插件 API 包0.1.0-rc.6、@earendil-works/pi-ai0.82.1、Node.js^22.19.0 || >=24.0.0。升级时把 DSH 插件 API 包和pi-ai当成一组升级,再跑doctor --json。这份契约不对未来版本作保证。Harness 本身也在开发者预览,官方 README 写明未来会有破坏性变更。 - 能力边界由 OpenAI 决定。 套餐资格、模型权限、额度和后端行为可能变化。Codex 端点不会强制普通 Responses 的
max_output_tokens;Harness 压缩仍可用,但这个上限不能由服务端在该路由上强制。 - Agent 能力仍来自当前 profile。 shell、文件系统、skills、MCP、subagents、审批、权限、附件、会话持久化、压缩和恢复,都不是这个插件提供的。
- 不要混用两套 Codex 插件。 旧 bundle、手动 provider 行,或其它同样注册
openai-codex的包,都会冲突。 - 安装、构建、测试、doctor 都不需要真实 OAuth。 只有你准备真正调用模型时,才在设置页登录。
结尾¶
dsh-codex-connect 把 ChatGPT OAuth 和 Codex 模型接到 DeepSeek Harness 的标准 LLM 路径上,同时把默认模型、搜索路由和可选能力留给使用者自己决定。它解决的是「订阅已经有了,但 Harness 里缺一个可卸载的提供方」,而不是把 ChatGPT 变成通用 OpenAI API。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-codex-connect/
GitHub:https://github.com/franksong2702/dsh-codex-connect