把网页版 DeepSeek 接进 DSH 桌面端:内嵌面板 + 与 agent 会话双向搬运带走/喂回去
32.3/100
综合分
3
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/4 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add sbbbx/dsh-client-ui-webchat该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 0 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件写入剪贴板(不计风险)
查看扫描证据(共 5 处,展示前 5 条)
- 写入剪贴板client.js:859
await navigator.clipboard.writeText(text); - 写入剪贴板client.js:898
await navigator.clipboard.writeText(report); - 写入剪贴板client.js:999
await navigator.clipboard.writeText(draft || ''); - 读取本地文件smoke.cjs:5
const src = fs.readFileSync(path.join(__dirname, 'client.js'), 'utf8'); - 读取本地文件smoke.cjs:45
const pkg = JSON.parse(fs.readFileSync(path.join(__dirname, 'package.json'), 'utf8'));
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
README
由 DeepSeek 最新模型翻译生成dsh-client-ui-webchat
在 DSH 桌面端里开一个「网页版 DeepSeek」面板:不加一行模型代码,直接用网页端自己的会话,免费、不消耗 API 额度;两个方向都能搬——网页的回答一键带回智能体会话,智能体的回答一键填回网页聊天。
为什么是内嵌浏览器
chat.deepseek.com 回 Content-Security-Policy: frame-ancestors 'none', 在任何宿主里都会被浏览器拒绝。桌面端主窗口开了 webviewTag,并且有两方验证的租约协议(about:blank#<lease> + partition 校验),所以只有作为插件挂在桌面端才成立;浏览器里的 Web GUI 没有这套东西,插件会自动隐身。
安装
dsh plugin add dsh-client-ui-webchat
装 GitHub 上的源码同一条命令:dsh plugin add https://github.com/sbbbx/dsh-client-ui-webchat。装完左侧多一个「网页版」入口。
展开完整文档(README 剩余 1 节)
dsh-client-ui-webchat
在 DSH 桌面端里开一个「网页版 DeepSeek」面板:不加一行模型代码,直接用网页端自己的会话,免费、不消耗 API 额度;两个方向都能搬——网页的回答一键带回智能体会话,智能体的回答一键填回网页聊天。
为什么是内嵌浏览器
chat.deepseek.com 回 Content-Security-Policy: frame-ancestors 'none', 在任何宿主里都会被浏览器拒绝。桌面端主窗口开了 webviewTag,并且有两方验证的租约协议(about:blank#<lease> + partition 校验),所以只有作为插件挂在桌面端才成立;浏览器里的 Web GUI 没有这套东西,插件会自动隐身。
安装
dsh plugin add dsh-client-ui-webchat
装 GitHub 上的源码同一条命令:dsh plugin add https://github.com/sbbbx/dsh-client-ui-webchat。装完左侧多一个「网页版」入口。
用法
| 按钮 | 作用 | 花不花额度 |
| 填进 DSH | 读整段网页对话 → 默认停在最新一轮 → 可编辑预览 → 选工作区与会话 → 作为一条用户消息发出 | 花 |
| 填回网页聊天 | 选当前会话里某一轮回答,再选写回网页的哪个对话,最后填进输入框(不自动发送,你看过再按网页的发送) | 不花 |
| 复制 | 同一份文本写进剪贴板(失败只在工具栏提示,不弹预览) | 不花 |
| 刷新 | 重建内嵌网页:关掉预览后页面变空白、或者页面卡死,都靠它恢复;登录态不丢 | 不花 |
「填进 DSH」的预览里有三个下拉:网页轮次(默认最新一轮,下拉里是整段对话的每一轮)、工作区、会话。换轮次直接从已经读下来的文本切换,不再回头滚动网页,改过的文字也不会跨轮次保留。会话下拉的第一项是「+ 新会话」——选中它会先在该工作区新建一个 Session,再把文本发进去。发送后自动切到目标会话,好让你立刻看到它落进去了。会话标题优先读客户端的会话行(和图里侧边栏同一份数据),拿不到时退回 Host 的 projections,再退 id 前 8 位。
「填回网页聊天」的预览里同样有下拉:DSH 回答(按新旧排,最新在最前,取最近 20 条)、网页对话(从网页侧边栏的链接里读;只有一个对话时不显示这个下拉)。选了别的对话会先在网页里切过去,等 1.6 秒再填,填进去的只是输入框内容。
预览这一步是故意的:DOM 抓出来的文本一定带噪声,直接投喂等于把噪声和 token 一起付钱。
兼容性
| 项 | 值 |
| 实测 DSH | 0.2.1-rc.2(桌面端 shell 同为 0.2.1-rc.2) |
| dsh.engines.dsh | ^0.2.1-rc.2 |
| peerDependencies | @deepseek-ai/dsh@^0.2.1-rc.2、react@^18.2.0 |
版本要求写在 package.json 的 dsh.engines.dsh 里,DSH 安装时会比对;不在范围内会直接拒绝安装,而不是装上去再崩。0.x 阶段按这个规则走:动了私有接口就抬 minor(0.6 → 0.7),只改文案/修小 bug 抬 patch——因为这个插件的每一次“功能”都直接踩在 DSH 的内部实现上,用 patch 号宣布接口没变过是在骗人。
四个依赖的上游内部点,任意一处改了就得跟着改:
1. main keyed 槽位的 slots.register({ name:'main', key }) 与 sidebar.panellist 的 id/order/label。
2. window.dshDesktop.browser 的 acquire / release / onOpenRequested 租约桥(about:blank#<lease> + partition 校验)。
3. remote.session.prompt 与 sessions.retain(..., { source:'gateway' }) 的事件窗口结构(assistant/message 带 turn/step,user/message 带 source.kind)。
4. <webview> 的默认高度问题:元素尺寸变了 guest 不重测,得靠一像素抖动逼它重排。
坏了怎么报
面板右上角有个「诊断」按钮:它把版本、平台、桥阶段(no-bridge / no-lease / navigating / no-load / load-failed)、guest 当前 URL,以及每条选择器链实际命中的是哪一条(hits 里 null 就是上游把它挪走了)复制成一段可粘贴的文本。报 issue 时贴这段,比“抓不到内容”有用得多。
选择器只有一处:client.js 里 guestOp 开头的 SEL 表,按“最精确→最宽松”排列。上游改版时先跑一次「诊断」,看 hits 里哪一项是 null,把对应的选择器换掉即可。
已知边界
- 每次启动 DSH 都要重新登录一次网页端。 桌面端给插件的 partition 是按 workspace 现分配的随机内存会话(dsh-sidebar-browser-*,不带 persist:),app 一退就没了。官方侧栏浏览器同样如此,插件无法绕过。
- 仅桌面端。 依赖 window.dshDesktop.browser(acquire / release / onOpenRequested),这是桌面端的私有桥;浏览器里的 Web GUI 不暴露。
- 依赖上游内部实现。 面板挂在 main 槽位的 webchat key 上,走 slots.register;webview 走租约协议。DSH 升级改了任意一处,插件需要跟着改。
- DOM 抓取是尽力而为。 网页端的 class 名在构建期随机生成,抓取逻辑按「找最后一块 markdown、往上找上一条提问」推断,改版后可能失效——失效时先点「诊断」看哪条链断了,修 SEL 表;实在抓不到会退回手动粘贴。
- 虚拟列表:网页端只把视口附近的轮次留在 DOM 里,所以「填进 DSH」会先把整段对话从顶滚到底读一遍(最多 120 屏,每屏 130ms),每轮连正文一起缓存;预览里换轮次不再滚动。代价是每次打开预览要几秒,且会话特别长时仍可能受上限截断。
- 生成中拦截。 「填进 DSH」「复制」抓取时把回答正文隔 450ms 采样两次,还在变就直接拒绝并提示等它停:塞进半截回答比抓空更糟。刻意不认页面上的「停止生成」按钮,那套类名每次构建都变。
开发
node --check client.js
node smoke.cjs
改完必须把 package.json 的 version 抬一格再重新安装:客户端模块按 rev 发 URL,同版本号会读到旧 bundle。
plugin_manager remove_bundle dsh-client-ui-webchat
plugin_manager install_bundle E:\dsh projects\Github\dsh-client-ui-webchat
安装的 application: applied 即生效,不必重启 app。
文件
- index.js — host 半边,空实现(本插件不注册任何 Host 能力)。
- client.js — 全部逻辑:侧栏入口 + 主面板 + 常驻 webview + 双向搬运。
- cordis.patch.yml — 把 bundle 插进 profile。
MIT.预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
sbbbx/dsh-client-ui-webchat
把网页版 DeepSeek 接进 DSH 桌面端:内嵌面板 + 与 agent 会话双向搬运带走/喂回去
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,350已汉化DSH
71.5
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,506已汉化DSH
71.1
AI 矢量设计工具ZSeven-W/openpencil
全球首个 AI 原生开源矢量设计工具。
★ 7,027已汉化DSH
71.1
这是你的仓库?认领条目