dsh-turn-rail
Manifest validTurn rail on the left edge of the conversation: one tick per user message, hover to preview, click to jump (auto-loads earlier pages when the turn is unloaded), plus an active-turn highlight and a scr
对话长了以后,回到「某一个问题的位置」不该靠运气。
一列刻度,悬停看当时问了什么,点一下跳过去。
English · 中文
先看效果
悬停任意刻度 → 变长、上下相邻两根略长;卡片显示轮次与提问原文。
最左侧细进度条:拖拽或点击按比例跳转。
它解决什么
长会话里,Ctrl+F 是找词,不是找位置。想回到三步之前那个问题,只能一路往上滚,或者反复点「加载更早」翻到眼熟为止。
dsh-turn-rail 在对话区左缘放一列短横线:一条线 = 你发出的一个问题。悬停看到当时问了什么,点击直接过去。它只做这一件事——不加设置项,不加面板,不加后台任务。
四个细节
| 目标不在当前页也能跳 | 历史是虚拟列表,翻走了的节点不在 DOM 里。点击时它会驱动宿主自己的「加载更早」把那一页翻回来,再定位过去(预算 6 秒,按钮消失即认定历史到头) |
| 同一句话发两次也不会跳错 | 定位用的是消息锚点 data-chat-anchor-key,不是文本匹配 |
| 知道你在哪 | 你正在看的那一轮始终是蓝色长刻度,随滚动实时移动 |
| 不挡字 | 刻度压到正文时自动向左让位(最多 14px),退无可退才隐藏 |
安装
dsh plugin --profile web add https://github.com/shrekcg/dsh-turn-rail
装完 硬刷新浏览器(Cmd/Ctrl + Shift + R)。
web换成你自己的 profile 名,桌面版通常是desktop。
为什么它这么轻
这个插件的核心约束是不被宿主替掉。
DSH 里做同类功能的插件大多走「客户端 inject: [..., 'remote'] → RPC 读会话日志」这条路。0.2.x 的客户端 API 换过一轮,那条路整体失效——表现是插件装好了、页面上什么都没有。
dsh-turn-rail 只依赖两样在 UI 层长期稳定的东西:
[data-conversation-scroll] 对话滚动视口
[data-chat-flow-kind="user"|"steering"] 你发出的提问节点
分页复用宿主自己的「加载更早」按钮,不自己读日志、不自己发请求。没有宿主服务依赖、没有后台进程、没有设置面板、没有任何存储。
边界
- 只在 Web GUI 的「对话」视图渲染,切到轨迹 / 子代理视图自动隐藏。
- 被宿主压缩(compaction)掉的历史不在 DOM 里,刻度也不会包含——不伪造历史。
- 若宿主未来改动上面两个 DOM 契约,刻度会整体不显示(安静失败,不影响对话)。修复点集中在
lib/client.js顶部的SEL常量。
项目结构
dsh-turn-rail/
├── package.json # dsh.bundle + dsh.client 清单
├── cordis.patch.yml # 挂载到 profile 的一行
├── index.js # 宿主端:空实现(滑轨完全在浏览器侧)
├── lib/client.js # 全部逻辑:样式、布局、悬停、跳转、进度
└── assets/readme/ # 封面与截图
没有构建步骤:lib/client.js 就是最终产物(__ModuleLoader__.load bundle 格式)。
git clone https://github.com/shrekcg/dsh-turn-rail
dsh plugin --profile web add link:./dsh-turn-rail
# 改 lib/client.js,重启 DSH 即生效
License
MIT © 2026 shrek wu · English version: README.en.md
Comments
Loading…
Similar plugins
by GeekRicardo
Conversation-map rail down the left edge of the transcript: one tick per user turn, read from the full session log on the host rather than from the rendered page, so long sessions are covered end to e
★ 1
MIT
JavaScript
Oct 10, 2026
dsh plugin --profile web add dsh-convmapLeft-edge conversation rail for the Web UI: one bar per turn, length scaled to the turn text, hover for a question and answer preview, click to jump; bars come from a host-side outline of the whole se
★ 0
dsh plugin --profile web add dsh-conversation-railby wuzehao888
DSH web plugin: left-side message navigation rail — one numbered tick per user message, click to jump, hover preview, scroll-follow highlight, auto-loads full history
★ 0
MIT
JavaScript
Aug 16, 2026
dsh plugin --profile web add dsh-plugin-message-navby caisiyang123
Tick-rail conversation navigator: one tick per message you sent, a lit peak that follows the mouse with an even falloff, hover previews, click or keyboard to jump.
★ 1
MIT
JavaScript
Aug 18, 2026
dsh plugin --profile web add dsh-tick-railLeft-edge turn-marks strip in chat: one bar per user message, click to jump to that message, hover for a preview, active bar turns white.
★ 0
dsh plugin --profile web add dsh-turn-marksMessage timeline rail for DeepSeek Harness web chat: evenly spaced ticks for each user message on the right edge, click to jump, hover to preview.
★ 0
↓ 150/wk
dsh plugin --profile web add @lcthe/dsh-timeline-rail