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"
使用
- 任选一个入口打开:会话区顶部的 网页端 标签,或左上角的地球图标
- 第一次在页面里登录 DeepSeek 账号(之后重启 DSH 通常不必再登录)
- 顶部工具条提供 刷新 与 在浏览器打开
那个"使用环境异常"弹窗: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(会话区标签);后两者与前者共用同一个<webview>实例 - 通过
window.dshDesktop.browser.acquire()申请 lease 与内存分区,再创建<webview> - 保活:
<webview>挂在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
No comments yet. Be the first to write one.