🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

气泡分支对话 makima-coder/DeepSeekBubbleChat

DeepSeek 客户端
makima-coder14 天前有提交已提供中文文档扫描:未发现敏感能力兼容 / 相关生态

选中对话文字就地开气泡追问,不打断主线

30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/20 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/makima-coder/DeepSeekBubbleChat.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 14 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

deepseekharness自制插件,分支对话:选中对话中的文本创建锚点标签,在独立面板中围绕该文本提问。支持deepseek harness

README

由 DeepSeek 最新模型翻译生成
⑂ BubbleChat 分支对话 · Branch Chat for DeepSeek Harness 在对话里选中一段文字,就地开一个气泡分支追问;分支共享主对话的全部上下文,但问答只出现在气泡里,主对话保持原样。 _选中对话里的任意一段文字,开一个气泡分支追问。分支共享主对话的完整上下文,问答只留在气泡里,主对话原样不动。_ 中文 · English 截图 / Screenshots 完整交互(约 11 秒):选中一段文字 → 开分支 → 在气泡里提问 → 回答生成 → 收起后留下 ⑂N 锚点。 完整交互(约 11 秒):选中文字 → 开分支 → 在气泡里提问 → 回答到达 → 收起后留下 ⑂N 锚点。 ① 选中文字:选中对话中任意一段文字,浮出「⑂ 开分支」。选中文字 —— 浮出「⑂ 开分支」按钮。 ② 分支气泡:引用原文 + 独立问答区;可拖动、八向缩放、左右/上下分栏。气泡面板 —— 引用锚点加独立问答区;可拖动、可缩放。 ③ 就地追问:回答保留完整 Markdown / 公式 / 代码块渲染,主对话中这两轮被隐藏。就地追问 —— 回答保留完整 Markdown、公式和代码渲染;这两轮在主对话里隐藏。 ④ 锚点标签:收起气泡后,原文旁留下 ⑂N 标签,点击即可回到分支。锚点标签 —— 行内 ⑂N 标记引用段落;点击即可重新打开分支。
展开完整文档(README 剩余 1 节)
⑂ BubbleChat

分支对话 · Branch Chat for DeepSeek Harness

在对话里选中一段文字,就地开一个气泡分支追问;分支共享主对话的全部上下文,但问答只出现在气泡里,主对话保持原样。

_选中对话里的任意一段文字,开一个气泡分支追问。分支共享主对话的完整上下文,问答只留在气泡里,主对话原样不动。_

中文 · English

截图 / Screenshots

完整交互(约 11 秒):选中一段文字 → 开分支 → 在气泡里提问 → 回答生成 → 收起后留下 ⑂N 锚点。
完整交互(约 11 秒):选中文字 → 开分支 → 在气泡里提问 → 回答到达 → 收起后留下 ⑂N 锚点。

① 选中文字:选中对话中任意一段文字,浮出「⑂ 开分支」。选中文字 —— 浮出「⑂ 开分支」按钮。

② 分支气泡:引用原文 + 独立问答区;可拖动、八向缩放、左右/上下分栏。气泡面板 —— 引用锚点加独立问答区;可拖动、可缩放。

③ 就地追问:回答保留完整 Markdown / 公式 / 代码块渲染,主对话中这两轮被隐藏。就地追问 —— 回答保留完整 Markdown、公式和代码渲染;这两轮在主对话里隐藏。

④ 锚点标签:收起气泡后,原文旁留下 ⑂N 标签,点击即可回到分支。锚点标签 —— 行内 ⑂N 标记引用段落;点击即可重新打开分支。

⑤ 精确定位:一键跳回原文并高亮;由文本指纹严格校验,校验不过就拒绝跳转。定位 —— 跳回原文并高亮,由文本指纹校验。

⑥ 多个分支:同一段回答可以从多个角度分别开分支,锚点互不干扰。Multiple branches — several anchors can coexist on the same conversation.

这是什么

BubbleChat(分支对话)是 DeepSeek Harness 的客户端插件。它把「追问」变成一次就地操作:

