dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
在 DSH 左侧栏加入 DeepSeek 聊天入口,主内容区全宽内嵌 chat.deepseek.com(仅桌面版),恢复上次会话,并把内嵌页崩溃限制在面板内。
English | 中文
在 DeepSeek Harness(DSH)桌面版的左侧栏加入 DeepSeek 聊天 入口,点开后 chat.deepseek.com 直接占满主内容区,并记住上次所在的会话。

https://chat.deepseek.com/(Electron <webview>,走桌面壳的 guest 租约桥 window.dshDesktop.browser)。dsh web 在浏览器里打开)自动不注册——该站点 frame-ancestors 'none',iframe 嵌不了,guest 租约桥也只有桌面壳提供。| 项 | 要求 |
|---|---|
| DSH | 桌面版 0.2.1-rc.2 或更新 |
| 平台 | Windows / macOS / Linux 桌面壳 |
| git | 仅「GitHub 安装」方式需要(pnpm 通过 git 拉取仓库) |
打开 DSH 桌面版,左侧栏点 插件。
点列表上方的 安装第三方插件。
在「包名或地址」里填入:
github:sweet560/dsh-plugin-deepseek-chat
也可以填 https://github.com/sweet560/dsh-plugin-deepseek-chat。
点 安装,等 pnpm 跑完(首次会拉取仓库并安装依赖)。
安装完成后插件自动启用,左侧栏出现 DeepSeek 聊天。
dsh plugin --profile desktop add github:sweet560/dsh-plugin-deepseek-chat
装完打开 插件 → 已安装插件,确认「DeepSeek 聊天」处于启用状态(命令行只负责装依赖,启用状态以插件页为准)。
dsh plugin --profile desktop add file:"<本仓库绝对路径>"
dsh-sidebar-browser-<uuid>,没有 persist: 前缀),进程退出即清空 cookie。本插件不修改 DSH 的安装文件,所以不会绕过这一限制;想做到「登录一次、长期免登录」,可直接运行仓库自带的补丁脚本 docs/patch-dsh-persistent-partition.cjs(已适配 0.2.1-rc.3 的 ASAR integrity,支持 --dry-run、自动备份与全量校验),说明见 docs/login-persistence.md。dsh-plugin-deepseek-chat:last-url),重启后仍会打开上次的会话(前提是已登录且该会话仍存在)。DSH 目前给内嵌浏览器分配的是内存分区(dsh-sidebar-browser-${randomUUID()},无 persist: 前缀),所以每次重启 App 都会清空 cookie。想做到「登录一次、以后不再登录」,需要把桌面主进程里的那行分区名改成固定且带 persist: 前缀的值——两条语句字节数相同,可以直接在 resources/app.asar 里原地替换。
完整原因、脚本、验证步骤、回滚方式和各平台路径都整理在这里:
补丁脚本(仓库自带,Node 18+,零依赖):
# 打补丁(自动备份)
node docs/patch-dsh-persistent-partition.cjs "F:\DeepSeek Harness\resources\app.asar"
# 只检查、不写盘
node docs/patch-dsh-persistent-partition.cjs "F:\DeepSeek Harness\resources\app.asar" --dry-run
脚本已适配 0.2.1-rc.3 的逐文件 ASAR integrity(自动重算并同步 lib/main.js 的 SHA256),支持幂等重跑(已打补丁直接返回 0)、自动备份、写入前后全量校验,以及 --dry-run 预演。
注意:这属于对已安装应用的修改,不在 DSH 支持范围内;DSH 升级会覆盖 app.asar,需要重新打补丁(Partitions 里的登录数据不会丢)。请先备份,风险自负。
dsh web 在浏览器里打开时不显示入口。/a/chat/s/<id> 形式),「记住会话」可能失效并回退到首页。早期版本出现过:点开面板、聊天页正常显示 1~2 秒后整个 App 变成空白窗口(只剩原生菜单和窗口按钮),没有崩溃对话框也没有 crash-*.log。
根因是 React 卸载面板时先移除 DOM、后执行 effect 清理,而 Electron 的 <webview> 一旦脱离文档,getURL() 就会抛错;DSH 把插件里任何未捕获异常都当作 slot entry crashed in 'root',直接卸载 root slot —— 整个 App UI 因此消失。
现在的实现:
element.isConnected 再 try/catch,清理阶段「先读 URL、再移除元素」;try/catch,异常只落在面板自己的状态里;render-process-gone / destroyed / did-fail-load,guest 出问题时面板内显示「重试」;dom-ready 就转重试卡片。git clone https://github.com/sweet560/dsh-plugin-deepseek-chat.git
cd dsh-plugin-deepseek-chat
node test/check-client.mjs
test/check-client.mjs 是离线自检:在 node:vm 里加载 lib/client.js,用假的 React/DOM/租约桥验证注册、会话记忆、租约释放和崩溃隔离(DOM 先移除再清理不抛错、guest 崩溃不逃逸、反复开关不漏租约)。
目录:
lib/index.js 宿主半侧(空实现,只为让 client bundle 有 Loader 入口)
lib/client.js 浏览器半侧:入口、面板、webview 生命周期、崩溃隔离
cordis.patch.yml bundle 补丁:插入本插件的 Loader 行
locale/zh.json 插件页显示名称/描述(中文)
locale/en.json 插件页显示名称/描述(英文)
icon.svg 插件页图标
test/check-client.mjs 离线自检
dsh plugin --profile desktop remove dsh-plugin-deepseek-chat