dsh-codex-connect

34Star7Fork3Issue0Watching

通过 ChatGPT OAuth 在 DSH 中使用 OpenAI Codex 模型,可选启用独立搜索、读图、生图能力。

机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
TypeScript
License
Apache-2.0
分支
main
chatgptcodexdeepseek-harnessdshdsh-plugingpt-image-2oauth

安装

$ dsh plugin --profile web add github:franksong2702/dsh-codex-connect

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 franksong2702/dsh-codex-connect:先查看仓库 https://github.com/franksong2702/dsh-codex-connect.git 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

让用户在 DeepSeek Harness 中用 ChatGPT 订阅登录,把 OpenAI Codex 模型(含独立搜索、读图、生图)作为一种 LLM 选项使用,不替换默认模型与全局搜索路由。

核心能力

  • Settings → Plugins → Plugin configuration → Codex Connect 卡片中用 ChatGPT OAuth 账户登录,凭据单独存到 $DSH_HOME/.openai-codex-auth.json,与 Codex CLI/Desktop 不互通
  • 在模型选择器中以 OpenAI Codex 分类使用 Codex 模型,保留 Harness 原生的流式输出、工具调用、推理回放、会话压缩与权限审批
  • 启用可选的独立网络搜索,将 Codex 注册为搜索提供者,但不会自动接管 profile 的全局搜索路由
  • 启用可选的 view_image 工具,让支持视觉的 Codex 模型读取本地文件与公网图片(DNS 解析与跳转目标全程校验并锁定为公网地址)
  • 启用可选的 codex_connect_image_generate 工具,调用 GPT Image 生成的图片直接保存为 DSH 附件并在会话内显示
  • 提供 dsh-codex-connect 独立 CLI,用于登录/登出、状态、doctor、历史迁移、按需放行远端浏览器 origin

技术实现

  • 语言: TypeScript (ESM,使用 tsdown 打包)
  • 关键依赖: @deepseek-ai/cordis(插件注册与 fiber 注入)、@earendil-works/pi-ai@0.82.1(OpenAI Codex provider 与 OAuth 流)、@deepseek-ai/dsh-llm-pi-ai(复用通用 Adapter)、@deepseek-ai/dsh-settings(settings-section 编辑)
  • 架构模式: 通过 cordis.patch.yml 注入 llm-openai-codex 行(3 个 capability 全部为 false);Host 端 apply() 一次性注册 OAuth store、Transport、Adapter、可配置 Provider;capability 在 installSettingsSectiononChange 中通过 ctx.effect + reconcileXxx() 动态挂载/卸载 search / view_image / image_generate 三组功能 fiber;Browser 端通过 slotssettings.plugin.item 注入卡片,在 conversation.input.right 注入 Fast Mode 开关与配额指示器
  • 入口文件: src/index.ts(Host 插件主体,name = "llm-openai-codex"inject = ["llm"])、src/client/index.tsx(Browser 端,name = "dsh-codex-connect-client")、src/bin.ts(独立 CLI:doctor | login | logout | status | migrate-history | trust-origin 等)

适用场景

已经在为 ChatGPT Plus/Pro 付费、希望把 Codex 当作 DSH 中一种可选 LLM 的用户;既想用 Codex 模型,又不愿放弃 Harness 的会话持久化、压缩、子代理、工具审批、附件、MCP、技能等机制的人。当前的 Codex Connect 也承担从旧的 dsh-codex 平滑迁移、并保留搜索/读图/生图三组可选能力的角色。

前置依赖与兼容性