1. 在对话里选中任意一段文字(AI 回答或你的提问都可以);
2. 点浮出的「⑂ 开分支」;
3. 右侧弹出气泡面板,围绕这段文字提问;
4. 回答出现在气泡里,主对话的阅读线不被打断。

分支不是新建会话:问题会以「引用 + 你的问题」的形式回到同一个会话,所以模型拥有完整的上下文,回答能准确接上文;生成完成后,插件把回答的渲染结果复制进气泡,并把主转录里这次分支的轮次隐藏起来。

它解决什么问题

- 不想开新会话重讲一遍上下文:分支复用主对话的全部记忆,不需要把前文复制过去。
- 不想打断阅读线:直接在主对话里追问,回答会插在正文中间,之后回看原文很痛苦。分支把问答收到气泡里。
- 一段内容想从多个角度讨论:「为什么这样设计」「有没有反例」「换成 PyTorch 怎么写」可以分别挂在同一段文字上,互不干扰。
- 想随时回到原文:锚点标签留在原文旁边,一键定位,不靠翻聊天记录找。

功能一览

| 功能 | 说明 |
| 选区开分支 | 选中文本后浮出工具条,一键创建锚点(记录轮次、字符偏移、出现序号、前后各 20 字指纹) |
| 锚点标签 | 关闭气泡后,原文旁保留 ⑂N 标签(N 为分支消息数),点击即打开对应分支 |
| 独立气泡面板 | 可拖动、八向缩放、左侧锚点列表宽度可拖、输入区高度可拖(双击各自恢复默认),位置尺寸自动记忆 |
| 共享主对话记忆 | 分支提问以隐藏标记回到同一会话,模型看到完整上下文,回答自然承接前文 |
| 主对话零污染 | 插件只维护自己独占的 来隐藏分支轮次,不修改主转录任何节点属性;清空即立刻恢复 |
| 完整渲染还原 | 不是把回答当纯文本塞进气泡,而是克隆主会话里那份渲染结果,Markdown、公式、代码高亮、表格都保留 |
| 精确定位回原文 | 轮次 + 偏移 + 上下文指纹 + 第 N 次出现多路尝试,最终用 Range.toString() 严格比对,对不上就拒绝跳转而不是「大致跳过去」 |
| 多分支管理 | 左侧列表显示每条分支的引用摘要与消息数,可切换、可删除(删除会连带该分支对话) |
| 本地持久化 | 锚点、对话、窗口位置与尺寸、隐藏状态都写在 localStorage(dsh-branch-chat/v5),刷新或重启后仍在 |
| 零依赖、无构建 | 只有一个客户端文件,React 由宿主提供;没有构建步骤,不需要打包工具 |

快速开始

环境要求

- DeepSeek Harness 0.2 预览版(桌面端或 Web 客户端)
- 能安装第三方插件(「插件」面板可管理 profile 时即可)

安装方式 A:图形界面(推荐)

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

安装方式 B:命令行

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

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

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

安装方式 C:手动写入 profile(排查问题时可参考)

编辑 ~/.dsh/profiles/desktop/package.json:

{
"dependencies": {
"dsh-client-ui-branch-chat": "link:C:/path/to/BubbleChat"
},
"dsh": {
"profile": {
"bundles": [
"dsh-client-ui-branch-chat"
]
}
}
}

lib/index.js 只是宿主侧的空插件,真正的界面在 lib/client.js,由 package.json 里的 dsh.client 声明自动注入浏览器侧。

使用

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

工作原理

1)锚点 = 文本 + 位置指纹

创建锚点时不只记录文字本身,还记录:所在轮次(data-chat-turn)、该轮文本总长、选区起始字符偏移、这段文字在该轮中第几次出现、以及前后各 20 字的上下文指纹。恢复位置时按「前后指纹 → 前指纹 → 后指纹 → 偏移 → 第 N 次出现 → 首次出现」依次尝试,最后用 Range.toString() 严格校验还原出来的文本是否就是原文;不一致就返回失败,宁可不跳也不跳错。

2)分支消息

发送时把问题包装成带隐藏标记的消息回到同一会话:

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

