English · 简体中文

DSH Lifeline

DeepSeek Harness 右侧消息导航轨道。
每条消息一个刻度 · 悬浮预览抽屉 · 平滑跳转 · 星标回看 · 实时平移动画

Latest release Total downloads GitHub stars MIT License Supported: DeepSeek Harness 0.1.x

--- > **一句话总结:** 常驻右侧导航轨,把对话历史变成可导航的时间线——悬浮预览,点击跳转,星标收藏。使用官方 `--dsw-*` token,与 DSH 生态无缝集成。 DSH Lifeline 是基于 Cordis 组合模型的 **持久化 DSH bundle 插件**。它在对话页面右侧渲染一条垂直导航轨,每条用户消息对应一个刻度,实时跟踪你的阅读位置。悬浮展开预览抽屉;点击任意历史消息即可平滑跳转(按需加载更早历史)。导航轨动态避让其他右侧面板(组件栏、侧栏等),并在面板开合时以协调动画平滑滑入/滑出。 --- ## 功能特性 ### 导航轨 | 能力 | 说明 | | --- | --- | | 逐条消息刻度 | 每条用户消息在垂直轨道上生成一个刻度指示线 | | 阅读位置高亮 | 最接近当前阅读位置的刻度以品牌蓝高亮 | | 中心轴对齐 | 轨道中心轴对齐消息排版的内容边缘——不遮挡内容 | | 常驻显示 | 固定在右侧;会话 < 2 条用户消息时自动隐藏 | | 窄屏自适应 | 视口 ≤ 767px(移动端/窄窗口)时自动收起 | ### 悬浮预览抽屉 | 能力 | 说明 | | --- | --- | | 悬浮展开 | 鼠标悬停轨道展开 260px 宽预览抽屉,显示消息文本 | | 平滑滑入 | 抽屉从右侧以 CSS transition 滑入(可打断) | | 点击跳转 | 点击任意条目平滑滚动到对应消息(按需加载更早历史) | | 星标收藏 | 点击 ★ 标记重要消息;折叠态已标记项显示金色高亮;抽屉顶部「★ 只看标记」筛选 | | 虚拟列表 | 抽屉使用虚拟列表(行高 30px);数千轮对话依然流畅 | | 官方 token | 背景 `--dsw-alias-bg-layer-1`、边框 `--dsw-alias-border-l2`、阴影 `--dsw-shadow-lv3`——与 DSH 输入框/组件栏视觉一致,双主题自动适配 | ### 实时平移动画 | 能力 | 说明 | | --- | --- | | 逐帧同步 | 当右侧面板(组件栏、侧栏)开合时,导航轨每帧跟随对话区宽度变化 | | 220ms ease-out 补间 | 平滑进入/退出,可打断动画——快速 开→关→开 无缝过渡 | | 内容流参照 | 定位基于对话区内容流容器的实时 rect;无过期缓存问题 | ### 会话索引 + 回退联动 | 能力 | 说明 | | --- | --- | | 完整会话索引 | host 侧 REST 端点(`/api/chat-timeline-index`)提供全量用户消息索引 + 增量推送 | | 无需分页加载 | 长对话直接显示所有历史刻度,无需逐页「加载更早」 | | 回退联动 | 被回退/撤回的消息通过 `dsh-rewind` 插件自动从时间线剔除 | ### 面板避让 | 能力 | 说明 | | --- | --- | | 动态右缘跟踪 | 检测右侧工作台(`dsh-better-sidebar`、`dsh-widgets`、`aionui`)并自动平移对齐 | | 多面板感知 | 同时处理两个重叠的右侧面板 | --- ## 架构 - **Host 端**(`lib/index.js`):注册 `dshChatTimeline` 会话投影 + REST 索引端点(`/api/chat-timeline-index`)提供完整历史访问; - **Client 端**(`lib/client.js`):通过 `window.__ModuleLoader__` 导出 `{ name, inject, apply }`;`TimelineRail` 组件挂载于 `conversation.input.dock` 插槽,portal 渲染到 `document.body`; - **定位引擎**:每帧测量内容流容器的 `getBoundingClientRect()`;轨道中心轴对齐排版的 `padding-box` 右缘(如 `Md3f7G_scroll` 的 32px 右内边距); - **样式**:所有表面使用 `--dsw-*` 语义 token——无硬编码 rgba,浅色/深色主题自动适配; - **数据管线**:REST 增量索引 → 会话投影 → 已加载节点 → 按需 `loadOlder`(速度优先)。 --- ## 安装 ### npm 一键安装(推荐) ```sh dsh plugin --profile web add dsh-lifeline ``` 安装完成后重启 `dsh web` 并刷新浏览器。 ### 本地开发(link) ```sh # 1. 克隆仓库 git clone https://github.com/Physicolor/dsh-lifeline.git # 2. 在 profile 中 link # 在 $DSH_HOME/profiles/web/package.json 中添加: # "dsh-lifeline": "link:../../plugins/dsh-lifeline" cd $DSH_HOME/profiles/web && pnpm install # 3. 重启 dsh web ``` --- ## 变更日志 ### v0.1.0(2026-09-01) 独立项目首次发布(原 `dsh-chat-timeline` 基础上重写): - **重写定位引擎**——基于内容流容器实时 rect 逐帧跟随;兼容 `dsh-better-sidebar` / `dsh-widgets` / `aionui` 面板避让 - **完整会话索引**——host REST 端点提供全量消息历史 + 增量推送;无需逐页加载 - **虚拟化渲染**——抽屉虚拟列表 + 刻度邻域切片;长对话流畅 - **中心轴对齐**——轨道中心轴对齐 `Md3f7G_scroll` padding-box 右缘(此前因内容内边距偏移) - **实时平移动画**——面板开合逐帧同步;220ms ease-out 补间,支持打断 - **官方 token 样式**——抽屉与折叠胶囊使用 `--dsw-*` token(`layer-1` / `border-l2` / `shadow-lv2` / `shadow-lv3`);双主题自适应,无硬编码 rgba --- ## 致谢 本项目基于 [jjxjjjjiik-bot/dsh-chat-timeline](https://github.com/jjxjjjjiik-bot/dsh-chat-timeline)(MIT)的源码进行二次开发。插件架构最初参考 [asukasec/dsh-message-preview](https://github.com/asukasec/dsh-message-preview)(MIT)。 --- ## 许可证 MIT © [Physicolor](https://github.com/Physicolor)