跳到主内容

dsh-milestone

18Star1Fork2Issue0Watching

为 DeepSeek Harness Web 会话右侧追加 Git 风格的圆点时间线,圆点对应每条提问,支持点击跳转、悬停元信息、站内搜索、收藏书签、键盘导航、轮次折叠、聚焦模式与跨会话搜索。

机审证据5/5方法论数据来源安装命令持续维护DSH 版本风险扫描
机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
TypeScript
License
MIT
分支
main
deepseekdeepseek-harnessdsh-pluginmilestonenavigation

安装

命令web profile
$ dsh plugin --profile web add dsh-milestone

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 SnowCrescenter-tech/dsh-milestone:先查看仓库 https://github.com/SnowCrescenter-tech/dsh-milestone 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

在 DeepSeek Harness 的 Web 会话右侧追加一条类似 Git 提交图的圆点时间线,一个圆点对应一条提问,点击跳到任意消息;专为多轮长对话场景设计,解决滚动大海捞针的痛点。

核心能力

  • 一键跳转:点击任意圆点平滑滚动到对应提问,不用手动翻几百行
  • 站内全文搜索:在圆点旁输入关键词,匹配完整消息内容(不是 80 字摘要),实时显示 N/M 命中数,回车跳到下一条,Esc 一键清空
  • 当前进度高亮:滚动会话时,离视口最近的提问圆点显示白环,永远知道「读到哪了」
  • 状态徽章:圆点自动标识轮次健康状态——出错红环、达到上限黄环、重试橙环、运行中/等待输入蓝/黄脉冲
  • 加载更早历史:顶部「···」按钮分页加载更早消息,并提示当前窗口覆盖多少条
  • 收藏书签:圆点可点星收藏并按会话持久化到本地,顶部「★」一键切换只看收藏
  • 键盘导航:里程碑条是焦点组件,↑↓ 移动、回车跳转、Home/End 首尾,全程不用鼠标
  • 悬停元信息:悬停圆点查看消息预览、相对时间、第 N 轮、用时、结束原因、首字延迟(TTFT)、tokens/秒、所用模型与输入/输出 token
  • 等距圆点 + 蓝色渐变:圆点固定间距永远点得准;最新最深、最早最浅,顺序一眼可辨
  • 轮次分组与折叠:按轮次聚类并支持折叠长轮次;可一键查看全部提问列表(序号 + 轮次 + 预览)
  • 复制与 fork:悬停一键复制该条提问全文,或从选中消息处 fork 出新分支会话
  • 聚焦模式:淡化 AI 思考区块,让正文更好读;悬停或展开时自动恢复
  • 深链接:跳转时 URL 带 #msg= 锚点,刷新或分享后回到同一条消息
  • 跨会话搜索:搜索所有会话的消息内容(走宿主原生索引),点击结果直接打开对应会话
  • 中英双语:跟随宿主界面语言自动切换

技术实现

  • 语言: TypeScript + React 18
  • 关键依赖: @deepseek-ai/cordis(宿主插件生命周期)、@deepseek-ai/dsh-client-runtime(store、locale、useSession)、@deepseek-ai/dsh-client-ui-slots(slot 注册)、@deepseek-ai/dsh-client-ui-layout(shell.overlay 槽位声明)
  • 架构模式: 双半边浏览器插件——Node 半边仅声明 apply() 占位(让宿主 loader 能识别),UI 半边通过 cordis fiber 在浏览器端注入两个 slot:shell.overlay(root scope,挂载 MilestoneOverlay)+ milestone.rail(自声明 session scope,挂载 MilestoneRail);纯逻辑(搜索、状态、位置计算、圆点配色)抽离到 rail-logic.ts 等纯函数文件,单测覆盖
  • 入口文件: src/index.ts(node 占位)、src/client/index.ts(client 注册)、src/client/MilestoneRail.tsx(核心组件,1126 行)

适用场景

当你和 AI 聊了几十甚至上百轮,想找回「第 17 轮那个提问」时,不用再滚轮翻几百行——在右侧时间线点一下就到;同时悬停就能看到这轮用了多久、什么模型、有没有出错等元信息。长对话调试、复盘、引用历史提问时尤其有用。

前置依赖与兼容性

依赖最低版本说明
@deepseek-ai/cordis^4.0.1宿主插件运行时(peerDependencies)
@deepseek-ai/dsh-client-locale^0.1.0-rc.6国际化字典命名空间注册(peerDependencies)
@deepseek-ai/dsh-client-runtime^0.1.0-rc.6useSession、defineStore、locale register(peerDependencies)
@deepseek-ai/dsh-client-ui-slots^0.1.0-rc.6slot 注入与声明合并(peerDependencies)
React^18.2.0组件渲染(peerDependencies)
Node.js未声明源码未在 package.json#engines 声明;README 提示宿主官方要求 Node ≥ 24

