DeepSeekBubbleChat:在 DeepSeek Harness 里用气泡做分支对话

前言

在 DeepSeek Harness(DSH)里做长对话时,常见做法是:对某一段回答有疑问就新开一个会话,把上下文复制过去再问;或者直接在主对话里连续追问,回答插在正文中间,回头读原文时阅读线被打断。DSH 的生态思路是「一切皆插件」——能力通过客户端插件扩展,而不是改宿主核心。下面介绍社区插件 DeepSeekBubbleChat(仓库名 BubbleChat,包名 dsh-client-ui-branch-chat):在对话里选中一段文字,就地开气泡分支追问,分支共享同一会话的完整上下文,问答收在独立面板里,主转录保持原样。

这是什么

BubbleChat(分支对话) 是 DeepSeek Harness 的客户端 UI 插件,由 makima-coder 维护,分类属于工作流向的交互增强。当前版本 1.4.1,许可证 MIT,实现为单文件浏览器端模块(lib/client.js),零 npm 运行时依赖,React 由宿主提供。

它把「追问」变成选区上的就地操作:选中任意一段文字(AI 回答或你的提问均可)→ 点浮出的「⑂ 开分支」→ 在可拖动的气泡面板里提问。分支并非新建会话:问题会以带隐藏标记的形式写回同一个会话,模型仍能看到完整上下文;生成完成后,插件把主转录里该分支的轮次在显示层隐藏,并把渲染结果克隆进气泡。

它解决什么问题

  1. 不想重讲上下文:分支复用主对话记忆,不必把前文复制到新会话。
  2. 不想打断主对话阅读线:追问与回答留在气泡里,主转录不被插入式问答打断。
  3. 同一段内容多角度讨论:可在不同选区或同一选区开多个分支,锚点 ⑂N 并存。
  4. 需要回到原文:收起气泡后原文旁保留锚点标签,可重新打开分支或定位高亮。

核心功能

以下能力均来自插件 README 与 package.json 说明,可按需选用。

能力 说明
选区开分支 选中文本后浮出工具条;创建锚点时记录轮次、字符偏移、出现序号及前后各 20 字指纹
锚点标签 关闭气泡后原文旁保留 ⑂N(N 为分支消息数),点击可重新打开
独立气泡面板 可拖动、八向缩放;左栏宽度与输入区高度可拖,双击恢复默认;位置与尺寸自动记忆
共享主对话记忆 分支提问写回同一会话,模型上下文完整
主对话显示层隔离 通过插件独占的 <style id="branch-chat-hide"> 隐藏分支轮次,不改写主转录 DOM 节点属性
完整渲染 克隆主会话中的回答 DOM,保留 Markdown、公式、代码高亮等
精确定位 多路指纹与偏移尝试,最终以 Range.toString() 校验,失败则拒绝跳转
多分支管理 左侧列表切换、删除分支(含该分支对话)
本地持久化 锚点、对话、窗口状态存于 localStorage(键名 dsh-branch-chat/v5)

安装与启用

环境要求:DeepSeek Harness 0.2 预览版(桌面端或 Web);能在「插件」面板管理 profile。peer 依赖 @deepseek-ai/cordis ~4.0.4。插件声明的平台为 Web 客户端(dsh.client.platform = "web")。

插件以当前 DSH 进程及浏览器侧权限运行;安装前建议浏览仓库源码与 MIT 许可证,确认来源为 makima-coder/BubbleChat(目录页:SkillHub - DeepSeekBubbleChat)。社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

图形界面(推荐)

  1. 打开 DeepSeek Harness,左侧进入「插件」;
  2. 点「添加插件」;
  3. 输入仓库地址 https://github.com/makima-coder/BubbleChat,或本地目录的绝对路径;
  4. 安装完成后启用 dsh-client-ui-branch-chat,按提示重启应用;
  5. 对话输入框右下角出现蓝色 ⑂ 悬浮按钮即表示加载成功。

命令行

# 从 Git 仓库安装
dsh plugin add https://github.com/makima-coder/BubbleChat

# 或从本地目录安装
dsh plugin add C:\path\to\BubbleChat

安装后需重启 DeepSeek Harness。当前 DSH 版本不支持插件自动更新,升级时需先卸载再安装新版本。

排查问题时,也可在 ~/.dsh/profiles/desktop/package.json 中通过 link: 依赖与 bundles 手动挂载(详见仓库 README「安装方式 C」)。

典型用法

  1. 在任意对话里选中一段文字,点「⑂ 开分支」;
  2. 在气泡输入框提问:Enter 发送,Shift + Enter 换行;
  3. 回答出现在气泡中,主对话里对应分支轮次被隐藏;
  4. 点气泡右上角 × 收起;原文旁 ⑂N 可随时再开;
  5. 气泡内 ⌂ 重置窗口位置与尺寸;圆形「定位」按钮跳回原文并高亮;
  6. 左侧列表切换分支,× 删除某条分支及其对话。

分支发送时,问题会包装为带标记的消息(示意):

⟦分支·<anchorId>⟧关于「<选中原文>」

<你的问题>

该内容真实占用会话上下文;「主对话看不见」仅为显示层隐藏。长对话中开很多分支仍会累积 token。

工作原理(简述)

  1. 锚点:文本 + 轮次 + 偏移 + 上下文指纹 + 出现次序,定位时严格校验,避免跳错位置。
  2. 回答捕获:轮询会话空闲后,在主转录中按标记找到回答容器,克隆 DOM 并清理过程性节点后注入气泡。
  3. 隐藏轮次:仅维护插件自己的 CSS 选择器隐藏「叶子轮次」,清空样式即可恢复可见。

开发调试时,浏览器控制台应出现 [branch-chat] 已加载;重置本地状态可清空 localStorage 中的 dsh-branch-chat/v5。

适用场景与注意

适合:在长对话里对某段解释、代码块或设计说明做局部深挖;需要多个并行「旁注」又不想维护多个会话副本的 DSH 用户。

限制与风险(README 已知项):

  • 依赖 DSH 客户端 DOM 约定(如 data-chat-turn 等),宿主大版本升级可能需要插件适配。
  • 主要在与 Web 客户端相同的渲染路径上验证;桌面端若共用 Web 客户端则行为一致。
  • 分支问答真实写入会话;捕获失败时会提示「回答已生成,但未能捕获」,该轮可能仍留在主对话可见。
  • 状态仅存本机浏览器 localStorage,不跨设备同步;清空站点数据会丢失锚点与分支。
  • 暂不支持分支导出、分享或重命名。

结尾

DeepSeekBubbleChat 把 DSH 里的追问从「新开会话」或「打断正文」改成选区上的气泡分支:上下文仍在同一会话里,阅读线留在主转录,旁注收在面板与 ⑂N 锚点中。若你在 0.2 预览版上安装第三方插件,可从目录页或 GitHub 获取同一仓库并按上文命令安装启用。

  • 目录页:https://www.skillhub.cn/plugins/makima-coder/DeepSeekBubbleChat
  • GitHub:https://github.com/makima-coder/BubbleChat
羽毛球分组比赛记分
小程序二维码

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

小夜