YokiMohan/dsh-webview

dsh-webview

在 DSH 桌面端直接打开 chat.deepseek.com:会话视图标签、左上角面板、主区域面板三处入口共享同一已登录页面,切走不卸载、重启保持登录;仅放行 deepseek.com,零注入、不代发请求。仅桌面端。English README: README.en.md

待分类deepseekdeepseek-harnessdeepseek-harness-plugin

简体中文 · English

dsh-webview · 网页端

在 DSH 桌面端里直接打开 chat.deepseek.com:不用切浏览器,不用重新登录。

🤖 本插件完全由 AI 制作:代码、文档、图标均由 DSH 内的 AI agent 生成,未经人工逐行编写。

三个入口,一个页面

入口 · 位置 · 适合 会话视图标签 · 会话区顶部「对话|轨迹|上下文」旁的 网页端 · 边聊边查,跟着当前会话走 左上角面板列 · 「插件」「自动化任务」旁的地球图标 · 全屏使用,随时进出 主区域面板 · 上面两个入口点开后的全屏面板 · 沉浸式,左侧栏仍可操作

三个入口共享同一个页面实例:在标签里滚到某处,切到面板再切回来,页面还在原处;登录状态、正在输入的内容都不会丢。

为什么选它

同类插件大多只提供一个全局面板。dsh-webview 的差异点:

维度 · dsh-webview · 常见内嵌方案 会话视图标签入口 · ✅ 有(同类中未见) · ❌ 只有全局按钮 多入口共享同一页面 · ✅ 三个入口一个实例,切走不卸载 · ⚠️ 少见 宿主半侧代码 · ✅ 零(lib/index.js 是空插件,只为让加载器看见) · ⚠️ 通常需要,用来搬运 HttpOnly cookie 页面权限 · ✅ 最小:不读文件、不碰凭证、不发请求 · ⚠️ 视实现而定 导航范围 · ✅ 白名单 deepseek.com,越界交系统浏览器 · ⚠️ 多为不限制 体积 / 依赖 · ✅ 单文件约 22KB,零运行时依赖,无构建步骤 · ⚠️ 常见数百 KB 起

不代你发请求:不注入页面脚本、不轮询接口、不预加载、不代理任何请求。插件做的事只有一件——把网页端放进一个受控的内嵌浏览器里。

截图

安装

桌面端自带包管理器,不需要自己装 Node.js:

dsh plugin --profile desktop add dsh-webview

装完重启 DSH:左上角面板列出现地球图标,会话区标签栏多一个「网页端」。

离线安装(把 dsh-webview-0.3.0.tgz 放在本地):

dsh plugin --profile desktop add "C:\path\to\dsh-webview-0.3.0.tgz"

使用

  1. 任选一个入口打开:会话区顶部的 网页端 标签,或左上角的地球图标
  2. 第一次在页面里登录 DeepSeek 账号(之后重启 DSH 通常不必再登录)
  3. 顶部工具条提供 刷新 与 在浏览器打开

那个"使用环境异常"弹窗:DSH 桌面端是 Electron 容器,DeepSeek 的风控会识别出"这不是常规浏览器"。本插件只剥离 UA 里的 Electron/ 标记,其余 Chromium 指纹原样保留——不冒充别的浏览器、不伪造版本号。绝大多数情况下不再出现;若偶尔出现,直接关掉即可,不影响登录和对话。

登录是怎么保住的

宿主给内嵌页面的是内存分区(随机名、无 persist: 前缀,关掉进程就清空),所以插件自己保存会话快照:

  • 页面加载完成、切换面板、关闭窗口时,读出页面的 localStorage 与脚本可读的 cookie,存进 DSH 外壳的 localStorage
  • 下次启动时,在页面自身脚本初始化之前把快照写回去,有变化只重载一次;期间盖一层遮罩,看不到登录页闪烁

快照与浏览器"记住登录"是同一性质,只存在你这台机器上,不上传、不联网。HttpOnly cookie 页面读不到,所以极少数情况下仍需重新登录一次。

已知限制

  • 仅桌面端:网页版 DSH 没有 Electron 宿主,面板会提示"当前环境不支持内嵌浏览器"
  • 页面权限受限:摄像头、麦克风、剪贴板读取、下载默认不可用(宿主安全策略)
  • 标签栏依赖会话:没有任何打开的会话时,会话视图标签栏不渲染,此时用左上角图标进入
  • 面板位置固定:按钮在左侧面板列末尾

兼容性

DSH 版本 · 状态 0.2.1-rc.1 及以上(desktop) · 已验证可用 网页版 DSH · 不支持(显示降级提示)

插件只依赖公开的客户端插槽(sidebar.panellist / main / conversation.view)与宿主 dshDesktop.browser 桥。同一 0.2.x 小版本更新一般无需改动;跨大版本可能需小幅适配。

实现要点

  • 注册三个插槽:sidebar.panellist(左上角按钮)、main(主区域面板)、conversation.view(会话区标签);后两者与前者共用同一个 `` 实例
  • 通过 window.dshDesktop.browser.acquire() 申请 lease 与内存分区,再创建 ``
  • 保活:` 挂在 document.body 上的单例容器里,面板切换只改 display`,DOM 永不离场,页面因此不重载
  • 导航白名单 deepseek.com;越界链接交给系统浏览器(2 秒内同一 URL 去重,避免重复弹窗)
  • UA:webview.setUserAgent() 只去掉 Electron/x.y.z,保留其余 Chromium 标记

卸载

dsh plugin --profile desktop remove dsh-webview

开发

lib/index.js     宿主半侧(空插件,让加载器条目可见)
lib/client.js    浏览器半侧(插槽 + webview),经 window.__ModuleLoader__ 加载
cordis.patch.yml bundle 补丁,插入 id 为 `webview` 的条目

许可证

MIT © 2026 dsh-webview contributors