依赖最低版本说明
DeepSeek Harness Plugin API0.1.0-rc.7一组 @deepseek-ai/dsh-* 包必须同时升级,详见 compatibility.json
@earendil-works/pi-ai0.82.1OpenAI Codex provider 上游,需与 DSH 包同步升级
Node.js`^22.19.0
平台macOS / Windows / LinuxmacOS、Linux 会对 OAuth 文件强制 owner-only 权限(chmod 600),Windows 自动跳过此检查
原生模块无(仅依赖 node:http / node:https / node:net.BlockList 等内置模块)

安装方式

dsh plugin --profile web add github:franksong2702/dsh-codex-connect

配置项

配置类型说明默认值
enableSearchboolean把 Codex 注册为独立的网络搜索提供者;不会自动选中作为全局搜索false
enableImageToolboolean启用 view_image 工具:让视觉模型读取本地文件与公网图片false
enableImageGenerationboolean启用 codex_connect_image_generate 工具:通过 GPT Image 生成图片,结果存为 DSH 附件false
searchModelstring用于独立搜索的 Codex 模型 IDgpt-5.6-sol
searchModecached / indexed / live搜索模式:使用 OpenAI 缓存 / 索引 / 实时抓取cached
searchContextSizelow / medium / high搜索接口返回的上下文体量medium
searchMaxOutputTokens正整数搜索接口最大输出 token 数10000

常见问题

Q: 安装 Codex Connect 之后,原来配置的默认模型和搜索会被改掉吗?

A: 不会。cordis.patch.yml 只插入一行 llm-openai-codex,且 3 个 capability 默认都是 false,profile 的 agent-default-modelweb.searchProvider 必须由你显式写入才会生效。

Q: OAuth 凭据放哪里?跟 Codex CLI/Desktop 是同一份吗?

A: 凭据存放在 $DSH_HOME/.openai-codex-auth.json(默认 ~/.dsh)。这是独立文件,不会读取或修改 ~/.codex/auth.json;想换台机器迁移账号,就在目标机器重新走一遍 ChatGPT 授权。

Q: 必须有 OpenAI Platform 的 API Key 才能用吗?

A: 不需要。Codex Connect 只用 ChatGPT 订阅的 OAuth bearer token,私有 OpenAI Platform 凭据既不读取也不代理——价格、限速、配额都以 ChatGPT 订阅为准。

Q: 哪些信息是不该贴到 issue、日志或配置文件里的?

A: 任何 OAuth 授权 URL、device code、refresh/access token、account id 都不要贴;遇到问题时贴 dsh-codex-connect doctor --json 的脱敏输出就够了。

Q: 升级 DSH 到 0.1.0-rc.7 之后,从前用 Alpha 4.10 跑出来的 Codex 搜索历史读不出来了,怎么办?

A: 先 dsh plugin --profile web exec dsh-codex-connect migrate-history --json 扫一遍;看到命中事件后停掉所有会写该 session 根目录的 DSH 进程,再带 --apply --confirm-stopped --json 真正修复;修复前会先在同目录生成 .pre-codex-search-history-migration 备份。

Q: doctor / status 命令会不会输出密钥?

A: 不会。doctor 只读取 lstat 元数据并输出 schema v1 的脱敏 JSON(包含密码文件状态、能力开关、兼容性状态、provider 冲突、提示语),不打印绝对路径或 OAuth 字段;status --json 只回报 signed-in / signed-out

Q: 我同时还装着老的 dsh-codex 包,会发生什么?

A: 启动会因 provider id 冲突被拒(Harness 不允许两个 adapter 注册 openai-codex),并提示先卸载冲突方或删除 profile 中多余的 llm-openai-codex 行,再装 Codex Connect。

上手难度

入门 — 安装后只需进入设置卡片点一次 Sign in with ChatGPT,再到模型选择器挑一个 openai-codex 模型即可使用;capability 默认关闭,几乎不会改变现有配置。

已知问题与限制

  • Codex 端点不强制 Responses 接口的 max_output_tokens,因此 Harness 压缩总结的服务端 token 上限无法在该路由施加(README.md:186)
  • POSIX 平台对 OAuth 文件做严格的 owner-only 校验,模式位放宽到组/其他可读会被拒绝启动,需 chmod 600 后再试(src/store.ts:32-50)
  • 历史修复命令在 Windows 上仅支持 dry-run,--apply 模式会被代码层主动拒绝(src/history-migration.ts:295-297)
  • view_image 远程 URL 强制走公网校验:每个跳转目标都要重新解析并把 socket 钉到验证后的地址,否则被拒;本地回环、私网、链路本地、云元数据端点全部不可达(src/public-http.ts:59-103 / src/public-http.ts:167-173)
  • 卸载本包不会自动删除 OAuth 凭据,必须显式 dsh-codex-connect logout,否则 $DSH_HOME/.openai-codex-auth.json 会保留(README.md:179)
  • 独立搜索工具启用后不会在 Session 内写入 plugin 私有 required 事件,因此不能跨独立的 @deepseek-ai/dsh-session 实例保留遥测;但 Harness 自身的 web Tool 记录照常落入历史(docs/design.md:19)

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/franksong2702/dsh-codex-connect)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录
dsh-codex-connect — DeepSeek Harness 插件 | deepseek-plugin.org