前言¶
在 DeepSeek Harness(DSH)里跑智能体,会话往往会拉得很长:调试提示词、反复改需求、对照多轮回复。想回到「三步之前那个问题」时,Ctrl+F 只能找词,不能按轮次定位;往上滚或反复点「加载更早」又费眼又费手。
社区插件 dsh-turn-rail(维护者 shrekcg)针对的是另一类需求:在 Web 对话视图左缘加一列刻度,一条短横线对应你发出的一条用户消息,悬停预览原文、点击跳转,并附带当前阅读位置与滚动进度。下面介绍它的定位、能力与安装方式。
这是什么¶
dsh-turn-rail 是 DSH 的客户端插件,面向 DSH Web UI 0.2.x。简介(与 SkillHub 目录页 一致):Conversation turn rail for the DSH Web UI — one tick per user message, hover to preview, click to jump, plus a scroll-position indicator。
它只做导航辅助:不加设置项、不加面板、不加后台任务。宿主端 index.js 为空实现,逻辑全部在浏览器侧的 lib/client.js。许可证为 MIT(© 2026 shrek wu),当前包版本 0.1.2,运行时依赖为 0。
核心功能¶
轮次刻度与预览¶
对话区左缘一列短横线:一条线 = 你发出的一个问题(含 user 与 steering 类提问节点)。悬停时该刻度变长、相邻两根略长,并弹出卡片,显示轮次与提问原文;点击即可跳转到对应消息。
跳转与虚拟列表¶
历史消息在 Web UI 里常以虚拟列表呈现,翻走的节点不在 DOM 中。点击某一刻度时,插件会驱动宿主自带的「加载更早」,把目标页翻回来再定位(预算约 6 秒;加载按钮消失即视为历史已到顶)。
定位依据是消息锚点 data-chat-anchor-key,不是文本匹配,因此同一句话发送两次也不会跳错条。
当前位置与滚动进度¶
你正在查看的那一轮会显示为蓝色长刻度,随滚动实时更新。最左侧还有细进度条:拖拽或点击可按比例跳转滚动位置。
布局与不挡正文¶
刻度压到正文时会自动向左让位(最多 14px);退无可退时才隐藏,避免挡住对话文字。
为什么走纯 UI、不读 RPC¶
README 说明:DSH 里不少同类能力走「客户端 inject + remote RPC 读会话日志」;在 0.2.x 客户端 API 调整后,那条路可能装得上却页面上什么都没有。
dsh-turn-rail 只依赖 UI 层上相对稳定的 DOM 契约:
[data-conversation-scroll] 对话滚动视口
[data-chat-flow-kind="user"|"steering"] 你发出的提问节点
分页复用宿主「加载更早」,不自行读日志、不发请求;无宿主服务依赖、无后台进程、无设置面板、无本地存储。若宿主将来改动上述选择器,刻度会整体不显示(安静失败,不影响对话);修复点集中在 lib/client.js 顶部的 SEL 常量。
安装与启用¶
在终端执行(命令来自项目 README):
dsh plugin --profile web add https://github.com/shrekcg/dsh-turn-rail
将 web 换成你实际使用的 profile 名(桌面版常见为 desktop)。安装完成后对浏览器做硬刷新(Cmd/Ctrl + Shift + R)。
插件以当前 DSH 进程权限运行;安装前建议自行查看 GitHub 仓库 源码与 MIT 许可证。DSH 社区目录(如 SkillHub)为独立站点,与 DeepSeek / 幻方无官方从属关系。
典型用法¶
- 安装并硬刷新后,打开 Web GUI 的对话视图,左侧应出现与每条用户提问对应的刻度列。
- 悬停任意刻度,查看该轮提问摘要;点击刻度跳转到该条消息(必要时会自动触发「加载更早」)。
- 滚动对话时观察蓝色长刻度跟随当前轮次;需要快速扫读时可用最左侧细进度条按比例跳转。
切到轨迹、子代理等视图时,滑轨会自动隐藏。
适用场景与边界¶
适合:在 DSH Web UI 中进行长会话开发、调试,需要按「第几轮提问」回看或跳转,而不想依赖全文搜索或盲目滚动。
需注意:
- 仅在 Web GUI 对话视图渲染;被宿主 compaction 压缩掉、不在 DOM 中的历史不会出现在刻度上(不伪造历史)。
- 无构建步骤:
lib/client.js即为最终产物;本地开发可用link:方式挂载后改代码并重启 DSH(README 中的开发流程,与日常add安装并列说明)。
结尾¶
dsh-turn-rail 用一列轻量刻度把「回到某一个问题的位置」从碰运气变成可预期操作:悬停预览、点击跳转、当前位置与滚动进度一目了然,且刻意避开易变的 host RPC,只钉在滚动视口与用户消息节点上。