<你的问题> anchorId 让插件之后能认出「哪一轮是我这条分支」。注意:这一步是真实写入会话上下文的,所以分支回答拥有完整记忆;「主对话里看不到」只是显示层的隐藏。

3)回答捕获

插件轮询会话运行状态,等本轮生成结束后,在主转录里按标记找到该分支对应的回答容器,克隆其 DOM,移除过程性噪声(data-step-process、代码块按钮等),再注入气泡。因此气泡里的回答与主对话中渲染完全一致。

4)隐藏主对话里的分支轮次

插件只创建并维护一个自己独占的 ,内容是:

[data-chat-turn="N"]:not(:has([data-chat-turn])) { display: none !important; }

只隐藏「叶子轮次」,避免误伤包含多轮的祖先容器;用户提问轮次还要确认确实包含本条分支的标记才会被隐藏。清空这条样式即可立刻恢复,主转录的 DOM 从未被改写。

5)窗口与状态

面板位置/尺寸、输入区高度、左栏宽度、悬浮按钮位置、锚点与全部对话都持久化在 localStorage;刷新页面或重启应用后原样恢复。

项目结构

BubbleChat/
├── lib/
│ ├── index.js # 宿主侧入口(空实现,仅为加载占位) │ └── client.js # 全部 UI 与逻辑(浏览器侧,单文件) ├── cordis.patch.yml # bundle patch:单独安装时插入本插件 ├── package.json # DSH 插件清单(dsh.bundle / dsh.client) ├── docs/images/ # README 截图 ├── LICENSE └── README.md

已知限制

- 依赖 DSH 客户端的 DOM 约定(data-chat-turn、data-turn-process-answer、data-chat-group-part 等)。DeepSeek Harness 大版本升级可能改动这些标记,届时需要适配。
- 只测过 Web 客户端(dsh.client.platform = "web",桌面端渲染的也是 Web 客户端)。
- 分支问答真实占用会话上下文:隐藏是显示层的,长对话里开很多分支仍会累积 token。
- 回答捕获依赖主会话空闲:插件会等主会话本轮结束再抓取;若抓取失败会提示「回答已生成,但未能捕获(可点『定位』)」,此时该轮分支内容会留在主对话中可见。
- 状态存在浏览器本地:localStorage 按浏览器/设备存储,不跨设备同步;清空站点数据会丢失锚点与分支对话。
- 暂不支持分支导出、分享或重命名。

开发与调试

- 没有构建步骤:lib/client.js 是被宿主直接加载的浏览器端模块,改完重启应用即可生效。
- 启动日志:浏览器控制台会打印 [branch-chat] 已加载。
- 本地状态:localStorage 的 dsh-branch-chat/v5,调试时可手动清空以重置全部锚点。
- 改动建议集中在一个文件里,保持「不修改主转录 DOM」的约束;隐藏一律通过插件独占的 。
- 提交前的手动测试清单:选区开分支 → 提问 → 回答渲染 → 收起后锚点标签 → 点击定位 → 刷新页面后状态恢复 → 删除分支。

兼容性

| 项目 | 版本 |
| DeepSeek Harness | 0.2 预览版 |
| @deepseek-ai/cordis(peer) | ~4.0.4 |
| 平台 | Web 客户端(桌面端 / 浏览器) |
| 运行时依赖 | 无(React 由宿主提供) |

贡献

欢迎 Issue 与 PR。由于插件依赖 DSH 的客户端 DOM 约定,提交前请说明你测试所用的 DSH 版本与场景;改动尽量小而聚焦,方便 review。

License

MIT © 2026 makima-coder

它是什么

BubbleChat 是 DeepSeek Harness 的客户端插件,把追问变成就地操作:

1. 在对话里选中任意一段文字 —— 智能体的回答或你自己的消息都行;
2. 点击悬浮的 「⑂ 开分支」 按钮;
3. 右侧弹出气泡面板,锚定到这段文字;
4. 追问的问答都留在气泡里,主转录保持原样。

分支不是新会话。问题会作为带引号、带标记的消息发回同一个会话,所以模型保留完整上下文。回答生成结束后,插件把渲染结果克隆进气泡,并在主转录里隐藏分支轮次。

为什么

- 不用重讲上下文 —— 分支复用主对话的记忆,什么都不用再贴一遍。
- 不打断阅读流 —— 直接在主线程里提问,回答会插在转录中间。分支把问答挪出阅读线。
- 同一段文字,多个角度 ——「为什么这样设计?」「有没有反例?」「换成 PyTorch 会是什么样?」,每个问题都能独立挂到同一段引用上。
- 随时找回原文 —— 引用文字旁边始终留着锚点徽标,点一下就能定位。

功能

| 功能 | 说明 |
| 从选区开分支 | 选中文字,点浮动按钮;锚点会记下轮次、字符偏移、出现序号和 20 字符上下文指纹 |
| 锚点徽标 | 关掉气泡后,段落旁会留一个行内 ⑂N 徽标(N 为该分支的消息数),点击即可重新打开 |
| 浮动气泡 | 可拖动,八方向缩放,锚点列表宽度和输入框高度也能调(双击各自复位),几何信息会持久保存 |
| 共享主会话记忆 | 提示词带着标记回到同一个会话,模型因此保留完整上下文,回答连贯 |
| 不污染主对话记录 | 插件只维护自己的 元素来隐藏分支轮次;不改对话记录的任何节点属性,一切都能瞬间还原 |
| 忠实渲染 | 回答从主对话记录已渲染的 DOM 克隆而来,Markdown、数学公式、语法高亮和表格都原样保留 |
| 精确定位 | 轮次 + 偏移 + 上下文指纹 + 第 N 次出现,再用严格的 Range.toString() 校验 —— 对不上就拒绝跳转,绝不猜 |
| 多分支管理 | 左侧列表显示引用摘要和消息数;可在分支间切换,也可连同整个线程一起删除 |
| 本地持久化 | 锚点、线程、窗口几何和隐藏状态都存在 localStorage(dsh-branch-chat/v5)里,刷新后仍在 |
| 零依赖,免构建 | 只有一个客户端文件;React 由宿主提供。不需要打包器,也没有构建步骤 |

快速开始

环境要求

- DeepSeek Harness 0.2 preview(桌面应用或 Web 客户端)
- 能安装第三方插件(可安装 / 受管理的配置档)

安装方式 A —— 在应用内安装(推荐)

1. 打开 DeepSeek Harness → 侧边栏的 Plugins;
2. 点 Add plugin;
3. 填入本仓库的 URL https://github.com/makima-coder/BubbleChat,或本地克隆的绝对路径;
4. 安装完成后启用 dsh-client-ui-branch-chat,重启应用;
5. 输入框处于激活状态时,右下角会出现蓝色 ⑂ 浮动按钮。

安装方式 B —— 命令行

dsh plugin add https://github.com/makima-coder/BubbleChat # from Git
dsh plugin add C:\path\to\BubbleChat # from a local folder

之后重启 DeepSeek Harness。当前 DSH 版本不会自动更新插件 —— 升级要先卸载再重装。

安装方式 C —— 配置档清单(调试时有用)

编辑 ~/.dsh/profiles/desktop/package.json:

{
"dependencies": {
"dsh-client-ui-branch-chat": "link:C:/path/to/BubbleChat"
},json
"dsh": {
"profile": {
"bundles": [
"dsh-client-ui-branch-chat"
]
}
}
}

lib/index.js 是宿主侧的空壳;真正的 UI 在 lib/client.js,由 package.json 里的 dsh.client 字段注入浏览器侧。

用法

1. 在任意会话里选中文本,点击 「⑂ 开分支」;
2. 在气泡输入框里提问:Enter 发送,Shift + Enter 换行;
3. 回答显示在气泡里,对应的问答轮次从主对话记录中隐藏;
4. 点击 × 收起气泡;行内的 ⑂N 徽标之后可以重新打开它;
5. 气泡里,⌂ 重置窗口位置和大小,圆形定位按钮跳回原文并高亮;
6. 左侧列表切换分支;× 删除分支及其对话串。

