前言¶
在 DeepSeek Harness (DSH) 的 Web 端交互中,随着对话轮次增加,原生界面容易失去结构化信息,开发者难以快速回顾上下文或定位特定段落。本文介绍 huangfuren/dsh-conversation,它通过一个浮动面板将对话重组为树形大纲,提供导航、统计与快速定位功能。
插件简介¶
huangfuren/dsh-conversation 是一个纯 UI 插件,不接触提示词、消息内容或工具结果,仅读取宿主提供的会话快照进行渲染。它主要解决 Web 端会话结构不清晰、难以快速定位与回顾的问题,提供类似于文档大纲的阅读体验。
安装与启用¶
插件支持通过不可变 tag 安装,确保版本一致性。命令如下:
dsh plugin --profile web add github:huangfuren/dsh-conversation#v1.3.1
若需跟踪开发分支或本地调试,可使用以下命令:
dsh plugin --profile web add github:huangfuren/dsh-conversation
dsh plugin --profile web add file:/absolute/path/to/dsh-conversation
核心功能¶
-
浮动面板与会话大纲
面板默认常驻于页面右上角。它以“用户提问”为根节点,根节点包含序号、提问时间及该轮工具数与正文字数统计;助手回复中的 Markdown 标题按层级挂载到最近的提问下。面板支持拖拽把手,位置会持久化保存。 -
跳转与阅读记忆
- 单击任意行,面板会自动滚动到正文对应位置并高亮节点。
- 双击任意行,跳转到“本节末尾”(下一个同级或更高级节点,若已到底部则滚动到底部)。
- 插件会记录每个会话的阅读位置,切换会话后再次打开面板时,自动定位至上次阅读节点。
-
面板宽度与键盘导航
- 面板提供三档宽度:紧凑 320px、加宽 480px、全屏 720px。可通过标题栏按钮循环切换。
- 在面板聚焦时,使用
Alt+↑/Alt+↓可在节点间快速上下导航。
-
右侧密度刻度条
右侧显示对话密度图,每个 tick 代表一轮提问,长度按该轮正文量归一化。Hover 时显示该轮摘要,点击可直接跳转。该功能可作为“对话密度图”查看。 -
搜索与导出
- 搜索:支持在搜索框输入关键词,支持切换搜索范围(全部 / 仅问题 / 仅标题),命中片段会高亮显示。
- 导出:支持将大纲导出为 Markdown 格式,可复制到剪贴板或下载为
.md文件(文件名固定为dsh-conversation-outline.md)。
-
状态持久化
所有用户偏好(收藏、展开层级、面板宽度、刻度条开关、阅读位置)均通过localStorage(键前缀dsh-conversation:)进行持久化。
典型用法¶
- 调整面板宽度:在面板标题栏点击或使用
Alt+↑ / Alt+↓快捷键。 - 跳转定位:单击大纲节点跳转,双击跳至节点末尾。
- 切换搜索范围:点击搜索框左侧的按钮,在“全部”、“问题”、“标题”之间循环切换。
- 展开/收起层级:使用标题栏中的层级滑块,控制显示到第几级 Markdown 标题。
兼容性与注意事项¶
- 版本要求:插件已在 DSH 0.1.5-rc.2 +
webprofile 上验证,并适配 DSH 0.2.x(>=0.2.0-rc.1 <1.0.0)。更早的 DSH 版本与其他 profile 未认证。 - 降级机制:插件遇到不认识的宿主 API 时,会降级为“面板不出现”而非抛错,以避免影响宿主稳定性。
- DOM 依赖:点击定位功能依赖宿主的 DOM 契约(
data-chat-anchor-key或data-chat-flow-kind)。若宿主未来变更这些属性,定位功能可能失效。 - 布局冲突:面板使用固定定位,与其他右上角悬浮插件共存时可能会发生视觉重叠。
总结¶
dsh-conversation 为 DSH Web 端提供了一套轻量级、纯 UI 的会话导航方案。它不侵入数据层,通过清晰的层级结构与快捷的跳转能力,帮助开发者更高效地管理长对话。项目详情与源码可参考 GitHub 仓库。