前言¶
在 DSH 里跑 agent 时,模型回答往往走 API 或本地引擎,按 token 计费。若你已经在 chat.deepseek.com 上习惯网页端的免费对话,又想把网页里某轮回答接进工作区会话、或把 agent 的输出填回网页继续聊,通常只能复制粘贴,且网页站点禁止被任意页面用 <iframe> 嵌入。
下面介绍社区插件 dsh-client-ui-webchat(维护者 sbbbx):在 DSH 桌面端主界面开一个原生面板,内嵌官方网页聊天;通过工具栏在「网页轮次」与「agent 会话」之间做可预览、可编辑的双向搬运,无需为面板单独接模型代码。
这是什么¶
dsh-client-ui-webchat 是 DSH 生态下的客户端 UI 插件(npm 包名 dsh-client-ui-webchat,当前版本 0.6.1,MIT 许可证)。Host 侧 index.js 为空实现;全部逻辑在 client.js:侧栏入口、主面板、常驻 webview,以及「带走 / 喂回去 / 复制 / 刷新」等能力。
它解决的核心问题是:在不能 iframe 嵌套的前提下,仍能在桌面端合法内嵌 chat.deepseek.com,并把网页与 DSH agent 会话之间的内容搬过去、搬回来。
为什么是内嵌浏览器,而不是 iframe¶
chat.deepseek.com 的响应头包含 Content-Security-Policy: frame-ancestors 'none',普通 <iframe> 在任意宿主里都会被浏览器拒绝。
DSH 桌面端主窗口启用了 webviewTag,并通过租约协议(about:blank#<lease> 与 partition 校验)管理内嵌浏览上下文。插件挂在这套桌面上才成立;浏览器里的 Web GUI 没有 window.dshDesktop.browser,插件会自动不显示。因此本插件仅适用于 DSH 桌面端。
核心功能¶
安装完成后,左侧会出现「网页版」入口,面板内加载网页端 DeepSeek,使用网页自己的会话,不额外写模型代码,也不消耗 DSH 侧的 API 额度(面板内对话本身走网页端;「带走」把内容发进 agent 会话时会按 agent 正常计费)。
工具栏四个操作(README 原文对照):
| 按钮 | 作用 | 是否消耗 agent 额度 |
|---|---|---|
| 带走 | 选中网页某轮回答 → 可编辑预览 → 选工作区与会话 → 作为用户消息发出 | 是 |
| 喂回去 | 选当前会话某轮回答 → 选写回网页的对话 → 填入输入框(不自动发送) | 否 |
| 复制 | 同一份文本写入剪贴板 | 否 |
| 刷新 | 重建内嵌网页;登录态不丢 | 否 |
带走:预览中有「网页轮次」「工作区」「会话」三个下拉;默认最后一轮。换轮次会重新抓取该轮正文及上方提问,编辑内容不跨轮次保留。会话第一项为「+ 新会话」,选中后会在该工作区新建 Session 再发送;发送后自动切换到目标会话。
喂回去:预览中有「DSH 回答」(最近 20 条,最新在前)与「网页对话」(从网页侧栏链接读取;仅一个对话时不显示后者)。切换网页对话会先导航,等待约 1.6 秒再填入输入框。
预览步骤是刻意设计:DOM 抓取的文本可能带噪声,直接投喂会把噪声和 token 一起计入 agent 费用。
安装与启用¶
在 DSH 环境中执行(命令来自项目 README):
dsh plugin add dsh-client-ui-webchat
从 GitHub 源码安装使用同一条形式的 URL 命令:
dsh plugin add https://github.com/sbbbx/dsh-client-ui-webchat
装完后左侧出现「网页版」入口即可使用。
版本约束:package.json 中 dsh.engines.dsh 为 ^0.2.1-rc.2;README 记载实测 DSH 与桌面端 shell 均为 0.2.1-rc.2。不在范围内时安装会被拒绝,而不是装完再崩溃。peerDependencies 包含 @deepseek-ai/dsh@^0.2.1-rc.2 与 react@^18.2.0。
插件以当前 DSH 进程权限运行;安装前建议阅读 GitHub 仓库 源码与 MIT 许可证。
典型用法¶
- 在桌面端打开插件面板,在网页端完成登录(见下文「每次启动需重新登录」)。
- 在网页里完成一轮对话后,点 带走:在预览里确认轮次与文本,选工作区与会话(或「+ 新会话」),发送进 agent。
- 在 agent 会话里得到回答后,点 喂回去:选 DSH 回答与目标网页对话,确认填入输入框的内容,再在网页里自行点发送。
- 页面空白、卡死或预览异常时,用 刷新 重建内嵌页;需要纯文本时用 复制。
若网页使用虚拟列表,只有已渲染在 DOM 里的轮次会出现在「带走」下拉中;更早轮次需先在网页里向上滚动再操作。「带走」「复制」在回答仍在生成时会拒绝操作(450ms 内两次采样正文仍在变化),需等生成结束。
适用场景与注意¶
适合:主要在 DSH 桌面端工作、希望复用网页版免费对话,又要把网页与 agent 工作区会话衔接的开发者。
边界与依赖(README「已知边界」):
- 每次启动 DSH 需重新登录网页端:partition 为按 workspace 分配的随机内存会话(
dsh-sidebar-browser-*,无persist:),退出应用即失效;与官方侧栏浏览器行为一致,插件无法绕过。 - 依赖 DSH 内部接口:
main槽位slots.register、window.dshDesktop.browser租约桥、remote.session.prompt与 session 事件结构、webview 尺寸重排等;上游变更后插件需跟进。维护者约定0.x阶段动私有接口抬 minor,仅文案或小修抬 patch。 - DOM 抓取为尽力而为;网页 class 名可能随构建变化,失败时可手动粘贴。
- 不识别网页「停止生成」按钮(类名随构建变化);生成中禁止「带走」「复制」。
DSH 社区插件目录由独立站点维护,与 DeepSeek / 幻方无官方从属关系;本文介绍的是社区贡献的客户端插件,非官方应用商店条目。