平台与原生模块:源码未声明 os/cpu 限制,无原生模块依赖,纯前端组件。

安装方式

dsh plugin --profile web add github:SnowCrescenter-tech/dsh-milestone

配置项

本插件无需额外配置。安装后打开 Web UI 的多轮会话即可在右侧看到里程碑条;所有交互通过 UI 上的按钮和键盘完成,无环境变量、无 Schema、无配置文件。

常见问题

Q: 安装后没有看到里程碑条怎么办?

A: 当前会话的提问不足 2 条时会自动隐藏——这是为了避免单条消息时不显示空条;至少发起两条提问后再打开会话即可看到。极少数情况下,如果会话视图布局异常,里程碑条会因找不到滚动容器 [data-conversation-scroll] 而隐藏,请检查宿主是否运行在最新 Web UI 模式下。

Q: 搜索能搜到没加载进窗口的历史提问吗?

A: 不能。搜索范围就是当前已加载的消息窗口;要搜更早的消息,先点顶部「···」加载更早页面,被加载的消息才会进入搜索索引。窗口外的历史永远不可被搜到,这是宿主分页模型决定的。

Q: 书签会跨会话共享吗?存在哪里?怎么彻底清除?

A: 不共享。书签按会话隔离,每会话一份独立列表。底层走宿主 defineStore 引擎,持久化到浏览器 localStorage,键名格式 dsh-milestone.bookmarks.<sessionId>。卸载插件不会自动清除数据,需要在浏览器开发者工具里手动清理该域名下的对应键。

Q: 圆点颜色为什么不一样?蓝色圆点旁边的红环、黄环是什么?

A: 圆点默认使用蓝色渐变:最新提问颜色最深、最早最浅,方便一眼看出对话顺序。叠加的颜色环代表该轮的健康状态——红环表示该轮出错、黄环表示达到 token 上限、橙环表示模型重试中、蓝色脉冲表示正在运行(生成 token)、黄色脉冲表示正在等待用户输入。

Q: 这个插件会修改 DeepSeek Harness 的源码吗?卸载会留痕迹吗?

A: 不会。它通过官方 slot 机制挂载到宿主声明的 shell.overlay 槽位以及自声明的 milestone.rail 子槽位上,不修改任何宿主代码。卸载插件即可彻底还原到原生 UI。

Q: 顶部的「全部提问」按钮和圆点列表有什么区别?

A: 圆点列表受搜索和收藏过滤影响——你筛掉的不显示;「全部提问」面板永远展示当前会话的每一条提问(序号 + 轮次 + 前 80 字预览),点击即跳。当你筛掉了一批想回到全集快速定位时,用它最快。

Q: 跨会话搜索的结果数量看起来总是不够,是不是出问题了?

A: 不是。跨会话搜索走的是宿主原生 session.search RPC,结果片段被截断到 ≤ 240 字符、单次最多 20 条;如果命中过多会出现「结果已截断」提示,请细化关键词。这是宿主索引层的行为,不是本插件的限制。

上手难度

入门 — 安装即用,无配置项,会话中出现提问就自动出现里程碑条;所有功能按钮都附带中文 title/aria-label,鼠标悬停即可理解。

已知问题与限制

  • 搜索范围 = 当前已加载的消息窗口,窗口外或未加载的历史不可被搜到(MilestoneRail.tsx:114-124,依赖宿主 loadOlder)
  • TTFT 与 tokens/秒依赖 turn-tail 元数据,未完成的 turn 或窗口外的轮次会自动隐藏该行
  • 「运行中」与「等待输入」徽章只点亮最新一条可见提问;若该轮提问已滚出窗口则无脉冲
  • 书签按会话隔离,不跨会话共享
  • 模型与 token 用量依赖 assistant 节点元数据,部分场景缺失时自动隐藏该行
  • fork 从选中消息所在轮次开始分支,需要在会话列表手动打开子会话
  • 深链接的目标消息若早于已加载窗口,会自动触发一次 loadOlder;极端深的历史可能定位失败
  • 跨会话搜索依赖宿主 session.search 索引,片段 ≤ 240 字符、最多 20 条结果
  • 聚焦模式仅作用于当前会话视图的思考区块,不会影响其他插件或工具
  • 尚无全局快捷键聚焦里程碑条(需 Tab 键切换焦点到圆点列表)

查看使用指南 →

该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/SnowCrescenter-tech/dsh-milestone)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录