在 DSH 中处理长会话时,页面滚动困难,定位特定提问往往需要大量时间。@dsh-external/dsh-chat-jumper 插件在页面右侧提供了一条纵向圆点列,每个圆点对应一条用户提问,通过点击即可快速跳转。
插件简介¶
该插件由 Cloud-J 维护,采用 MIT 许可证。它解决了在长对话中快速导航和定位用户提问的问题,通过右侧的圆点列提供直观的交互入口。
核心功能¶
- 右侧圆点列:显示一条纵向圆点列,每个圆点对应一条用户提问(
user)或引导输入(steering)。 - 悬停预览:鼠标悬停在圆点上时,显示该轮提问的截断预览(前 40 个字符)。
- 平滑滚动:点击圆点,页面会平滑滚动到对应的用户提问位置。
- 当前位置高亮:当前阅读位置附近的提问圆点会高亮显示。
- 会话快照数据:数据来源于 DSH 会话快照,不扫描 DOM,因此即使历史消息尚未渲染,也能正确统计。
- 加载历史:若还有更早消息未加载,圆点列顶部会出现 ↑ 按钮。点击一次会自动连续调用
loadOlder(),直到把全部更早历史加载完。 - 自动加载重试:点击尚未渲染进 DOM 的旧圆点时,会自动触发
loadOlder()并重试定位。
安装与启用¶
推荐使用官方装配方式:
- 执行安装命令:
dsh plugin --profile web add <解压后的目录或 .tgz>
- 将包名加进 profile 的 bundles 列表。编辑
~/.dsh/profiles/web/package.json,在dsh.profile.bundles数组末尾加上:
"@dsh-external/dsh-chat-jumper"
完成后重启 web / 刷新页面即可。
从源码构建¶
需要本机有 DSH checkout,并设置环境变量 DSH_CHECKOUT 指向源码根目录。
npm run build # host tsc
npm run build:client # client tsdown → lib/client.js
打包发布:
npm pack
依赖说明¶
该插件需要安装 peerDependencies,包括:
* @deepseek-ai/dsh-llm
* @deepseek-ai/dsh-tools
* cordis
* schemastery
* @deepseek-ai/dsh-client-ui-slots
典型用法¶
点击右侧圆点即可快速跳转到对应的用户提问位置。
结语¶
该插件通过快照机制和历史加载逻辑,解决了长会话导航的痛点。更多细节与源码,请访问 GitHub 仓库。