dsh-deepseek-web-panel
在 DeepSeek Harness 桌面端的侧边栏里一键打开 DeepSeek 网页版:常驻加速、秒开、重启后自动恢复登录。
An unofficial DeepSeek Harness desktop plugin that embedschat.deepseek.comas a fast, session-persistent panel.
这是什么
DeepSeek Harness 是一个 agent 工作台:建会话、开 workspace、让模型动手干活是它的主场。但很多时候你只是想用网页版随口感两句——用网页账号的免费额度、用网页端的功能,而不是消耗 API、也不是为一句闲聊新建一个项目会话。
这个插件就是为这个场景做的:在 Harness 左侧面板列表的「新会话」正下方加一个 「网页版」 按钮,点它,中间内容区直接变成 DeepSeek 网页版(https://chat.deepseek.com/)。
它不是套壳、不跳转外部浏览器、不弹新窗口,也不会新建会话。网页就活在你平时看对话的那块区域里。
具体作用
- 一键直达网页版:不用切浏览器、不用扫码登录网页、不用在 Harness 里强制建项目会话。
- 秒开:网页层在应用启动后于后台预热一次,之后切走再切回不重载页面——登录状态、聊天历史、滚动位置、甚至输入框里没发出去的字都不会丢,和浏览器切标签页一个体感。
- 登录状态自愈:桌面壳的内嵌网页用的是进程内存储,重启就清空。插件会自动把网页版的登录状态快照到本机,下次启动后台写回。正常使用下,重启 Harness 后点开「网页版」仍然是登录状态。
- 少踩「使用环境异常」:首次加载前会去掉 webview 的
Electron/...UA 标记,避免 DeepSeek 网页端把桌面容器误判成异常环境。 - 跟着 Harness 长在一起:左侧栏入口、面板切换、侧栏折叠动画、深浅色主题都跟随宿主;网页层权限仍由 Harness 主进程按自带浏览器的安全策略管控(不放行下载、系统弹窗、权限申请)。
界面
┌─ 侧边栏 ──────────────┬─ 内容区 ──────────────────────────────┐
│ [+ 新会话] │ ☁ DeepSeek 网页版 [刷新] │
│ ◉ 网页版 ← 本插件 │ ┌───────────────────────────────────┐ │
│ ✦ 插件 │ │ │ │
│ ⏱ 自动化任务 │ │ chat.deepseek.com │ │
│ ⋯ 更多 │ │ (真正的网页版界面) │ │
│ │ │ │ │
│ 工作区 │ └───────────────────────────────────┘ │
│ ▸ 默认工作区 │ │
└───────────────────────┴───────────────────────────────────────┘
安装
前置条件:DeepSeek Harness 桌面客户端(Windows 版已在 0.2.1-rc.5 上测试;macOS 使用同一套 Electron 网页层,理论可用但未实测)。普通浏览器里打开的 Web GUI 不支持内嵌网页,会显示说明卡片。
本插件没有发布到 npm(
private: true),从 GitHub 或本地安装即可。
方式一:从 GitHub 安装(推荐)
在 Harness 里让 agent 或用插件管理器安装:
plugin_manager action: install_bundle
target: github:Strenweiler/dsh-deepseek-web-panel
或者用 dsh CLI:
dsh plugin --profile desktop add github:Strenweiler/dsh-deepseek-web-panel
装好后重启一次 Harness(或刷新窗口),左侧栏就会出现「网页版」。
方式二:本地目录安装(开发用)
git clone https://github.com/Strenweiler/dsh-deepseek-web-panel.git
plugin_manager action: install_bundle
target: <本地克隆目录的绝对路径>
本地目录安装是软链方式,改完源码由 DSH 的客户端 HMR 自动热更新,适合折腾。
卸载
plugin_manager action: remove_bundle
target: dsh-deepseek-web-panel
或 dsh plugin --profile desktop remove dsh-deepseek-web-panel。
使用
- 点左侧「网页版」。
- 第一次按官方页面登录 DeepSeek 网页账号(扫码 / 手机号均可)。
- 随便聊;点「新会话」切回 Harness,再点「网页版」切回来,页面不会重载。
- 面板顶部工具栏有「刷新」,用于手动重载网页。
- 登录快照在你离开面板时以及每 10 秒自动更新;重启 Harness 后会自动恢复。
工作原理
一个常驻网页,而不是每次重建
<webview> 一旦离开 DOM 就会被销毁,所以如果网页归主面板页面所有,每次切换面板都得重新加载。插件改为把网页放在一个常驻容器里:
sidebar.panellist:左侧「网页版」按钮(order: -10,正好在「新会话」下面)。main(keydeepseek-web):主内容区的面板页,只有细工具栏和一个占位区域。shell.overlay(iddeepseek-web.guest):真正承载<webview>的常驻层。它和应用页面同生共死,面板切换时只改位置和可见性。
面板页量出自己的占位区域后,把 overlay 里的网页容器 position: fixed 到同一坐标;切走时把容器移出屏幕外。网页进程一直活着,所以再打开是瞬开。
网页层从哪来
不是 iframe:chat.deepseek.com 会返回 Content-Security-Policy: frame-ancestors 'none',iframe 必被拒绝。插件通过桌面壳预载的 window.dshDesktop.browser(protocolVersion === 1)申请一个受控 webview 租约,和 Harness 自带右侧栏「浏览器」走同一条主进程通道。分区、权限、弹窗、下载策略全部由 DSH 主进程掌握。
登录状态怎么恢复
桌面壳给内嵌页面的是内存分区(随机名、无 persist: 前缀),进程结束就清空。插件做的是「浏览器式记住登录」:
- 页面加载完成、每 10 秒、以及离开面板时,读出网页的
localStorage(DeepSeek 网页版把账号 token 存在这里),存进 DSH 应用页面自己的持久localStorage(键dsh-deepseek-web-panel.session.v2)。 - 下次启动时后台预热会先把快照写回网页层的
localStorage,有变化就重载一次,整个过程在遮罩后完成,看不到登录页闪。 HttpOnlycookie 读不到,所以极少数只认 cookie 的流程可能仍需重新登录一次。
隐私与数据
- 登录快照只保存在本机,不上传、不联网、不经过任何第三方服务器。
- 插件不读取 Harness 的会话内容,也不申请任何工具权限;它只是一个显示网页的 UI 面板。
- 网页本身仍是 DeepSeek 官方页面,账号、额度、内容规则以官方为准。
- 这是非官方第三方插件,与 DeepSeek 官方无关;请自行评估使用风险。
兼容性
| DSH 版本 | 状态 |
|---|---|
桌面客户端 0.2.1-rc.5(Windows) |
✅ 已测试 |
| 桌面客户端其他 0.2.x | ⚠️ 理论可用,取决于 dshDesktop.browser 桥是否保持 protocolVersion === 1 |
| Web GUI(浏览器打开) | ❌ 不支持内嵌(会显示说明卡片) |
如果 DSH 大版本改掉了桌面网页层接口,插件会优雅降级成一张失败提示卡,而不是把界面弄崩。遇到这种情况欢迎提 issue。
已知限制
- 常驻后台:应用启动后会在屏幕外加载一次网页版,占用一个 Chromium 访客进程和少量内存;即使不使用也不会关闭。
- 登录快照有边界:
HttpOnlycookie 无法保存;若官方某条流程只认 cookie,可能仍需重新登录。 - 浏览器能力受限:摄像头、麦克风、剪贴板读取、下载、系统文件选择、原生弹窗等按宿主安全策略不可用。
- 布局跟随:网页位置由主面板占位区域测量得到;若 DSH 大版本改了主区域布局,可能需要小改适配。
- 仅桌面端:Web GUI 没有 Electron 网页层。
项目结构
| 文件 | 作用 |
|---|---|
package.json |
Bundle 清单:dsh.bundle.patch 插入插件行,dsh.client 声明浏览器半体 |
cordis.patch.yml |
插入 deepseek-web-panel 插件行 |
index.js |
Host 半体(本插件不需要 Host 逻辑,只提供插件行) |
client.js |
浏览器半体:侧栏入口、面板页、常驻 webview、登录快照、UA 处理 |
locale/en.json locale/zh.json |
插件管理页里的标题与描述 |
icon.svg |
插件图标 |
没有构建步骤:client.js 是手写的 plain JS,通过 window.__ModuleLoader__.load 注册工厂,DSH 的客户端模块系统直接加载。正因如此,本地软链安装时改完代码通常会被 HMR 热更新。
License
MIT © 2026 Strenweiler
No comments yet. Be the first to write one.