前言¶
DeepSeek Harness(DSH)的插件生态允许开发者把各种模型接入同一个路由体系。在模型推理场景中,很多团队希望复用已有的 ChatGPT 网页套餐额度,而不是另外申请 OpenAI API 或 Codex 额度。但 ChatGPT 网页后端需要浏览器会话中的 Sentinel/PoW 令牌与 Cloudflare 放行,无法直接用 HTTP 调用。sunyifeisb-art/dsh-llm-chatgpt-web 解决了这个问题:它通过 DevTools Protocol 驱动本地 Chrome,在 DSH 里接入一个名为 chatgpt-web 的模型路由,把 ChatGPT 网页端的额度用起来。
是什么¶
这是 sunyifeisb-art 维护的一个 DSH 插件,属于「模型推理」分类。它为 DeepSeek Harness 添加了一个名为 chatgpt-web 的模型路由,每次调用该路由时,插件会在本地 Chromium 浏览器中驱动一个已登录的 chatgpt.com 会话,从网页端获取回复。推理消耗的是 ChatGPT 网页套餐额度,而不是 OpenAI API 额度或 Codex 额度。插件不依赖 API key、不需要代理服务器、也不需要账号共享。
核心功能¶
模型路由¶
插件会在 DSH 中插入一条模型路由配置:
- id: llm-chatgpt-web
name: dsh-llm-chatgpt-web
config: {}
在模型选择器中,路由 id 为 chatgpt-web(可通过配置项 provider 修改)。
浏览器会话驱动¶
插件使用 DevTools Protocol(CDP)驱动一个真实浏览器会话(Chrome、Edge 或 Chromium 均可)。会话使用插件专用的浏览器 profile(默认为 ~/.dsh/chatgpt-web/chrome-profile),不干扰日常浏览器。浏览器按需在后台启动(macOS 使用 open -g -j),关闭后自动重新拉起。仅在需要登录时,插件会将窗口移到屏幕内并激活。
临时对话与对话模式¶
默认使用临时对话,不会写入 ChatGPT 历史记录。对话模式有两个选项:
continue:每个 DSH 会话维护一个临时对话,后续调用只发送增量(新的用户消息或工具结果),上下文由网页端维护。fresh:每次调用都开启一个新的临时对话。
工具调用¶
ChatGPT 网页端没有函数调用 API。插件要求模型在 fenced JSON 块中输出工具调用:
{"name": "bash", "arguments": {"command": "ls"}}
插件将其转换为 DSH 的 tool-call,将工具结果粘贴回下一轮对话。提示词明确禁止模型使用自身的容器或代码解释器执行命令,若模型声称执行了某操作但未使用工具调用,会被拒绝并重试。
配置项¶
| Key | Default | Meaning |
|---|---|---|
provider |
chatgpt-web |
路由 id,用于模型选择器 |
displayName |
ChatGPT 网页版 |
在 DSH 中显示的名称 |
transport |
web |
fake = 离线自测流 |
chromePath |
Google Chrome(macOS 路径) | 浏览器可执行文件路径 |
userDataDir |
~/.dsh/chatgpt-web/chrome-profile |
专用浏览器 profile(登录态保存在此) |
debuggingPort |
9333 |
专用浏览器的 CDP 端口 |
windowMode |
hidden |
visible / hidden(窗口移出屏幕,后台启动)/ headless(ChatGPT 会屏蔽,不推荐) |
temporaryChat |
true |
使用临时对话(不写入 ChatGPT 历史) |
conversationMode |
continue |
continue = 会话内保持一个临时对话,只发增量;fresh = 每次新建 |
reasoningEffort |
high |
每次调用前对齐网页端「思考力度」滑块(low / medium / high) |
webModel |
empty | 可选,强制使用网页端模型(如 GPT-6),空则使用页面当前选择 |
maxPromptChars |
60000 |
提示词字符预算 |
emulateTools |
true |
用文本协议模拟函数调用(见上文) |
responseTimeoutMs |
600000 |
单次回复最大等待时间(毫秒) |
安装与启用¶
在 DeepSeek Harness 中安装插件:
dsh plugin --profile <name> add /absolute/path/to/dsh-llm-chatgpt-web
或者在 Harness 内部使用插件管理器:
plugin_manager install_bundle <absolute path>
安装完成后,插件会插入一条模型路由配置(见上文)。
典型用法¶
首次登录¶
- 在模型选择器中选中 ChatGPT 网页版(路由 id 为
chatgpt-web),发送任意内容。 - 插件会在本地启动一个专用 Chrome 窗口,停留在 ChatGPT 登录页,并提示 web 登录尚未完成。
- 在该窗口中完成登录(账号密码或 Google 登录均可)。登录态保存在插件专用的 profile 中,不会写入日常浏览器。
- 回到 DSH,再次发送内容,浏览器会在后台启动并获取回复。
日常调用¶
在 DSH 中选择 chatgpt-web 路由,发送对话。插件会按需启动浏览器,从网页端获取回复。如果浏览器被手动关闭,插件会在后台自动重新拉起。
工具调用示例¶
在对话中,模型可返回如下 JSON:
{"name": "bash", "arguments": {"command": "ls"}}
插件将其解析为工具调用,在下一轮将工具结果粘贴回对话。
已知限制¶
- 每个 DSH 会话一条临时对话:每个会话独占一个浏览器标签,整个会话期间使用同一条临时对话。后续调用只发送增量(新的用户消息 / 工具结果),上下文由网页端维护。不同会话相互隔离。可通过
conversationMode: fresh恢复每轮新建对话。 - 串行调用:只有一个浏览器标签,模型调用会排队。
- 每轮重发上下文:使用临时对话,没有服务器端的历史延续,每轮都需要重新发送任务 + 工具 + 最近历史。
reasoningEffort=high时一步通常需要 10–40 秒。 - 仅支持文本:暂不支持图片输入。
- 依赖 chatgpt.com DOM:当 OpenAI 更新网页布局时,选择器可能需要调整。失败时会自动保存截图到
~/.dsh/chatgpt-web/logs/screenshots/。 - 非安全沙箱:插件以本地用户权限运行,使用的是你自己的 ChatGPT 会话。安装前建议阅读源码。
适用场景与注意¶
该插件适合希望复用 ChatGPT 网页套餐额度、在本地浏览器环境中完成推理的场景。如果你已有稳定的 OpenAI API 额度或 Codex 额度,可能不需要这个插件。需要注意:
- 插件以当前 DSH 进程的权限运行,它使用的是你自己的 ChatGPT 账户和会话。
- 安装前建议查看源码与许可证(MIT)。
- 插件依赖 chatgpt.com 的页面结构,若 OpenAI 更新网页设计,可能需要同步更新选择器。
结尾¶
这个插件把 ChatGPT 网页端接进了 DSH 的模型路由体系,让你在本地浏览器中复用网页套餐额度完成推理,同时避免了 API key、代理和账号共享的复杂性。目录页与源码仓库如下:
- 目录页:https://www.skillhub.cn/plugins/sunyifeisb-art/dsh-llm-chatgpt-web
- GitHub:https://github.com/sunyifeisb-art/dsh-llm-chatgpt-web