DeepSeek Web Dock for DSH
在 DeepSeek Harness Desktop 左侧「工作区」上方加入一个按钮,
把免费的 DeepSeek 网页版接入原生右侧栏。
English · 安装指南 · 实现说明 · 网页上传 · 更新日志
非官方社区插件,与 DeepSeek 官方无关。插件使用 DeepSeek 网页版账号,不绕过登录、额度或付费限制。
功能
| 操作 | 行为 |
|---|---|
| 单击(关闭状态) | 等待 175 ms 判定后,以普通半屏宽度打开 |
| 双击(175 ms 内) | 直接全屏打开,不会先闪一下半屏 |
| 单击(已打开) | 等待判定后,以原生收起动画关闭右侧栏 |
| Esc | 立即收起;同时取消尚未执行的单击动作 |
| Tab 上的 × | 真正关闭 DeepSeek 标签页 |
- 按钮位于「工作区」标题上方,使用 DSH 侧栏主题变量。
- 网页运行在 Electron 隔离
webview中,不是 iframe,不受X-Frame-Options限制。 - 自动跟随 DSH 明暗主题。
- 首次在网页中登录后,自动保存并恢复网页登录态。
- 关闭右栏时保留标签和网页状态,再次打开回到原页面;要销毁页面请点标签上的 ×。
- 没有 Host 路由、Harness API Key 读取或模型工具;Harness 凭证不会进入网页。
系统要求
- DeepSeek Harness Desktop,需要右侧栏和 Electron
webview支持。 - 当前版本在 DSH Desktop 0.2.1-rc.3(Windows) 上实测。
- 普通浏览器(Web 版 DSH)不可用:没有隔离 webview,按钮会被禁用。
- 插件没有构建步骤,也没有运行时 npm 依赖。
安装
- 下载或 clone 本仓库到一个稳定目录。
- 在 DSH Desktop 的插件管理中使用“从本地目录安装”(如果你的版本提供该入口);或按 安装指南 手动链接到
desktopprofile。 - 完全退出 DSH Desktop 后重新启动。
- 打开任意会话,点击左侧「工作区」上方的 DeepSeek 网页版。
仅关闭窗口到托盘不会重新加载 Host 插件;需要真正退出应用。
包名
@local/dsh-deepseek-web是 DSH 本地 bundle 的安装标识,本项目不发布 npm;GitHub 仓库名可以独立取作dsh-deepseek-web-dock。
手动安装的核心是把本目录链接到:
<DSH_HOME>/profiles/desktop/node_modules/@local/dsh-deepseek-web
并把 @local/dsh-deepseek-web 加入该 profile 的 dsh.profile.bundles。完整步骤见 docs/INSTALL.md。
使用
- 打开任意会话(没有会话时会先创建一个空会话)。
- 单击按钮:半屏打开;双击按钮:全屏打开。
- 第一次使用时,在右侧网页里登录 DeepSeek 账号。之后插件会恢复网页登录态。
- 再次单击按钮或按 Esc:收起右栏。动画与鼠标点右栏右上角收起按钮一致。
- 再点按钮会回到之前的网页页面,不会重新加载。
单击动作有 175 ms 的判定延迟,用来区分双击;双击会取消单击并直接进入全屏。
实现概览
工作区按钮
│ click / 175ms 判定
├── 单击 → openTab + 半屏(push)
├── 双击 → openTab + 全屏(fullscreen)
└── 已打开单击 / Esc → 点击原生收起按钮 → 滑出动画
│
└── webview 保持挂载,状态保留
- Host:空实现,只负责作为 Cordis bundle 被加载。
- Client:在 Workspace 区头前插入按钮;注册
deepseek-web右侧栏 Tab;通过 Desktop browser bridge 申请隔离 guest。 - webview:
about:blank#<lease>启动,dom-ready后加载https://chat.deepseek.com/,离开时释放 lease。 - 登录:读取 DeepSeek 自己的
userToken/__appKit_userInfo,保存到 DSH 文档localStorage的dsh.deepseek-web.auth.v1,下次加载后恢复。 - 主题:把 DSH 的明暗状态同步到网页的
data-ds-dark-theme和color-scheme。
更完整的生命周期、接口与安全边界见 docs/ARCHITECTURE.md。
登录与隐私
- 网页登录 token 只保存在本机 DSH 渲染进程的
localStorage。 - 插件不读取、保存或上传 DeepSeek API Key,也不把 Harness 凭证传给网页。
- 内嵌网页运行在 Electron sandbox 中,不具备 Node、preload 或 Harness 权限。
- 网页内容属于 DeepSeek;插件只负责承载和恢复登录状态。
安全细节与漏洞报告方式见 SECURITY.md。
兼容性与已知限制
- 仅支持 DSH Desktop;Web 版按钮禁用。
- Windows 已实测;macOS/Linux 使用同一套 Electron/DOM 接口,但未实机验证。
- 右栏宽度低于 768 px 时,DSH 会自动全屏展示,此时无法强制半屏。
- 双击必须在 175 ms 内完成;更慢的两次点击会按两次单击处理。
- 登录恢复依赖 DeepSeek 当前的 localStorage 结构;官方改版后可能需要重新登录一次。
- 插件依赖 DSH 的右侧栏、
sidebar.right.pane.tab和 Desktop webview 桥;DSH 大版本升级后建议回归一次。 - 只提供网页承载,不包含抓取对话、回填输入框或自动发送功能。
故障排查
按钮没出现
- 确认使用 DSH Desktop,且左侧栏处于展开状态。
- 确认 profile 的
dsh.profile.bundles包含@local/dsh-deepseek-web。 - 完全退出并重启 DSH;查看客户端控制台是否有插件加载错误。
右侧栏空白或加载失败
- 确认网络可以访问
https://chat.deepseek.com/。 - 确认不是普通浏览器环境。
- 关闭后重新打开;插件会重新申请 webview guest。
登录没有恢复
- 在网页里重新登录一次。
- DeepSeek 可能修改了
userToken/__appKit_userInfo的格式;可提交 issue。
双击变成两次单击
- 两次点击需在 175 ms 内。单击后等待 175 ms 才会执行,属于预期行为。
开发
无需构建,直接修改 client.js / index.js。仓库自带一个不依赖第三方包的静态检查:
npm run check
CI 配置在 .github/workflows/check.yml。
index.js Host 半部:空实现
client.js Client 半部:按钮、侧栏 Tab、webview、主题、登录恢复
cordis.patch.yml bundle patch
icon.svg 插件图标
package.json DSH bundle / client 声明
scripts/check.mjs 清单、bundle id 与语法检查
docs/INSTALL.md 手动安装与卸载
docs/ARCHITECTURE.md 实现与接口说明
发布到 GitHub
仓库内容已经按 GitHub 根目录组织。建议仓库名:dsh-deepseek-web-dock。
不想安装 Git 时,按 从 GitHub 网页创建并上传 操作即可。
git init
git add .
git commit -m "feat: initial release"
git branch -M main
# 先在 GitHub 创建一个空仓库,不要勾选自动生成 README
git remote add origin <YOUR_REPOSITORY_URL>
git push -u origin main
如果本机没有 Git,可以用 GitHub Desktop,或在 GitHub 新建空仓库后用网页的 “uploading an existing file” 上传整个目录;注意 .github/ 和 .gitignore 是隐藏目录/文件,需要让文件选择器显示隐藏项。不要上传 .git、node_modules 或本机 profile。
建议的仓库描述:
DeepSeek Web Dock for DeepSeek Harness: open the free DeepSeek web chat in the native right sidebar, with half/fullscreen, native close animation, theme sync and persistent web sign-in.
建议 topics:
dsh dsh-plugin deepseek deepseek-harness electron sidebar webview
注意不要把本机 .dsh profile、登录 token、node_modules 或包含私人会话的截图提交进仓库。
许可
MIT。图标与“网页登录态保存/恢复”的做法参考了 S-anZZz/dsh-deepseek-web-sync(MIT);本项目为独立实现,不包含其对话抓取/回填功能。
DeepSeek、DeepSeek Harness 及相关商标归各自权利人所有。
No comments yet. Be the first to write one.