☰
在 DeepSeek Harness 里用你的 ChatGPT 套餐:dsh-openai-siwc 发布
2026/10/30 2:45:56 网站建设 项目流程

一句话:@hackforjoy/dsh-openai-siwc让 DeepSeek Harness(DSH)通过 OpenAI 官方的Sign in with ChatGPT(SIWC)机制登录你的 ChatGPT 账号,并使用你的 ChatGPT Plus / Pro 套餐额度调用模型——不需要 API Key,也不改动 DSH 一行核心代码。

  • GitHub:https://github.com/HackForJoy/dsh-openai-siwc
  • npm:https://www.npmjs.com/package/@hackforjoy/dsh-openai-siwc

这是社区插件,与 OpenAI、DeepSeek 均无隶属或背书关系。


为什么做这个插件

DeepSeek Harness 是一个插件化的 Agent 运行环境。很多人手里已经有 ChatGPT Plus 或 Pro 订阅,却还得为 Agent 单独申请、充值一个 API Key。

OpenAI 为开源客户端提供了一条官方路径:ChatGPT plan usage for open-source clients。应用通过 Sign in with ChatGPT 完成授权,用户确认后,符合条件的推理请求直接计入他的 ChatGPT 套餐。dsh-openai-siwc就是把这条官方路径接进 DSH 的 provider 插件。

需要先说清楚它不是什么:

  • 不是传统的 Codex OAuth(复用 Codex CLI 的固定 client、调用 ChatGPT 网页后端)。本插件只走官方文档描述的 SIWC 流程和公开的api.openai.com/v1接口。
  • 不是API Key provider。它不会把 SIWC token 当作 API Key 使用,请求失败时也不会悄悄切换到别的计费方式。

它能做什么

在 DSH 的模型选择器里选择ChatGPT plan (Sign in with ChatGPT)下的模型,就能像使用其他 provider 一样驱动 Agent:

  • 流式输出、多轮对话
  • 工具调用:DSH 的全部工具都能用(按官方要求放在一个 namespace 中),工具结果会回传给模型
  • 图片输入:给对话附加图片,支持图片的模型直接"看图",工具结果里的图片也会发送
  • 推理强度:选择器里可以选 Low / Medium / High / Xhigh / Max,选 Default 则使用服务端默认值
  • 模型能力全部来自你账号的模型目录:输入类型、上下文窗口、可选的推理档位都由/v1/models返回的数据决定,不靠硬编码,也不做猜测

还有几条斜杠命令:

/siwc login [new] # 登录(或添加另一个 ChatGPT 账号) /siwc status # 登录状态、授权范围、token 剩余时间、最近一次错误(不显示任何 token) /siwc models # 拉取当前账号可用的模型 /siwc logout # 登出,并在 OpenAI 端撤销会话

三步上手

使用条件:ChatGPTPlus 或 Pro账号(官方说明 plan usage 面向符合资格的用户,Free 账号在登录时会被拒绝);DSH 0.2.1-rc.3;Node.js ≥ 22。

1. 安装

DSH="/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh"# macOS"$DSH"plugin--profile<profile>add@hackforjoy/dsh-openai-siwc

2. 登录:重启 DSH 后,在一个会话里执行/siwc login。插件会打开系统浏览器,你在 ChatGPT 页面上确认授权、允许使用 ChatGPT 套餐即可。浏览器显示 “Sign-in finished” 后回到 DSH。

3. 使用:在模型选择器里选一个模型,按需调整推理强度,开始对话。

小提示:DSH 首页的空白输入框不显示命令输出,/siwc命令请在已有会话中执行。

安全是第一位的

这个插件替你保管的是能消耗你 ChatGPT 套餐额度的令牌,所以安全设计贯穿始终:

  • 严格遵循官方协议:动态客户端注册、仅监听127.0.0.1的回环回调、PKCE S256、state 与 nonce 校验;ID Token 用官方 JWKS 验签,并校验 issuer、audience、过期时间和 nonce。
  • 授权范围检查:只有在用户明确授予 ChatGPT plan 使用权限时才发起推理。
  • 令牌不外泄:令牌只放在请求头里,不进 URL、日志、诊断输出或命令结果;所有错误信息都经过脱敏处理。OpenAI 端点写死在代码中,不能通过配置改成别的地址。
  • 安全存储与刷新:凭证存放在 DSH 的凭证存储中(权限0600、原子写入);刷新在跨进程独占的写入区间内完成,多个 DSH 进程不会争用同一个轮换的 refresh token。
  • 真正的登出:/siwc logout会先在 OpenAI 端撤销会话,再删除本地令牌;如果撤销未能确认,会明确告诉你。
  • 不绕过任何服务端限制:资格、用量上限、模型权限都以服务端为准,错误原样上报,不重试、不切换计费方式。

完整的威胁模型见仓库里的docs/security/threat-model.md。

工程上的几点坚持

以官方文档为唯一协议依据。每个端点、参数和错误码都能在官方文档里找到出处,核实记录在docs/research/openai-siwc-protocol.md。文档没有写明的行为,一律先标为"待验证",再用真实账号确认。

真实环境验收,不只是跑通 mock。在隔离的 DSH 环境中,用真实的 Plus 账号逐项验证了登录、退出后再次登录、模型列表、流式输出、多轮对话、工具调用、图片识别、推理强度、令牌刷新与轮换、登出与远程撤销,并扫描了日志和会话文件,确认没有令牌泄露。真实环境也教会了我们一些文档里没写的事,例如:

  • 模型目录里会出现 API 并不接受的推理档位(ultra),因此可选档位要和 API 允许的值取交集;
  • 流式响应不带Content-Type头;
  • 不符合资格的账号是在换码阶段被拒绝的。

这些发现都已记录在仓库文档中,并体现在实现和测试里。

测试与真实服务对齐。157 个单元测试和集成测试运行在真实的 DSH 服务(LLM 运行时、授权服务、凭证存储、附件存储)之上,对接一个严格实现官方协议的 mock:校验 PKCE、强制参数一致、refresh token 轮换并拒绝重用,并复刻真实服务的行为。测试永远不会碰你真实的~/.dsh。

可验证的发布。每个版本都由 GitHub Actions 构建一次,同一个 tarball 同时挂到 GitHub Release 并发布到 npm(npm Trusted Publishing,不存储任何 token),附带 SLSA provenance:

# 校验 GitHub Release 附件sha256sum-cSHA256SUMS# 校验 npm 包的签名与来源证明npmaudit signatures

零核心改动。插件只使用 DSH 的公开扩展点:ctx.llm、ctx.credentials、ctx.authorization,以及可选的ctx.commands、ctx.attachments。

已知限制

  • 目前只验证过 DSH 0.2.1-rc.3。DSH SDK 仍是预发布版本,插件会跟随 DSH 版本发布对应的更新。
  • 同一时间只有一个活动账号(可以保存多个账号,登录时选择)。
  • DSH 0.2.1 的设置界面还没有为第三方授权流程提供按钮,所以登录要通过/siwc login完成。
  • 这条路径的可用性和额度由 OpenAI 决定:Plus 用户的 5 小时用量上限在所有使用 ChatGPT 套餐的应用间共享,可以在 https://chatgpt.com/settings/usage 查看和管理。

参与进来

项目以 MIT 协议开源,欢迎试用、提 Issue 和 PR:

  • 🐙 GitHub:https://github.com/HackForJoy/dsh-openai-siwc
  • 📦 npm:@hackforjoy/dsh-openai-siwc
  • 🔒 安全问题请通过 GitHub 的私密漏洞报告提交,不要公开发 Issue。

如果你也在用 DeepSeek Harness,又刚好有 ChatGPT 订阅,不妨试一试。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询