前言¶
在 DSH Web GUI 中处理较长会话时,常见操作不只是继续聊天,还包括快速找到某条用户消息、在滚动阅读时判断当前位置,以及输入框为空时回看上一条输入。DSH 的理念是「一切皆插件」,这类体验可以通过客户端插件扩展。dsh-node-nav 就是针对 Web GUI 侧边导航与输入历史给出的一个插件方案。
这是什么¶
dsh-node-nav 是 DSH Web GUI 的客户端插件,发布账号为 Seryta(GitHub 仓库与安装命令指向该账号)。它的作用是在聊天区右侧提供节点串,支持 hover 预览、点击跳转,并让 active 药丸跟随阅读位置。
该插件采用 MIT 许可证,资料说明其为纯手写 JS(零构建、零依赖),通过 git 安装不会触发构建脚本。
核心功能¶
dsh-node-nav 的已核实能力包括:
- 节点串:在 Web GUI 右侧提供纵向节点导航。
- 全量历史节点:用于覆盖
attached会话session log中的历史用户消息,减少只依赖当前 DOM 的限制。 - 底部节点:提供底部节点。
hover/focus预览:悬停或键盘聚焦时显示消息文本预览。- 点击跳转:点击后平滑滚动到对应消息,并短暂高亮。
active跟随:阅读位置变化时,active状态跟随当前阅读位置。- 输入历史:输入框为空时可按
↑回填最近一条用户输入,连续↑翻更早,↓翻回。 details避让:右侧details打开时进行避让。- 深色模式:支持深色模式。
reduced-motion:支持reduced-motion。- 自动隐藏:支持自动隐藏。
安装与启用¶
安装命令为:
dsh plugin --profile web add github:Seryta/dsh-node-nav
安装后重启 dsh web,并刷新页面。
如果希望从本地目录安装,也可以先克隆仓库:
git clone https://github.com/Seryta/dsh-node-nav.git
dsh plugin --profile web add ./dsh-node-nav
插件会以当前 dsh 进程权限运行。安装前建议检查源码与许可证;该插件资料标注许可证为 MIT。
典型用法¶
下面是几个可复现的使用路径:
1、安装并重启 dsh web 后,在 Web GUI 对话页打开右侧节点串。
2、将鼠标悬停在节点上,或通过键盘聚焦节点,查看消息文本预览。
3、点击节点,页面会平滑滚动到对应消息,并短暂高亮。
4、在输入框为空时按 ↑,回填最近一条用户输入;继续按 ↑ 可翻更早输入;按 ↓ 可翻回更近输入。
5、对于尚未加载进页面的历史节点,点击时会连续触发页面「加载更早」,直到该行进入 DOM,再滚动定位。
如果当前 dsh 版本移除了页面「加载更早」按钮,资料说明点击未加载节点会提示目标消息未能定位。
适用场景与注意¶
适合使用 DSH Web GUI、需要在长会话中定位用户消息、查看当前位置或回看输入历史的开发者。
需要注意以下几点:
- 插件以当前
dsh进程权限运行,安装前需要检查源码与许可证。 - 输入历史仅覆盖当前打开的(live)会话;host 端点只查
attached会话,未打开的历史会话无composer焦点,不适用输入历史。 - 全量列表端点如下:
/plugins/dsh-node-nav/api/users
该端点从 attached 会话的 session log 提取全部真实用户消息;端点不可用或冷会话(未 attached)时回退到纯 DOM 扫描。
- 输入历史与跳转依赖以下
dsh客户端契约:
[data-chat-anchor-key]
[data-composer-card]
hooks.input
props.inputActions
harness 大版本改动这些契约时需同步适配。
- 未加载节点点击依赖页面「加载更早」按钮存在,资料标注上限为 30 批;按钮被移除的
harness版本中,点击未加载节点会提示目标消息未能定位。
结尾¶
dsh-node-nav 提供的是 DSH Web GUI 侧的导航增强:节点串、预览、跳转、阅读位置跟随和输入历史回看。仓库地址为 https://github.com/Seryta/dsh-node-nav。已核实资料未给出目录页 URL;DSH 社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。