dsh-message-rail:DSH Web 左侧消息导航轨道

前言

在 DeepSeek Harness(DSH)里跑长会话时,右侧消息流会越滚越长。想回到某次提问,只能手动翻找,成本高,也容易打断当前阅读节奏。Codex 类产品在会话左侧提供消息刻度导航,悬停可预览、点击可跳转;DSH Web 默认没有同等能力。

下面介绍社区插件 dsh-message-rail(维护者 wx-yss):在 DSH Web 对话视图左侧挂载一条 Codex 风格的消息导航轨道,用等距刻度标出每条用户消息,支持悬停预览与点击跳转。交互灵感来自 Codex 的消息导航栏,本插件与 OpenAI 无关联。

这是什么

dsh-message-rail 是 DSH 的 Web 客户端插件dsh.client,platform: web),分类为客户端。它在会话左侧渲染一条 42px 宽的刻度轨道,每条用户消息对应一个刻度;仅在对话消息流挂载时显示,切到轨迹页会隐藏,切回对话页自动恢复。

插件通过 DSH history API 在后台独立建立用户消息索引,不把助手回复、工具调用和历史消息写入右侧 ChatView。少于 2 条用户消息时轨道自动隐藏。

许可证为 MIT,当前 npm 版本 0.1.7。GitHub 仓库:wx-yss/dsh-message-rail(13 stars,1 fork)。社区目录页:SkillHub

核心功能

刻度轨道与虚拟滚动

轨道默认高度 500px(约 50 条刻度),屏幕不足时撑满可用高度;每条用户消息一个刻度,固定 10px 间距。无论索引多少条,只渲染可见窗口 ±12 条缓冲;首尾还有更多刻度时以 40px 渐隐提示。轨道支持滚轮浏览,隐藏滚动条;手动滚动后停止跟随最新刻度。

悬停预览

悬停刻度时,宽度按 Codex 五级展开(6/10/14/20/26px),右侧浮出预览卡,显示序号、相对时间与消息文本。键盘 focus 等价于 hover;支持 prefers-reduced-motion 降级。

点击跳转

目标消息已在视口时只高亮气泡;否则瞬时定位——普通消息居中,超高消息顶部留白。目标尚未加载时,保护右侧当前阅读锚点,逐页调用 loadOlder() 寻找目标,找到后立即停止;后一次点击可取代前一次跳转,并清除旧高亮。

独立索引与稳定切换

完整刻度通过 connection.api.sessions.history() 建立(子 Agent 使用 subagents.history())。索引期间先显示右侧已加载的刻度,完整索引完成后一次性切换,避免刻度持续重排闪动。索引页数上限 400(约 2 万个表层消息);超过上限时保留右侧当前已加载刻度,不展示不完整的全量索引。

当前位置与加载反馈

视口 40% 线最近的消息刻度深色高亮,滚动即可感知读到哪。点击未加载刻度时,根据 history 分页预估剩余页数;预计超过 1 秒时立即提示,预估较快但实际超时则在 1 秒后补充提示,目标组件就绪后关闭。

索引范围

轨道索引 kind === 'user' 的普通提问与 kind === 'steering' 的运行中插话,不包含助手回复、工具调用、命令与注入上下文(kind === 'context')。配色跟随 DSH 运行时主题(--dsw-* 设计令牌),明暗主题自适应。

安装与启用

插件通过 DSH 的 dsh 命令安装,适用于 DeepSeek Harness 0.1.0-rc.6 或更高Node.js 22+。下面每个命令给出两种等价写法:dsh 形式适用于已全局安装 dsh;npx 形式无需全局安装,效果相同,README 推荐后者。

从 npm 安装(推荐)

# dsh 形式
dsh plugin --profile web add dsh-message-rail

# npx 形式(无需安装 dsh)
npx @deepseek-ai/dsh plugin --profile web add dsh-message-rail

从 GitHub 安装

# dsh 形式
dsh plugin --profile web add github:wx-yss/dsh-message-rail

# npx 形式
npx @deepseek-ai/dsh plugin --profile web add github:wx-yss/dsh-message-rail

本地开发安装

git clone git@github.com:wx-yss/dsh-message-rail.git
cd dsh-message-rail
pnpm install
npx @deepseek-ai/dsh plugin --profile web add .

重启

安装后需完整重启 dsh web:

# dsh 形式
dsh web

# npx 形式
npx @deepseek-ai/dsh web

典型用法

打开包含至少两条用户消息的会话,左侧即出现导航轨道。经过上面的步骤安装并重启后,可按以下方式操作:

  1. 悬停刻度 → 波纹展开 + 预览卡(序号 / 时间 / 文本)
  2. 点击刻度 → 跳转到对应用户消息
  3. 滚轮在轨道上滚动 → 浏览更早或更晚的刻度
  4. 滚动会话正文 → 当前位置刻度高亮

适用场景与注意

适合谁

  • 经常在 DSH Web 里跑长会话、需要快速回到历史提问的开发者
  • 习惯 Codex 式左侧消息导航、希望在 DSH 中获得类似体验的用户
  • 需要在对话视图与轨迹页之间切换、且只希望轨道出现在对话流的场景

使用前须知

DSH 的理念是「一切皆插件」;SkillHub 是社区目录站点,与 DeepSeek / 幻方无官方从属关系。插件以当前 dsh 进程权限运行,安装前应检查 源码 与 MIT 许可证。

已知限制

  • 后台索引每页读取 50 个表层消息边界;响应可能携带 chunk、工具事件等原始记录,但不会进入右侧聊天状态或 DOM
  • 点击非常早的刻度时,DSH 的 loadOlder() 会把中间页面逐步加入右侧且不会自动卸载,属于 DSH 聊天列表当前的累积渲染限制
  • 剩余时间估算不包含后续目标定位;按固定准备约 0.2 秒、每页约 0.45 秒校准,属于体验预估
  • 轨道刻度为虚拟窗口渲染;DOM 锚点(data-chat-anchor-key 等)为 DSH 内部契约,随 DSH 版本可能变化
  • 兼容性要求浏览器为 Chrome / Edge / Safari / Firefox 最新版

结尾

dsh-message-rail 把 Codex 风格的消息导航带到 DSH Web:等距刻度、悬停预览、点击跳转,配合独立全量索引与虚拟滚动,在长会话里定位历史提问更直接。如需安装或查看更新,可访问 SkillHub 目录页GitHub 仓库

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

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

小夜