在 dsh WebUI 的长会话中,快速定位用户消息是常见的痛点。dsh 会话时间轴插件 在会话消息列的右缘渲染一条竖直时间轴,通过刻度与交互提供导航能力。该插件由 hemo94931 维护,遵循 MIT 许可证,旨在解决在长对话中手动滚动查找特定消息的问题。
核心功能¶
插件在 WebUI 右侧边栏提供以下能力:
- 竖直时间轴渲染:每条用户消息(包括首轮消息和 steering 追问)在右侧边缘生成一条短横线刻度。
- 悬浮摘要与序号:鼠标悬停时,显示该条消息的序号(如
3 / 12)与摘要内容。 - 点击跳转:点击刻度或按钮,滚动容器将自动定位到对应消息,并将其置于视口顶端并短暂高亮。
- 导航按钮:提供 ▲ / ▼ 按钮用于逐条向上或向下导航。
- 当前刻度高亮:当前滚动位置对应的刻度会自动高亮显示。
- 主题适配:颜色使用 dsh 主题令牌,支持深浅色模式自适应。
安装与启用¶
安装前请确保系统已安装 pnpm。
常驻安装(推荐)¶
执行以下命令将插件添加到 WebUI 插件花名册。包内的 cordis.patch.yml 会在下次启动 dsh web 时自动加载插件,无需手动激活。
dsh plugin --profile web add @hemo94931/dsh-timeline
本地开发时,可在仓库根目录执行以下命令进行 Link 安装:
dsh plugin --profile web add .
卸载¶
dsh plugin --profile web remove @hemo94931/dsh-timeline
注意事项与故障排查¶
- 动态插件特性:动态加载的插件不随进程重启存活。若需永久生效,请使用常驻安装方式。
- 时间轴不出现:
- 确认当前会话包含至少 2 条用户消息。
- 确认详情面板未打开(详情面板会遮挡时间轴渲染区域)。
- 刚打开或刷新会话时,消息行是渐进挂载的,视口附近可能暂时只有 1 条用户消息。尝试向上滚动补齐后,时间轴会自动出现。
- 启动报错
styles is not defined:这通常是由于常驻 bundle(lib/client.js)过期导致的。执行node build.js重新构建即可。 - 产品升级后异常:产品 DOM 结构可能发生变化,请优先核对
src/dom.js中的契约清单(如data-conversation-scroll、data-chat-flow-kind等),并重新构建。
技术细节¶
- 代码结构:插件采用纯逻辑模型(
src/model.js)与 DOM 契约 adapter(src/dom.js)分离的设计。src/shell.js负责控制器与 React 视图渲染。 - 开发命令:
- 运行单测:
node test/model.test.js - 重新构建:
node build.js - 构建产物为
client.js(动态插件)与lib/client.js(常驻 bundle)。
- 运行单测:
生态背景¶
DSH 理念是「一切皆插件」,社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。本文档仅基于已核实事实编写。