dsh 会话时间轴插件

在 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 / 幻方无官方从属关系。本文档仅基于已核实事实编写。

GitHub 仓库

羽毛球分组比赛记分
小程序二维码

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

小夜