在 DSH Web UI 中进行长对话时,快速定位特定的用户提问往往需要多次滚动。dsh-conversation-nav 插件在对话右侧生成一条「问题导航」竖条,解决这一导航痛点。
这是 Fiker1203 维护的 DSH Web UI 插件。它在对话右侧生成一条序号清晰的竖条,列出当前会话中的每条用户提问。悬停可预览内容,点击可平滑跳转。
核心功能¶
- 消息识别:自动识别当前会话中的每条用户消息(
[data-chat-flow-kind="user"])。 - 右侧导航:在对话右侧生成竖向问题导航,序号清晰,窄条不遮挡聊天区。
- 预览与跳转:悬停或键盘聚焦时展开预览卡片,显示「第 N 问」和提问文本;点击序号平滑滚动到目标消息并闪烁高亮。
- 滚动监听:页面滚动时自动高亮当前正在浏览的问题。
- 动态渲染兼容:响应 React 动态渲染,支持加载更早消息、切换会话、虚拟滚动时的自动更新。
- 贴底滚动兼容:适配 DSH 聊天区的「贴底滚动」逻辑。
- 主题适配:适配女仆主题(maid-atelier)。
- 浅色模式:使用象牙白 / 海军蓝 / 金色描边。
- 深色模式(
data-ds-dark-theme):使用深海夜蓝 / 香槟金。 - 未启用女仆主题时自动回退到 DSH 官方设计变量。
安装与启用¶
dsh plugin --profile web add github:Fiker1203/dsh-conversation-nav
安装后重启 Web UI,并硬刷新浏览器(Ctrl+Shift+R)。
典型用法¶
- 悬停序号 → 展开预览卡片,查看该问题内容。
- 点击序号 → 平滑滚动到该问题并高亮。
- 向上/向下滚动对话 → 导航条自动高亮当前所在问题。
结构与维护¶
插件主要包含以下文件:
- index.js:host,无主机行为(浏览器专用)。
- client.js:browser,注入右侧问题导航 UI 及跳转/预览逻辑。
- cordis.patch.yml:插入 conversation-nav 条目。
- package.json:声明 dsh.bundle 和 dsh.client。
维护注意:用户消息选择器定义在 client.js 开头的 USER_NODE_SELECTOR。若 DSH 改版导致用户消息 DOM 标记变化,更新该选择器即可。
注意事项¶
- 插件只读取页面 DOM,不发送任何数据。
- 安装前建议检查源码与许可证(MIT)。