前言¶
长会话里要回到某一轮用户输入,靠滚动和手动查找会打断阅读。下面介绍 dsh-session-timeline。它是 XiLuovo 维护的一个 DSH 会话时间轴插件,在会话左侧渲染一条横短横线时间轴,用于在长会话中快速定位、跳转和预览。
DSH 的理念是「一切皆插件」。这个插件发布在独立社区目录中,不是官方应用商店,与 DeepSeek / 幻方没有官方从属关系。
这是什么¶
dsh-session-timeline 是面向 DSH web 平台的插件,维护者是 XiLuovo,许可证为 MIT。
它解决的问题比较直接:在对话区左侧生成一条横向短横线时间轴,让长会话中的用户输入位置可以被看到、预览和点击跳转。
核心功能¶
横短横线时间轴¶
时间轴只在用户输入位置显示横向短横线。时间轴条数等于整个会话的用户消息数。
滚动时间轴时,条目内部滚动,且没有滚动条。
全量统计与缓存¶
插件通过 DSH sessionProjections 增量统计整个会话的用户消息与 AI 回复预览,并持久化缓存。
当前消息定位与波浪聚焦¶
插件提供 scroll-spy:激活条跟随右侧视口当前显示的用户消息。
鼠标在时间轴上移动时,会产生波浪聚焦效果。
悬停预览与点击跳转¶
悬停某条时,会显示圆角预览 tooltip,内容包括该轮用户消息和 AI 回复。
点击任意横线,对话会跳转到对应用户输入位置;如果目标消息还在窗口外,会先自动加载更早历史,再跳转。
收起与展开¶
第一条消息上方有一个胶囊把手。悬停时胶囊淡入,点击可以收起时间轴。
收起后,时间轴变成一条全高细竖条。悬停或点击竖条区域时,竖条淡入或展开时间轴。
安装与启用¶
先确认环境满足以下要求:
DSH ≥ 0.1.0-rc
dsh CLI 已安装
web profile 含 sessionProjections 服务
推荐用 npm 安装。执行:
dsh plugin --profile web add dsh-session-timeline
安装完成后,启动或重启 web:
dsh web
该包是纯 JS 实现,client.js 是最终 bundle 产物,不需要 prepare 构建脚本。
卸载时使用:
dsh plugin --profile web remove dsh-session-timeline
典型用法¶
经过上面的步骤,打开任意会话后,时间轴会出现在对话区左侧。
1、悬停时间轴某条,查看该轮的用户消息和 AI 回复预览。
2、点击横线,跳转到对应消息;窗口外历史会自动加载。
3、鼠标在时间轴上移动,激活条和长度递减形成波浪跟随。
4、滚动时间轴,条目内部滚动且无滚动条。
5、悬停第一条上方的胶囊,胶囊淡入;点击胶囊收起时间轴。
6、收起后悬停或点击竖条区域,竖条淡入或展开时间轴。
如果只想快速体验,也可以使用会话内动态加载:在 DSH Web 会话中让 agent 执行 cordis_define,粘贴 client.js 的内容作为 client 代码,再执行 cordis_run 启用。动态加载方式没有 host 投影,全会话统计不可用,仅保留窗口内功能。
适用场景与注意¶
适合在 DSH Web 中使用长会话、需要频繁回看或跳转的用户和插件作者。
注意以下几点:
- DSH 插件以当前 dsh 进程权限运行;安装前应检查源码与许可证。本插件许可证为 MIT。
- 插件声明
platform为 web,并通过dsh.clientinject 宿主运行时与 UI layout。 - 插件只读
sessions.binding(sessionId).session快照、投影与 DOM 锚点(data-chat-anchor-key),不修改会话数据。 - 动态加载方式没有 host 投影,全会话统计不可用,仅保留窗口内功能。
- 修改投影状态结构时,必须 bump
stateVersion,否则旧持久化缓存会被错误复用。
依赖声明如下:
@deepseek-ai/dsh-client-runtime
@deepseek-ai/dsh-client-ui-layout
@deepseek-ai/dsh-session-projection
zod ^4.4.3
结尾¶
dsh-session-timeline 把长会话中的用户输入位置集中到左侧时间轴上:横短横线定位、scroll-spy、悬停预览、点击跳转、收起/展开,都是可直接操作的功能。如果你需要在 DSH Web 里更快回到某一轮对话,可以先安装试一下。
目录页:
https://www.skillhub.cn/plugins/XiLuovo/dsh-session-timeline
GitHub:
https://github.com/XiLuovo/dsh-session-timeline