dsh-session-nav:DeepSeek Harness Web GUI 会话内导航条

前言

DSH 的 Web GUI 适合承载较长的多轮会话,但会话越长,回看某一轮问题的成本越高:用户消息、模型回复、运行上下文不断累积,想确认前面某次提问或对应回复,往往只能反复滚动。

下面介绍 kiligzzz/dsh-session-nav。它是 DSH Web GUI 的一个会话内导航插件:每根键对应一条用户消息,悬停可预览该轮用户消息与模型回复,点击可跳转到对应位置。

这是什么

dsh-session-navkiligzzz 维护的插件,许可证为 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__

它会暴露 entryCountfullCountstats,便于通过 CDP 检查。

本地开发常用命令:

pnpm install
pnpm test
pnpm lint
pnpm format

适用场景与注意

适合在 DSH Web GUI 中处理较长多轮会话、需要快速回看用户问题和对应模型回复的场景,例如调试智能体运行轨迹、核对多轮上下文、定位某次提问后的回复。

注意事项:

  • 插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。
  • 插件声明依赖包括 @deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-slotsreactreact-domcordis
  • 新装插件后需要重启 dsh web 实例;只改 lib/client.js 时刷新页面即可,改 index.js 需要重载插件。
  • 仓库声明许可证为 MIT,环境要求 Node.js >= 18。

结尾

dsh-session-nav 解决的是单个会话内“找到某轮对话”的问题:把用户消息映射成导航键,把模型回复并入预览,并把历史加载和定位串起来。

仓库地址:

https://github.com/kiligzzz/dsh-session-nav
羽毛球分组比赛记分
小程序二维码

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

小夜