前言¶
DSH 的 Web GUI 适合承载较长的多轮会话,但会话越长,回看某一轮问题的成本越高:用户消息、模型回复、运行上下文不断累积,想确认前面某次提问或对应回复,往往只能反复滚动。
下面介绍 kiligzzz/dsh-session-nav。它是 DSH Web GUI 的一个会话内导航插件:每根键对应一条用户消息,悬停可预览该轮用户消息与模型回复,点击可跳转到对应位置。
这是什么¶
dsh-session-nav 是 kiligzzz 维护的插件,许可证为 MIT,用于 DeepSeek Harness Web GUI 的单个会话。
它基于 DSH 官方双面插件机制(host + browser half),不侵入 DSH 源码。插件把一轮对话压缩成导航键:用户消息占键,模型回复不单独占键,而是并入对应轮次的悬停预览。这样长会话里的用户问题可以集中显示,减少来回滚动查找。
核心功能¶
- 为单个会话提供多轮对话导航。
- 每根键锚定一条用户消息;模型回复不单独占键,并入对应轮次的预览。
- 悬停显示用户消息单行省略,以及模型回复最多 3 行。
- 当前查看内容对应的键随滚动实时联动高亮。
- 点击目标消息时:目标消息已在加载窗口内,则平滑滚动直达;目标消息在窗口外时,自动调用官方分页接口加载历史,并定位到视口顶部。
- 导航键数据来自 host 端按需读取的完整会话日志,长会话可一屏看到全部用户问题。
- 与实时快照合并时按消息 UUID 去重。
- 支持深浅色主题自适应。
安装与启用¶
环境要求:Node.js >= 18。
从 GitHub 安装时执行:
dsh plugin --profile web add github:kiligzzz/dsh-session-nav
新装插件后需要重启 dsh web 实例,再刷新页面。
本地开发时可以用 link 方式:
dsh plugin --profile web add link:<本目录>
这种方式下,修改 lib/client.js 后刷新页面即生效;修改 host 端 index.js 需要重载插件。
典型用法¶
启用后,在 DSH Web GUI 的单个会话里即可看到导航键。每根键代表一条用户消息,按会话中的用户消息生成。
悬停某根键时,可以看到该轮用户消息的单行摘要,以及对应模型回复最多 3 行内容。点击任意键后,页面会跳转到对应消息;如果历史尚未加载,插件会通过官方分页接口加载更早内容,直到目标消息定位到视口顶部。
本地调试时,可以使用资料中给出的诊断入口:
window.__dssnNavDebug__
它会暴露 entryCount、fullCount、stats,便于通过 CDP 检查。
本地开发常用命令:
pnpm install
pnpm test
pnpm lint
pnpm format
适用场景与注意¶
适合在 DSH Web GUI 中处理较长多轮会话、需要快速回看用户问题和对应模型回复的场景,例如调试智能体运行轨迹、核对多轮上下文、定位某次提问后的回复。
注意事项:
- 插件以当前
dsh进程权限运行,安装前应检查源码与许可证。 - 插件声明依赖包括
@deepseek-ai/dsh-client-runtime、@deepseek-ai/dsh-client-ui-slots、react、react-dom、cordis。 - 新装插件后需要重启
dsh web实例;只改lib/client.js时刷新页面即可,改index.js需要重载插件。 - 仓库声明许可证为 MIT,环境要求 Node.js >= 18。
结尾¶
dsh-session-nav 解决的是单个会话内“找到某轮对话”的问题:把用户消息映射成导航键,把模型回复并入预览,并把历史加载和定位串起来。
仓库地址:
https://github.com/kiligzzz/dsh-session-nav