AFAP/dsh-message-minimap:DeepSeek Harness Web 会话用户消息导航条

前言

DSH 的扩展方式是插件化,社区目录是独立站点,不是 DeepSeek / 幻方官方应用商店。对于 DSH Web GUI 中的长会话,用户发送的消息容易夹在多轮回复里,靠滚轮回看比较费时。

AFAP/dsh-message-minimap 在 DeepSeek Harness Web GUI 会话聊天窗的左边缘显示一条迷你导航条:每一条你发送的消息都是刻度,悬停看摘要,点击即跳转,拖动可快速扫读长会话。

本文基于已核实资料,介绍它解决什么问题、能做什么、如何安装,以及使用边界。

这是什么

AFAP/dsh-message-minimap 是由 AFAP 维护的客户端插件,使用 MIT 许可证。

它解决的问题很具体:在 DSH Web GUI 会话中快速定位“我之前发过的那条消息”。插件不改变会话内容,只在聊天窗左边缘提供一条紧凑居中的迷你导航条,把用户消息映射成刻度,支持悬停预览、点击跳转和轨道拖动。

GitHub 仓库地址:

https://github.com/AFAP/dsh-message-minimap

核心功能

下面介绍已核实的能力。

  • 在聊天窗左侧显示一条紧凑居中的迷你导航条。
  • 每条用户消息对应一个刻度,刻度在刻度列上均匀分布。
  • 覆盖全部用户消息,包含分页未渲染的历史;点击未加载的刻度会自动向上翻页。
  • 按消息 id 将 API 数据与 DOM 节点精确关联,点击后平滑滚动到目标消息。
  • 当前视口内的消息刻度自动加粗高亮。
  • 鼠标扫过刻度列时鱼眼放大。
  • 悬停刻度弹出预览卡,显示消息序号、总数、摘要和时间。
  • 点击或按住拖动轨道背景按比例跳转。
  • 流式输出、加载历史、切换会话、窗口缩放时自动跟随。
  • 内容未溢出、无用户消息或在新会话引导页时自动隐藏。
  • 提供中英双语界面文案。
  • 刻度为原生 button,可 Tab 聚焦后回车跳转。

这个插件是只读的:不修改 DOM 业务结构、不拦截自身轨道外事件、不修改/删除任何文件。

安装与启用

使用下面的命令安装:

dsh plugin --profile web add github:AFAP/dsh-message-minimap

安装完成后,重启 dsh web 生效。

典型用法

先准备一个有多条往返消息、且内容已溢出可滚动的会话,然后按下面的步骤验证。

  1. 打开该会话,查看聊天窗左边缘是否出现一条带刻度的细条。
  2. 将鼠标悬停在刻度上,查看消息摘要、序号、总数和时间。
  3. 点击某个刻度,跳转到对应用户消息。
  4. 点击或按住拖动刻度以外的轨道背景,按比例快速跳转。
  5. 如果会话太短、没有用户消息,或处于空白新会话页,导航条会自动隐藏。
  6. 如果宿主路由不可达,插件会降级为只显示已加载消息的刻度。

API 与数据边界

宿主仅新增一个只读路由,用于从会话日志提取用户消息摘要:

GET /api/message-minimap-messages?sessionId=<sessionId>

这个路由需要浏览器信任围栏通过,支持 loopbacktrustedHosts + 同源校验,否则返回 403

请求参数边界如下:

  • 未知 sessionId 返回 404
  • 缺失 sessionId 返回 400
  • API 只返回摘要,不返回完整内容。

摘要字段包括:

seq
id
时间
最多 140 字符摘要
是否含图片

插件不写 localStorage / cookie,卸载即无痕。

适用场景与注意

适合以下场景:

  • 长会话中快速回看自己发过的消息。
  • 分页历史尚未渲染时,通过刻度定位未加载的用户消息。
  • 用悬停摘要确认目标消息,再用点击跳转。
  • 用轨道拖动快速扫读整段会话。

注意以下边界:

  • MVP 暂不支持标注 AI 消息、错误、分支。
  • MVP 暂不支持按文本搜索刻度。
  • MVP 暂不支持持久化开关,导航条始终根据状态自动显示或隐藏。
  • 宿主路由不可达,例如 403404 或网络错误时,插件会退回只显示已加载消息的刻度。
  • DSH 插件以当前 dsh 进程权限运行;安装前应检查源码和 MIT 许可证。

链接

  • GitHub 仓库:https://github.com/AFAP/dsh-message-minimap
  • 目录页:已核实资料未给出具体 URL,这里不列出不确定的地址。
羽毛球分组比赛记分
小程序二维码

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

Xiaoye