dsh-chat-dock:在 DSH 右侧栏浮动 DeepSeek Chat,并把最新回复写回会话输入框

前言

在 DeepSeek Harness(DSH)里写智能体会话时,经常需要对照网页版 Chat:查资料、试 prompt、把模型在网页里的回答贴回当前 Composer。常见做法是浏览器和 Harness 来回切换,或自己搭侧边网页,但在 DSH Desktop 上,插件自建 webview 会被主进程拦截,用 iframe 嵌 chat 站点又常被 CSP / X-Frame-Options 挡住,也读不到页面 DOM。

dsh-chat-dock 走另一条路:不重做 Chat UI,也不做反向代理,而是在 DSH 内置的右侧栏 Browser 标签里打开 chat.deepseek.com,再调用侧栏公开的浮动 API;插件只负责全局悬浮控制台,用来镜像最新回复,并支持复制或插入当前会话输入框。下面按「是什么 → 能做什么 → 怎么装 → 怎么用 → 限制」说明。

这是什么

维护者:aiShuiJiaoDeXioShou。仓库:dsh-chat-dock;社区目录:skillhub 插件页。分类为客户端插件;当前版本 0.1.1,许可证 MIT,技术栈 TypeScript。

一句话定位:面向 DeepSeek Harness 的浮动 Web Chat 停靠插件——在可浮动的右侧栏 Browser 标签里打开 DeepSeek Chat,用插件自绘的全局控制台镜像最新回复,并支持复制或插入 Composer。

设计上它是轻量客户端:package.json 与 README 均说明不注册模型工具、不写会话事件、不保存账号凭据、不发起后台网络请求;页面访问由内置 Browser 完成。

核心功能

Chat 标签与一键浮动

在右侧栏 Browser 标签打开配置好的聊天站点(v0.1 默认 DeepSeek)。同一 URL 已打开时会聚焦该标签,不重复开页。打开后可调用 sidebarRight.float 把标签交给 DSH 原生浮动面板;若未生效,可手动把 Chat 标签拖出侧栏。聊天浮窗打开时,仍可使用 Files、Canvas 等侧栏 UI。

全局悬浮控制台

插件通过 shell.overlay 绘制可拖动、可缩放、可收起为胶囊的全局控制台;位置与设置在 localStorage 中持久化。控制台显示当前站点、页面状态;展开后按设定间隔从 guest 页面抓取最新回复并镜像显示。

快捷键 Alt+Shift+C 显示或隐藏控制台。

抓取、复制与插入

抓取优先走各站点适配器的选器;失败时回退到当前选区或页面正文尾部。复制写入剪贴板(带编辑框回退)。插入通过 Composer 的 inputActions 在光标处写入当前会话输入框;输入框不可用时改为复制。

控制台还提供侧栏 UI 快捷入口:打开 Files、Terminal、Browser 标签,或浮动当前标签。

站点与适配器

v0.1 默认只启用 DeepSeek。ChatGPT、Claude 的适配器已在代码中注册,但默认关闭,属于实验能力;README 提示某些账号、地区或风控可能导致内嵌浏览器不可用,页面结构变化也可能让抓取失效。

可在设置中切换默认站点、打开方式、抓取间隔,或在 自定义站点(JSON) 里追加站点。自定义字段包括 id、label、url、可选 hosts、可选 latestReply(在 guest 页面执行的 JS,返回字符串)、可选 enabled。

国际化与主题

文案走 locale;样式依赖 DSH 的 --dsw-alias-* token,与 Harness 主题一致。

安装与启用

环境要求(来自 README 与 package.json):

  • DSH Desktop ≥ 0.2.2-rc.1,且当前 profile 启用右侧栏 Browser。
  • Node.js ≥ 20,npm ≥ 9。

从源码构建并安装本地 bundle 时,README 给出的步骤如下。先将仓库拉到本地并构建(路径请换成你机器上的绝对路径):

cd dsh-chat-dock
npm ci
npm run build

在 DSH 中安装 bundle:

plugin_manager action=install_bundle target=/absolute/path/to/dsh-chat-dock

安装后刷新 Harness 页面,或完全重启应用。也可在 Settings → Plugins 中选择本地目录或 tgz 安装。client/client.js 为构建产物;改源码后执行 npm run build 再刷新页面即可加载新客户端 bundle。

安装前建议浏览仓库源码与 MIT 许可证;插件以当前 DSH 进程权限运行,自定义站点的 latestReply 会在 Chat 页面内执行,只应填写你信任的脚本。

典型用法

  1. 打开一个会话。
  2. 点击会话头部的 Chat 图标,或侧栏底部、Settings 旁的 Chat 浮窗图标。
  3. 首次使用时,在打开的 Browser 标签里登录 chat.deepseek.com。
  4. 在控制台确认站点与页面状态;展开后自动镜像最新回复。
  5. 需要完整交互时点 浮动,或将 Chat 标签拖出右侧栏。
  6. 抓到回复后点 复制 或 插入;插入会写到当前会话输入框光标处。
  7. 在设置中切换默认站点、打开方式、抓取间隔,或添加自定义站点。

会话头部按钮打开默认站点;控制台内站点下拉可在已启用站点间切换。

自定义站点示例(字段含义见 README 表格):

[
  {
    "id": "my-chat",
    "label": "My Chat",
    "url": "https://example.com/chat",
    "hosts": ["example.com"],
    "latestReply": "(() => { const nodes = document.querySelectorAll('.answer'); const last = nodes[nodes.length - 1]; return last ? last.innerText : '' })()"
  }
]

适用场景与注意

适合谁:需要在 DSH 同屏使用网页 Chat、并把最新回答快速带回当前 Composer 的开发者;希望利用内置 Browser 与浮动侧栏,而不是自造 webview 的插件作者也可参考其边界划分(详见仓库 docs/limitations.md、docs/architecture.md)。

已知限制(README 摘要):

  • Browser 分区内登录态不跨应用重启;重启后需重新登录。插件不读取、不保存 cookies 或 token。
  • 依赖内置 Browser:Browser 未启用、右侧栏不可用或无会话时,无法打开 Chat 页。
  • 依赖页面 DOM 结构;DeepSeek 类名变化时可能需改抓取脚本或自定义 latestReply。
  • v0.1 不自动发送 Chat 页面里的消息,只读取页面。
  • 浮窗是 DSH 内部浮动面板与控制台,不是 OS 级独立置顶窗口。
  • 仓库测试覆盖逻辑与 React 静态渲染;真实点击、浮动与登录后抓取需按 docs/verification.md 手动验收。

隐私方面:插件不发起后台网络请求;抓取内容仅在当前页面内存中用于镜像、复制、插入。

结尾

dsh-chat-dock 把 DeepSeek Chat 放进 Harness 认可的 Browser 标签与浮动侧栏,用一块轻量控制台补上「看最新回复 → 复制/插入 Composer」这段链路;v0.1 以 DeepSeek 为主,ChatGPT / Claude 与自定义站点属于扩展路径。进一步了解可访问 社区目录页 与 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