dsh-conversation:Web 端会话大纲与导航插件

前言

在 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

核心功能

  1. 浮动面板与会话大纲
    面板默认常驻于页面右上角。它以“用户提问”为根节点,根节点包含序号、提问时间及该轮工具数与正文字数统计;助手回复中的 Markdown 标题按层级挂载到最近的提问下。面板支持拖拽把手,位置会持久化保存。

  2. 跳转与阅读记忆

    • 单击任意行,面板会自动滚动到正文对应位置并高亮节点。
    • 双击任意行,跳转到“本节末尾”(下一个同级或更高级节点,若已到底部则滚动到底部)。
    • 插件会记录每个会话的阅读位置,切换会话后再次打开面板时,自动定位至上次阅读节点。
  3. 面板宽度与键盘导航

    • 面板提供三档宽度:紧凑 320px、加宽 480px、全屏 720px。可通过标题栏按钮循环切换。
    • 在面板聚焦时,使用 Alt+↑ / Alt+↓ 可在节点间快速上下导航。
  4. 右侧密度刻度条
    右侧显示对话密度图,每个 tick 代表一轮提问,长度按该轮正文量归一化。Hover 时显示该轮摘要,点击可直接跳转。该功能可作为“对话密度图”查看。

  5. 搜索与导出

    • 搜索:支持在搜索框输入关键词,支持切换搜索范围(全部 / 仅问题 / 仅标题),命中片段会高亮显示。
    • 导出:支持将大纲导出为 Markdown 格式,可复制到剪贴板或下载为 .md 文件(文件名固定为 dsh-conversation-outline.md)。
  6. 状态持久化
    所有用户偏好(收藏、展开层级、面板宽度、刻度条开关、阅读位置)均通过 localStorage(键前缀 dsh-conversation:)进行持久化。

典型用法

  • 调整面板宽度:在面板标题栏点击或使用 Alt+↑ / Alt+↓ 快捷键。
  • 跳转定位:单击大纲节点跳转,双击跳至节点末尾。
  • 切换搜索范围:点击搜索框左侧的按钮,在“全部”、“问题”、“标题”之间循环切换。
  • 展开/收起层级:使用标题栏中的层级滑块,控制显示到第几级 Markdown 标题。

兼容性与注意事项

  • 版本要求:插件已在 DSH 0.1.5-rc.2 + web profile 上验证,并适配 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 仓库。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye