前言¶
用 DSH Web 聊长会话时有个常见麻烦:想回看前面某次提问,只能靠滚动条一点点找。聊天区做了虚拟化渲染,翻过一段后更早的内容还没加载出来,滚回去还得等;左侧会话列表里一堆「新会话」,单看标题也分不清哪个是哪个。
dsh-usage-record 针对的就是这两个问题:它在对话区左侧加一条竖向导航轨,每条横线对应一次提问,点击即跳转;同时给会话列表自动补上基于提问内容的标题。下面介绍它的功能、安装方式和注意事项。
这是什么¶
dsh-usage-record 是一个 DSH 客户端插件(仅支持 web 平台),由 kkishapppy 维护,许可证为 MIT。一句话定位:DSH Web 对话区左侧的提问导航轨——每条横线等于一次提问,点击即跳转到对应位置,支持鱼眼放大、滚动跟随和后台全量预加载。
数据全部来自服务端接口 /plugins/dsh-usage-record/questions,从会话日志提取,不受聊天虚拟化窗口的限制,所以轨道上能看到完整历史,而不只是当前已渲染的那一段。
核心功能¶
提问导航轨与点击跳转¶
轨道显示在对话左侧,每条横线代表一次提问,悬停会弹出 tooltip 显示提问内容。点击横线后,聊天区平滑滚动到该提问;如果目标位置还没被渲染(属于未加载的历史),插件会先自动加载再跳转。
鱼眼效果与滚动跟随¶
鼠标在轨道上移动时,横线按与指针的距离放大(σ=10),边缘留白防止裁剪。反向也成立:聊天区滚动时,当前视口中心对应的提问会在轨道上高亮,即 scroll-spy,轨道自动跟随滚动位置。
后台预加载¶
只要轨道可见,插件就会自动批量加载全部历史提问。这里有一个客户端补丁:history RPC 的批量数被放大到 3000(官方默认 50),对应客户端源码里的 HISTORY_BATCH 常量,可以按需调整。配合这个补丁,长会话也能做到点击秒跳。
会话自动标题¶
插件包装了 sessionPersistence.list(),给会话列表每行补上 title。规则如下:
- 取该会话最后一次真实提问做摘要,长度不超过 30 字;
- 最后一条太短(少于 8 字,比如「好的」「1」)时,自动与更早一条合并;
- 对话进行中标题保持稳定,显示上次固化的结果,不随每句话跳动;会话闲置达到 30 分钟后才生成或更新标题并落盘,时长可通过
titleIdleMinutes配置。
整个过程是纯规则加内存缓存加单定时器,不调 LLM、不联网。手动命名的优先级最高:在 dataDir/titles.json 里写的名字会覆盖自动标题;会话数据本身自带 title 时也不做改动。
安装与启用¶
从 GitHub Release 安装:
dsh plugin --profile web add https://github.com/kkishapppy/dsh-usage-record/releases/download/v0.1.0/dsh-usage-record-0.1.0.tgz
也可以用本地 tgz 文件安装:
dsh plugin --profile web add ./dsh-usage-record-0.1.0.tgz
配置是可选的,写在 profiles/<profile>/cordis.patch.yml:
- id: usage-record
config:
dataDir: 'E:\DeepSeekHarness\data\usage-record' # 默认 <cwd>/data/usage-record
典型用法¶
手动命名会话¶
想让某个会话固定显示自己起的名字,编辑 titles.json(默认路径 E:\DeepSeekHarness\data\usage-record\titles.json),格式如下:
{ "session-xxxx…": "我给的名字" }
键是会话 ID,值是标题。手动命名的优先级最高,自动标题不会覆盖它。
本地开发构建¶
改代码后需要重新构建:
npm i
npx -y tsdown@0.22.2 --config ./tsdown.config.ts
注意生效方式:服务端改动需要重启 DSH;client 改动硬刷新页面即可生效。
适用场景与注意¶
适合两类人:一是经常在 DSH Web 里跑长会话、需要反复回看和跳转历史提问的开发者;二是会话列表积累了很多条、想一眼认出每条会话内容的用户。
使用前有几点需要知道:
- 插件依赖 DSH Web 客户端内部 DOM 结构(
[data-chat-flow]、[data-chat-anchor-key]、滚动容器等),DSH 版本升级后可能失效,这是社区客户端插件的共性; - 轨道只在会话视图渲染,且需要会话里存在历史提问;
- history RPC 批量被放大到 3000,如果介意这个改动,可以在客户端源码
HISTORY_BATCH常量处调整; - 插件以当前 dsh 进程权限运行,安装前建议检查源码与许可证(本项目为 MIT,README 与 package.json 均有标注)。
结尾¶
dsh-usage-record 用一条导航轨解决了长会话回看的问题,顺手把会话标题也补齐了,实现上是纯规则、不联网,成本可控。如果你也在 DSH Web 里管理长对话,值得装上试一试。
- 插件目录页:https://www.skillhub.cn/plugins/kkishapppy/dsh-usage-record
- GitHub 仓库:https://github.com/kkishapppy/dsh-usage-record
需要说明的是,插件目录是社区维护的独立站点,与 DeepSeek、幻方无官方从属关系。DSH 的理念是「一切皆插件」,这类社区插件正是这个生态的日常组成部分。