# 用户消息导航条 · Message Minimap
中文 · English
> **在 DeepSeek Harness Web GUI 会话聊天窗的左边缘显示一条迷你导航条:每一条你发送的消息都是刻度,悬停看摘要,点击即跳转,拖动可快速扫读长会话。** [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) --- ## 1. 它解决了什么问题 长会话里想回看"我之前是怎么说的"时,只能一路滚轮硬翻。AI 的回复往往又长又密,自己发过的消息被埋在中间很难找。 本插件在聊天窗**左边缘**加一条细导航条(类似 VS Code 的 minimap): ``` 聊天滚动窗 (overflow-y: auto,长会话分页加载) │ 每一轮对话 = 一个刻度(含未加载的历史,来自官方 turnOutline 投影) │ 视口内的刻度 = 加粗高亮 │ ▼ 悬停刻度 → 预览卡片(第几条 / 共几条 + 提示词摘要 + 时间行) ▼ 点击刻度 → 平滑滚动到该轮(未加载的先按官方 loadThrough(seq) 精确翻页) ▼ 点击/拖动轨道 → 按比例跳转 ``` **只读**:客户端只读取浏览器中已渲染的会话 DOM(聊天行带有稳定的 `data-chat-flow-kind` / `data-chat-flow-key` / `data-chat-turn` 锚点),滚动的是既有的聊天滚动容器。全量数据来自 DSH 官方的 **`turnOutline` 会话投影**(整段日志的轮次大纲:轮次号、`turn/start` 序号、提示词与回复的有界预览),翻页调用官方的 **`sessions.binding(id).session.loadThrough(seq)`**("向后翻页直到窗口覆盖该序号")。 > 因此 **0.5.0 起宿主半部是空实现**:不再开路由、不再解析会话日志文件。这也顺带摆脱了对日志落盘格式的依赖(0.1.7 起日志已改为 `session.v3/v4.jsonl.zstd` 新容器格式)。 > 兼容性:需要 **DSH ≥ 0.1.7**(`turnOutline` 由 `@deepseek-ai/dsh-session-turn-outline` 提供、`dsh-web-app` 组合注册)。旧版本上投影缺失时,导航条自动降级为"仅已加载轮次"模式。 ## 2. 功能特性 - ✅ 聊天窗左侧一条**紧凑居中**的导航条(不铺满全高),不干扰布局。 - ✅ **每一轮对话一个刻度**(即你发过的每条消息),在刻度列上均匀分布(上旧下新),不随消息长短散开。 - ✅ **长会话分页也不怕**:刻度覆盖**全部轮次**(含"加载更多"未渲染的历史)——数据取自官方 `turnOutline` 投影,**不需要你手动往上滑**,打开会话即显示完整刻度。 - ✅ **跳转精确**:未加载的轮次直接调用官方 `loadThrough(seq)` 一次翻到位("向后翻页直到窗口覆盖该轮 `turn/start` 序号"),不依赖逐页试探,也不会跳偏。 - ✅ **当前视口内的刻度自动加粗高亮**,随滚动实时更新。 - ✅ **鼠标扫过刻度列时鱼眼放大**:指针下的刻度变得最长,邻近刻度按距离渐次微长(余弦衰减 + CSS 过渡),一眼定位。 - ✅ **悬停刻度**弹出预览卡片:`我的消息 · 3 / 12` + 提示词摘要 + 独立时间行(时间取自已渲染的该轮)。 - ✅ **点击刻度**平滑滚动到该轮(停靠在视口上方约 18% 处)。 - ✅ **点击/按住拖动轨道背景**按比例跳转,像滚动条一样快速扫读。 - ✅ 流式输出、加载历史、切换会话、窗口缩放时自动跟随(MutationObserver + scroll/resize + 轮询兜底)。 - ✅ 内容未溢出、无轮次、或在新会话引导页时自动隐藏,不干扰布局。 - ✅ 中英双语界面文案,跟随界面语言。 - ✅ 键盘可达:刻度是原生 `