前言¶
在 DSH 里会话模型处理「一加一等于几」这类一句话能答完的问题,往往会多占一轮 agent 上下文,也绕不开 API Key 或额外 SDK。若你已经有 chat.deepseek.com 的网页登录态,更自然的做法是让机器人在真实浏览器里打字、读字,复用网页端自己的风控与签名,而不是伪造请求或抓包。下面介绍的插件由社区维护者 xkzdwb 发布,归类为联网工具,在 GitHub 上开源(MIT,当前 package 版本 0.1.0,要求 Node ≥ 20)。
这是什么¶
DSH-UseWebDeepseek-WhenEasyWork 把能力注册成 DSH 工具 ask_deepseek_web:遇到轻量问题时模型可直接调用;你也可以用命令行 node src/cli.mjs 单独提问。实现上只用 Node 内置模块(node:http、node:child_process 及自研极简 CDP 客户端),不需要 npm install。主路径是插件跑在 DSH HOST 进程里;命令行请在普通终端或完全权限下使用,会话沙盒对 Chromium 不友好(README 实测 Edge 约 7 秒后以断点异常退出)。
仓库:https://github.com/xkzdwb/DSH-UseWebDeepseek-WhenEasyWork;社区目录页:https://www.skillhub.cn/plugins/xkzdwb/DSH-UseWebDeepseek-WhenEasyWork。目录站点为社区插件索引,与 DeepSeek、幻方无官方从属关系。
核心机制¶
调用方(DSH 工具或 CLI)进入 src/ask.mjs,由 src/browser.mjs 启动或复用 Edge(专用 profile、登录态常驻),打开 https://chat.deepseek.com/。经 WebSocket 直连的 CDP:聚焦输入框、Input.insertText 输入、回车发送;每 400ms 取页面快照,依据答案文本长度与是否存在「停止生成」按钮判断流式是否结束。当新的 .ds-markdown 出现、文本连续两次不变且无停止按钮时,返回纯文本。插件不做 API 调用、不改页面 JS,并发上同一页面串行问答,并声明 isConcurrencySafe: () => false。
主要源码与辅助文件见仓库 README 中的说明:src/cdp.mjs、src/browser.mjs、src/ask.mjs、src/cli.mjs、src/plugin.js,以及离线测试与 DOM 探针 tools/probe.mjs 等。
安装与启用¶
DSH 侧没有 README 里单独的 dsh plugin add 命令;启用方式是把插件条目追加到 profile 的 cordis.patch.yml 的 insert 列表,并把 name 改成本机插件 src/plugin.js 的绝对路径。完整片段见仓库 examples/cordis.patch.snippet.yml。
- id: tool-deepseek-web
name: "/absolute/path/to/DSH-UseWebDeepseek-WhenEasyWork/src/plugin.js"
config:
toolName: ask_deepseek_web
port: 9555
headless: false
timeoutMs: 90000
promptBias: true
追加后重启 DSH(插件在 HOST 启动时加载)。安装前应自行阅读源码与 MIT 许可证,确认以当前 DSH 进程权限运行是否符合你的安全预期。
配置字段(README 表格):
| 字段 | 默认 | 说明 |
|---|---|---|
toolName |
ask_deepseek_web |
注册给模型的工具名 |
port |
9555 |
浏览器调试端口 |
userDataDir |
%LOCALAPPDATA%\dsh-web-deepseek\profile |
登录态目录 |
headless |
false |
无头模式;首次登录必须为 false |
timeoutMs |
90000 |
等待答案总超时 |
promptBias |
true |
是否注入「轻问题先调该工具」的系统提示 |
不想自动参与调度时,可将 promptBias 设为 false,工具仍注册,但不再偏置模型行为。
典型用法¶
离线自测(无需登录)¶
在插件目录下执行离线回归测试,约 30 秒,不联网:
node test/ask.test.mjs
插件装配测试(21 项,不需浏览器,README 称 CI 使用):
node test/plugin.test.mjs
注意:须在完全权限或普通终端里跑 ask 相关测试;沙盒里的 Chromium 会崩溃。
首次登录(仅需一次)¶
第一次需要带界面登录 chat.deepseek.com:
node src/cli.mjs "1+1=?" --headed
浏览器停在 https://chat.deepseek.com/sign_in 时手动登录;登录态写入 %LOCALAPPDATA%\dsh-web-deepseek\profile(或通过 userDataDir 指定的目录)。未登录会抛出 SignedOutError,表示需要登录而非插件故障。
接入 DSH 后的验证¶
重启 DSH 后,在会话里问轻问题(例如「1+1 等于几」),模型应调用 ask_deepseek_web。可用仓库工具检查最近会话日志中的工具清单与提示偏置:
node tools/inspect-session.mjs
README 示例输出包括:ask_deepseek_web 在工具清单中,且提示偏置已注入。
适用场景与注意¶
适合:已有网页端 DeepSeek 账号、希望 DSH 把极轻量的常识或算术类问题外包给 chat.deepseek.com、且接受依赖 DOM 选择器(.ds-markdown、停止按钮文案等)的实现方式。
不适合或需谨慎:
- 需要工作区上下文、代码库状态的任务应留在本会话工具,网页端不知道你本机改了什么文件。
- 网页改版会导致失效,需用
node tools/probe.mjs --headed查看结构并调整src/ask.mjs中的COMPOSER_SELECTORS。 - README 明确:自动化访问可能触及服务条款,勿高频批量提问;问题原文会发送到网页端,勿塞入不应外发的资料。
- DeepSeek 网页端能力与当前 DSH 会话模型上下文无关,不能替代需要本地信息的推理链。
排错速查(来自 README):SignedOutError 登录;ComposerNotFoundError 探针看 DOM;AnswerTimeoutError 调大 timeoutMs;浏览器秒退检查沙盒与 profile 占用或换 --port。
结尾¶
DSH-UseWebDeepseek-WhenEasyWork 用真实浏览器与零依赖 CDP,把轻量问题交给 chat.deepseek.com,在 DSH 里体现为 ask_deepseek_web 工具。细节与排错表以仓库 README 为准。