前言¶
在 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 页面内执行,只应填写你信任的脚本。
典型用法¶
- 打开一个会话。
- 点击会话头部的 Chat 图标,或侧栏底部、Settings 旁的 Chat 浮窗图标。
- 首次使用时,在打开的 Browser 标签里登录
chat.deepseek.com。 - 在控制台确认站点与页面状态;展开后自动镜像最新回复。
- 需要完整交互时点 浮动,或将 Chat 标签拖出右侧栏。
- 抓到回复后点 复制 或 插入;插入会写到当前会话输入框光标处。
- 在设置中切换默认站点、打开方式、抓取间隔,或添加自定义站点。
会话头部按钮打开默认站点;控制台内站点下拉可在已启用站点间切换。
自定义站点示例(字段含义见 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 仓库。