前言¶
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 进程权限运行,安装前建议检查源码与许可证。