工作原理

1)锚点是文本加位置指纹。 除了引文,锚点还保存它所在的 data-chat-turn、该轮次的文本长度、选区字符偏移、引文在该轮次中的出现序号,以及前后各 20 个字符的上下文。解析时依次尝试完整上下文 → 前文上下文 → 后文上下文 → 记录的偏移 → 第 N 次出现 → 首次出现,然后用 Range.toString() 校验重建出的范围。不匹配就判定失败——绝不「差不多就行」地跳转。

2)分支消息。 提示词带着内部标记发回同一个会话: text ⟦分支·<anchorId>⟧关于「<quoted text>」

<your question>

这是真正写入会话上下文,所以分支回答拥有完整记忆;在主对话记录里隐藏它纯粹是展示层面的处理。

3)捕获回答。 插件轮询会话的运行状态,然后按标记找到该轮次的回答容器,克隆它的 DOM,剥掉过程噪音(data-step-process、代码块按钮),再注入气泡——这样气泡的渲染效果和主对话记录完全一致。

4)隐藏分支轮次。 插件维护一个 ,内容是 [data-chat-turn="N"]:not(:has([data-chat-turn])) { display: none !important; },只隐藏叶子轮次(绝不隐藏祖先容器);用户轮次只有在确认包含本插件的标记之后才会隐藏。清掉这个样式即可全部恢复;对话记录的 DOM 从不被改写。

5)窗口与状态。 面板几何、输入框高度、列表宽度、浮动按钮位置、锚点和对话串都持久化在 localStorage,刷新后恢复。

项目结构 text BubbleChat/ ├── lib/ │ ├── index.js # host-side entry (empty placeholder) │ └── client.js # all UI and logic (browser half, single file) ├── cordis.patch.yml # bundle patch so the plugin loads standalone ├── package.json # DSH plugin manifest (dsh.bundle / dsh.client) ├── docs/images/ # README screenshots ├── LICENSE └── README.md

已知限制
- 依赖 DSH 客户端的 DOM 约定(data-chat-turn、data-turn-process-answer、data-chat-group-part 等)。DSH 大版本升级可能改动这些约定,需要适配。
- 只测过 Web 客户端(dsh.client.platform = "web";桌面应用渲染的就是 Web 客户端)。
- 分支问答确实会消耗上下文。 隐藏只是展示层面的事;分支多了、对话长了,照样增加 token。
- 捕获依赖主会话进入空闲状态。 捕获失败时你会看到「answer generated but not captured (use Locate)」,该分支的轮次仍会显示在主对话记录里。
- 状态按浏览器保存。 localStorage 不会跨设备同步;清除站点数据会丢失锚点和线程。
- 暂不支持分支导出、分享、重命名。

开发

- 没有构建步骤:宿主直接加载 lib/client.js;改完代码重启应用即可。
- 浏览器控制台会打印 [branch-chat] 加载状态。
- 本地状态键:dsh-branch-chat/v5(清掉它可重置所有锚点)。
- 始终遵守一条约束:绝不修改主对话记录的 DOM;只通过插件自有的 做隐藏。
- 提交前的手动测试清单:选中 → 创建分支 → 提问 → 渲染 → 折叠(徽标)→ 定位 → 刷新并恢复 → 删除分支。

兼容性

| 项目 | 版本 |
| DeepSeek Harness | 0.2 preview |
| @deepseek-ai/cordis(peer) | ~4.0.4 |
| 平台 | Web 客户端(桌面应用 / 浏览器) |
| 运行时依赖 | 无(React 由宿主提供) |

参与贡献

欢迎提 Issue 和 PR。插件依赖 DSH 的客户端 DOM 约定,所以请注明你测试所用的 DSH 版本和场景;改动尽量小而聚焦,方便评审。

许可证

MIT © 2026 makima-coder
预览分享卡片长什么样 ↓makima-coder/DeepSeekBubbleChat
分享 · DeepSeek Harness Hub
makima-coder/DeepSeekBubbleChat

选中对话文字就地开气泡追问,不打断主线

这是你的仓库?认领条目

回到顶部