在 DeepSeek Harness(DSH)应用开发中,常遇到需要在当前对话上下文中针对特定片段进行深入分析的需求。直接在主对话中插入会打断上下文,而新建会话又过于繁琐。dsh-conversation-branches 插件通过选区提问的方式,在右侧详情列提供 IM 风格的独立问答分支,解决了这一痛点。
插件简介¶
该插件由 Caramel-Geass 维护,采用 MIT 许可证。它允许用户选中主对话文本,随即在详情列开启独立的流式问答会话,且数据随主会话持久化。
安装与启用¶
这是一个 dsh bundle 插件,通过 dsh.bundle 声明,添加后无需手写挂载配置,会自动成为 profile 的 composition 层。
安装命令如下:
dsh plugin --profile <name> add @deepseek-ai/dsh-conversation-branches
核心功能¶
- 选区提问:选中主对话文本即弹出提问框,针对选中片段发起独立问答,不打断主对话。
- IM 气泡对话:分支以聊天气泡呈现,支持流式输出及同一分支内的多轮追问。
- 随会话持久化:分支数据作为
fork/branchlog-only 事件写入会话日志,重新加载时按顺序重放。 - 定位高亮:点击分支卡片中的“选中片段”可定位回主对话并短暂高亮。
- 折叠 / 删除:分支卡片可折叠为一行,支持删除。
典型用法¶
- 在主对话正文中选中一段文本。
- 弹出提问框,输入问题后回车(或点击’提问’)。
- 右侧详情列出现分支面板,开始流式回答。
- 可继续’追问’;点击’选中片段’定位回主对话;折叠或删除分支。
技术细节¶
依赖项¶
- 运行依赖:
@deepseek-ai/dsh-session、@deepseek-ai/dsh-typert-protocol。 - Peer 依赖:
react、@deepseek-ai/dsh-client-connection。
命名空间解析¶
插件自挂载 conversationBranches Remote 命名空间。由于挂载者与本插件是兄弟 fiber,直接通过 ctx.remote.conversationBranches 的 fiber-store 链解析会导致死锁。因此,统一通过 ctx.get('remote.conversationBranches') 走共享 reflect store 解析。
总结¶
dsh-conversation-branches 通过提供一种非侵入式的分支交互方式,增强了 DSH 会话的灵活性。开发者可参考 GitHub 仓库 获取更多源码与开发细节。