前言¶
DeepSeek Harness (DSH) 采用「一切皆插件」的架构。在开发和调试智能体对话时,频繁回溯历史提问是常见场景。手动滚动或搜索往往效率低下。dsh-session-nav 提供了一个悬浮导航入口,解决快速跳转历史对话的问题。
核心功能¶
右侧悬浮按钮¶
按钮位于对话文字列的右边缘,采用四角圆角设计,呈现半透明效果。它会随布局动画(详情面板开合、侧边栏拖动、窗口缩放)平滑跟随位置。
历史提问列表¶
鼠标悬停在按钮上时弹出列表,显示当前会话的全部历史提问(包含被 compaction 折叠的记录,不依赖 DSH 渲染窗口)。
* 列表支持上下滚动。
* 打开时自动将「当前提问」滚动到列表中央。
* 顶部固定显示会话名字与提问总数。
点击跳转¶
- 窗口内提问:直接平滑跳转。
- 窗口外提问:自动逐页加载更早历史后跳转(带进度提示,视口不跳动)。
交互与性能¶
- 平滑关闭:鼠标移出后短暂延迟再开始淡出动画,避免「按钮 → 弹窗」路径的误关;点击提问按钮后移开鼠标可正常关闭。
- 性能优化:Host 端对 live Session 做内存增量遍历 + 持久化索引(
$DSH_HOME/session-nav-questions.)+ 客户端缓存 +afterSeq增量同步。正常路径下无磁盘 IO,无日志全量扫描。
安装与启用¶
执行以下命令安装插件:
dsh plugin --profile web add github:tuogusa/dsh-session-nav
安装后需要进行配置:
1. 按引导添加 pnpm-workspace.yaml 的 allowBuilds 条目(放行 git 依赖的 prepare 脚本)。
2. 重启 DSH。
3. 浏览器刷新(Ctrl+Shift+R)。
结构与更新¶
代码结构¶
lib/index.js:Host 端,提供GET /api/session-nav/questions接口。lib/client.js:Client 端,注册官方 slotconversation.session.header.utilities进行渲染。
更新方式¶
# 方式一:CLI 更新
dsh plugin --profile web update dsh-session-nav
# 方式二:重新安装
dsh plugin --profile web add github:tuogusa/dsh-session-nav
说明:
dsh plugin是 pnpm 的前置转发器,update会按当前依赖声明重新解析该包;通过github:tuogusa/dsh-session-nav安装时,会更新到仓库默认分支的最新提交。
注意事项¶
- 兼容 Profile:仅支持
web(DSH Web GUI)。 - 检查源码:插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。
总结¶
dsh-session-nav 通过右侧悬浮按钮和列表,实现了对 DSH 会话历史的快速导航。它解决了手动查找历史提问的痛点,同时通过增量索引和缓存机制保证了性能。