dsh-convmap:对话地图插件

前言

DeepSeek Harness(DSH)在长对话场景下常面临导航困难的问题:默认视图受客户端分页窗口限制,难以快速定位早期的对话轮次。dsh-convmap 是一个为此设计的 Web 插件,它通过在主对话区左缘渲染刻度,解决了长会话的索引与跳转痛点。

是什么

这是一个在 DSH 主对话区左缘中部渲染「对话地图」的插件。每条刻度对应一轮用户提问。它提供悬停预览、点击跳转和滚动高亮功能,并针对长会话做了性能优化。

核心功能

  • 全量轮次刻度:直接读取会话完整日志,覆盖所有轮次,不受客户端分页窗口限制。
  • 代理自跑的轮次也有刻度:只要有用户消息,就会生成刻度;整轮无人发言时,使用第一条注入消息(如通知)生成刻度。
  • 先画后补:优先渲染已渲染的轮次,待 host 返回全量日志后再合并,长会话冷启动时刻度不会为空。
  • Hover 梯度展开:鼠标划过刻度区时,邻近刻度按距离梯度展开,右侧浮出预览卡。
  • 刻度多也跟手:性能优化,支持几百条刻度。Hover 渲染仅修改 7 条刻度的 CSS 变量,预览卡内容按 120ms 限频更新。
  • 预览卡可停可滚:预览卡按位置决定显示与否,支持鼠标滑入查看完整内容。提问标题固定,回复正文可滚动查看。
  • 点击跳转:点击刻度跳转到对应轮次。若目标轮次未渲染,会自动分页加载后再跳转。
  • 滚动高亮:滚动对话时,当前可视轮次的刻度自动高亮。
  • 键盘可达:支持 Tab 聚焦,使用 ↑/↓/Home/End 移动,Enter 跳转。
  • 无干扰:不拦截周边交互,预览卡显示期间仅为了接收滚动事件。

安装与启用

安装脚本会自动将插件写入 ~/.dsh/profiles/web/package.json 并注册到 bundles 中。

curl -fsSL https://raw.githubusercontent.com/GeekRicardo/dsh-convmap/main/install.sh | bash

安装完成后重启 DSH Web 进程:

pm2 restart dsh-web

卸载

使用安装脚本提供的卸载功能:

bash install.sh --uninstall

前置条件

  • 已初始化 DeepSeek Harness web profile(目录 ~/.dsh/profiles/web 存在)。
  • 环境需满足 Node.js >= 20 和 pnpm。

工作原理

插件分为 Host 和 Client 两部分协同工作。

Host 职责:
注册同源路由 GET /dsh-convmap/turns,使用 sessionPersistence.readRaw 读取原始日志文本。按行解析所有轮次,重建 key 为 13:input-message<messageId>(与 DOM 锚点对应)。在提取阶段将提问截取到 200 字,回复截取到 800 字(上限)。

Client 职责:
在 conversation.input.overlay 槽位挂载刻度组件。将已渲染轮次与 host 全量轮次合并。使用 data-conversation-scroll 和 data-chat-anchor-key 定位对话滚动容器和目标行。

对于未渲染的老轮次,通过 sessions.binding(sessionId).session.loadOlder() 逐页加载后再跳转。

适用场景

适用于需要频繁查阅长会话历史上下文、进行多轮调试或回顾长对话内容的开发者。插件以当前 DSH 进程权限运行,安装前建议检查源码与许可证。

参考资料

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

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

小夜