DSH Web 对话导航插件:dsh-conversation-nav (dsh-conversation-jump)

在使用 DeepSeek Harness (DSH) 处理长对话时,用户往往需要频繁地在历史消息中定位自己提出的问题。依靠原生滚动条逐条查看效率较低。dsh-conversation-nav 插件通过语义化的导航按钮,让开发者或用户可以按“用户消息”为单位快速跳转,并自动处理历史分页。

插件简介

这是一个 Web UI 插件,由 uigdwunm 维护。它为 DSH Web 对话区提供了一组圆形导航按钮:回到顶部、上一条用户消息、下一条用户消息、回到底部。

该按钮栏悬浮在输入框上方、对话内容右缘,并会替换产品自带的单一“回到底部”按钮。它不依赖哈希定位,而是通过属性(如 data-chat-anchor-key)定位 DOM 元素,仅针对 user 和 steering 类型的消息进行跳转,会跳过工具调用、上下文注入等其他过程节点。

核心功能

  1. 语义化导航

    • 回到顶部:滚动到当前顶部,并持续翻页加载更早历史,直到真正的顶部。
    • 上一条 / 下一条:跳转到上一条或下一条用户消息。如果目标超出当前已加载窗口,会自动触发翻页。
    • 回到底部:直接跳转到最新位置。
  2. 智能交互

    • 目标锚点:跳转后,目标消息会停留在视口顶部约 1/12 的位置。
    • 自动显隐:默认隐藏。当检测到平均向上滚动速度超过 200 px/s 时出现;出现后 3 秒无操作自动隐藏,点击任意按钮会重置倒计时。
    • 位置布局:右对齐,距离输入框 16px,在渲染前同步定位以避免闪烁。
  3. 状态与兼容

    • 内存状态:仅使用页面内存状态,无持久化存储(无 localStorage、IndexedDB 等)。
    • 样式自修复:样式节点丢失时,插件会每 100ms 检查 DOM 并重建样式节点。
    • 清理机制:插件卸载时会自动清理所有样式、计时器和滚动监听器。

安装与启用

安装此插件需要使用 DSH 的 Web 配置文件(profile)。

1、执行以下命令安装:

dsh plugin --profile web add dsh-conversation-jump

2、安装完成后,重启 dsh web 即可生效。

开发与扩展

本地开发:

npm install
npm run build

构建后的文件位于 lib/client.js。由于 profile 目录下的 node_modules 是硬链接,重新构建会破坏链接,因此本地开发时需要先运行 npm run build,再执行一次安装命令:

dsh plugin --profile web add file:/absolute/path/dsh-conversation-nav

其他安装方式:
* 从 GitHub 安装源码:

    dsh plugin --profile web add github:uigdwunm/dsh-conversation-nav
  • 从预构建 Release 包安装:
    dsh plugin --profile web add https://github.com/uigdwunm/dsh-conversation-nav/releases/download/v0.1.5/dsh-conversation-jump-0.1.5.tgz

技术细节

  • 定位方式:使用属性 [data-conversation-scroll]、[data-chat-anchor-key] 等定位,不依赖 URL 哈希。
  • 翻页机制:插件会查找 [data-chat-flow] 内部的“加载更多”按钮并模拟点击,直到锚点数量增加。
  • 组件结构:
    • index.mjs:主机部分(Web 端),为一个空的 apply 函数,不注入任何宿主服务。
    • src/client.ts:浏览器端逻辑,处理导航、分页、定位和可见性策略。

注意事项

  • 适用范围:仅限 Web UI 插件。
  • 分页限制:如果主机界面从未渲染“加载更多”按钮,插件将无法进行翻页操作。
  • 许可证:MIT。
羽毛球分组比赛记分
小程序二维码

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

小夜