DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

Starlight-bananice /

Starlight-bananice/dsh-chatgpt-plugin

Verified

在 DeepSeek Harness 里用 ChatGPT 账号登录,并把 ChatGPT 方案模型当成普通 provider 使用 / Sign in with ChatGPT inside DeepSeek Harness and use ChatGPT-plan models as a normal provider route

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@dd85cd3a

@bananiceee/dsh-chatgpt-provider

在 DeepSeek Harness 里用 ChatGPT 账号登录,把 ChatGPT 方案(Plus / Pro)的模型当成普通 provider 使用。

A DeepSeek Harness plugin that signs in with ChatGPT and serves ChatGPT-plan models as a normal chatgpt provider route.

  • 走 OpenAI 公开的 Responses API,用 Sign in with ChatGPT 的 OAuth 令牌认证
  • 模型出现在 Harness 自带的模型选择器里,与其它 provider 无异
  • 账号、令牌、刷新全部托管在 Harness 的凭据文档中;本插件不做代理、不经第三方服务器
  • 唯一的运行时依赖是 jose(ID token 验签)与 @deepseek-ai/schemastery

Preview 依赖。 它建立在 OpenAI 面向开源客户端新开放的 Sign in with ChatGPT 之上, 该能力目前是 Preview:端点、scope 名与字段限制都可能变化。

为什么需要它 / Why a plugin

Harness 自带的 @deepseek-ai/dsh-llm-pi-ai 已经注册了 ChatGPT 的授权流程,但整个产品里 没有东西去消费它 —— 那条流程注册得出来、却点不到;而且它默认休眠,没有 provider profile 就不注册任何路由,选择器里也不会出现模型。

更关键的是协议不同。ChatGPT 方案用量是一条受限的 Responses 路由:强制 store: false / stream: true、没有 previous_response_id 续接、system 槽只能走 instructions、 一批字段必须省略。把这些令牌交给通用 OpenAI 适配器是不行的 —— 它会发出这条路由不接受的字段。

细节见 docs/implementation.md。


环境要求 / Requirements

  • DeepSeek Harness 0.2.x
  • 一个 ChatGPT Plus 或 Pro 账号
  • 本机 127.0.0.1 上的可用端口(OAuth 回调固定走 loopback)

安装 / Install

dsh plugin --profile desktop add @bananiceee/dsh-chatgpt-provider

从源码目录安装(开发用):

dsh plugin --profile desktop add /path/to/dsh-chatgpt-provider

快速上手 / Quick start

  1. 重启 Harness,打开 设置 → ChatGPT
  2. 点 使用 ChatGPT 继续登录,浏览器会打开 OpenAI 官方授权页
  3. 登录并同意把 ChatGPT 方案用于本应用的请求
  4. 回到 Harness,卡片显示已登录账号
  5. 在模型选择器里挑一个 ChatGPT 模型,开始对话

设置页里随时可以 测试连接 —— 它会真的发一个小请求并回报模型名、回复与 token 用量, 用来把「凭据存在」变成「凭据能用」。

使用 / Usage

登录与账号

入口在 设置 → ChatGPT。同一个 provider 的卡片也会出现在 设置 → 模型 里, 但插件自己的页面更可靠:模型页那条路径依赖「已服务的 settings 命名空间」来 join provider 行, 命名空间出问题时那一行不会出现也不报错。

  • 使用其他 ChatGPT 账号 —— 每个账号一条独立注册记录,互不覆盖
  • 重新授权 —— 复用已签发的 client id 重走一次授权
  • 退出登录 —— 撤销授权并清除本地记录
  • 管理用量 —— 跳转 ChatGPT 的用量设置页
  • 测试连接 —— 真的发一次请求,按名字报出账号过期、额度用尽、会话被撤销

模型

模型列表默认取自你的账号(GET /v1/models,只展示 visibility: "list" 的条目)。

要在选择器里出现清单之外的模型,显式配置即可 —— 清单外的 id 是能用的, 它只表示「账号没主动报告这个模型」:

# profile 的 cordis.patch.yml
- id: dsh-chatgpt-provider
  name: "@bananiceee/dsh-chatgpt-provider"
  config:
    models:
      - id: gpt-6.1-sol
        name: GPT-6.1 Sol
        contextWindow: 1050000     # 建议写:压缩阈值依赖它
      - id: gpt-6-sol
        name: GPT-6 Sol
        contextWindow: 1050000
      - id: gpt-6-luna
        name: GPT-6 Luna
        contextWindow: 1050000
    testModel: gpt-6-luna          # 「测试连接」打哪个

contextWindow 建议一并声明:Harness 的上下文压缩按「窗口 × 比例」计算触发点, provider 不报窗口时压缩无法按预期触发。GPT-6 全系是 1,050,000。

想确认某个 id 到底能不能用:

node tests/live-models.mjs gpt-6-astra

它会各发一个真实请求并报告结果。只读凭据文档,绝不刷新令牌。

配套的 Agent 预设

本插件只负责连接:注册 chatgpt 路由、处理登录、按这条受限路由的 wire format 收发。 它不改变模型的 Agent 行为 —— 而 GPT-6 系列在这套 harness 下有几个已记录在案的习惯需要单独处理:

  • 逐步骤的进度播报:每个 step 前说一句"我会…"。实测一个会话里连续五步的开场白互相 68%–80% 相似,内容都是同一份计划的复述
  • 停下来请示而不是动手:官方文档写明它"更可能在额外输入会改变结果时向用户提问, 这会导致用户期待它做合理假设并坚持时它却停下"
  • 上下文涨过 272K 后计价翻倍(GPT-6 全系列:2 倍输入/缓存价、1.5 倍输出价,整个请求)

dsh-gpt-agent-preset 就是为此写的配套预设:

git clone https://github.com/Starlight-bananice/dsh-gpt-agent-preset.git
cd dsh-gpt-agent-preset && python3 install-preset.py

装完在 设置 → Agent 预设 里选「GPT 执行优先」。它和本插件是独立的两件事: 预设管 Agent 怎么工作,本插件管模型怎么连上;只用其中一个都能跑,两个一起用才完整。

它还会提示你为模型条目补 contextWindow —— 没有这个字段,Harness 的上下文压缩算不出触发点, 也就压不到 272K 的加价线之下(见上一节)。

配置项

字段 默认 说明
displayName ChatGPT 选择器里显示的名字
account 最近登录的 指定使用哪个已登录账号
agentName DeepSeek Harness 授权页上显示的应用名
reasoningEfforts low/medium/high/xhigh/max 选择器提供的推理档位
reasoningEffort 模型默认 默认档位
models 账号清单 附加/覆盖的模型条目
testModel 优先选含 luna 的 「测试连接」使用的模型
callbackPort 1455 OAuth 回调端口
maxImageBytes 8 MiB 单张图片上限
maxInlineImageBytes 24 MiB 单请求图片总量上限

排障 / Troubleshooting

设置页里看不到 ChatGPT 卡片

先重启 Harness。浏览器那半边的模块注册表在启动时扫描并生成脚本表, 启动时不存在的包不会凭空出现在表里。

卡片在,但登录按钮点了没反应

/chatgpt/api/status 是不需要登录的自检端点,它直接回答四件事:

字段 含义
directory.routeLive 适配器路由注册了吗
directory.inDirectory provider 目录里有这条吗
settingsSectionMounted / settingsSectionError settings 命名空间注册了吗、为什么没注册
clientModule 浏览器半边注册了吗
curl -s http://127.0.0.1:<port>/chatgpt/api/status | python3 -m json.tool

出现了 invalid_value / 只有第一轮能跑

历史里有 assistant 回合时,文本块必须是 output_text,写成 input_text 会被 400 拒绝。 若遇到,请附上 /chatgpt/api/status 与错误原文提 issue。

提示余额或额度不足

Plus 的五小时限额是与其它应用共享的,本应用拿不到单独额度;Pro 不受该限制影响。 官方没有提供查询剩余额度的接口,所以卡片不显示数字,只给「管理用量」链接。

更新插件代码后行为没变

Node 的 ESM 模块缓存持有旧的 lib/index.js,在「设置 → 插件」里 toggle 只会重跑 apply, 不会重新读文件。要让新代码生效必须重启应用。

隐私与安全 / Privacy and security

  • 令牌只落在 Harness 的凭据文档($DSH_HOME/.credentials.yaml,0600、原子写、带文件锁), 不写日志、不进环境变量
  • 登录流程全程只与 auth.openai.com 和 api.openai.com 通信。 令牌不会被发往 ChatGPT 的 backend-api(官方明确禁止)
  • 本机 host 标识是 urn:uuid: 形式的固定标识符,不是凭据
  • /chatgpt/api/* 不带额外鉴权,只监听 127.0.0.1。 它暴露账号邮箱/身份与登录控制,不含令牌本身。本机多用户场景下应当知道这一点

已知限制 / Known limitations

  • 依赖 Preview 能力,字段、scope 与端点可能在正式版前变化
  • 共享五小时限额(Plus),无单独额度
  • 不在 OpenAI 的通知范围内:用户在 ChatGPT 设置里断开应用时 OpenAI 不会通知本插件, 要等某次请求或刷新确认失效才会发现
  • 用量不显示余额(官方未提供查询接口)
  • 图片有内联上限(单张 8 MiB、单请求 24 MiB),超出的图片被跳过并留下说明文字

更多文档 / More

文档 内容
docs/implementation.md OAuth 流程、账号存储、适配器 wire format、登录入口的内部实现
docs/verification.md 六个测试套件各自证明什么,以及它们抓到的真实 bug
docs/development.md 构建、测试、以及两条只有真实运行才会暴露的契约约束

变更记录 / Changelog

0.1.1

  • 文档重写。 README 改为面向使用者的手册(安装、使用、模型配置、配置项、按现象排障), 实现细节、验证说明与开发注意事项迁到 docs/。这三份文档此前不在发布清单里,现在会随包发布。
  • 修复:react / react-dom 未声明为依赖。 tests/client.mjs 用 React 挂载客户端 bundle, 但这两个包此前只能通过 scripts/build.sh 建立的软链解析 —— 在没有构建过的 clone 上 pnpm test 会以 Cannot find module 'react' 失败,且最后两个套件根本不会执行(由 CI 首次运行发现)。

0.1.0

  • 在 ChatGPT 方案(Plus / Pro)上注册 chatgpt provider 路由,走公开的 Responses API, 用 Sign in with ChatGPT 的 OAuth 令牌认证
  • 设置页登录卡片、多账号、重新授权、退出登录、用量链接、真实连通性测试
  • 修复:工具返回的图片不再丢失。 function_call_output 只接受文本,此前图片被替换为占位文字、 模型完全看不到 —— 截图检查、网页视觉验证、Office 排版检查因此静默失效。现在图片作为紧随该输出项 之后的 user 消息发出,复用用户上传图片的同一条路径(同样的字节上限与 data URL 拼法, 超限同样是明确文字的占位符)。工具结果的文本内容一字不丢。

参考 / References

  • Sign in with ChatGPT — Overview
  • Registration and sign-in
  • Accounts and sessions
  • Models and inference
  • Errors and recovery
  • Token reference
  • Preview limitations
  • UI/UX guidelines

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit dd85cd3ae2e6

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout