前言¶
DeepSeek Harness(命令名 dsh)是 DeepSeek AI 开源的智能体运行时,目前仍是开发者预览。它的核心理念是「一切皆插件」:模型、工具、技能、会话、沙箱和界面都可以用插件替换或组合。社区里还有一份独立的插件目录站点 deepseek-harness-plugin.com,它和 DeepSeek / 幻方没有官方从属关系,收录的是带 dsh-plugin 话题的社区仓库。
用网页界面跑长任务时,一轮对话很容易堆出几十上百条提问。模型会思考、调工具、贴代码块,会话视图被这些内容撑得很长。想回到「第十几轮那个问题」时,往往只能靠滚轮往上翻。SnowCrescenter-tech 维护的 dsh-milestone 在会话右侧加一条圆点时间线:每一条提问对应一个圆点,悬停看元信息,点击跳到那条消息。
本文按插件目录页、GitHub 仓库 README / package.json / cordis.patch.yml、npm 包页,以及 DeepSeek Harness 官方仓库交叉核对后整理。
这是什么¶
dsh-milestone 是一款面向 DeepSeek Harness Web 界面的会话里程碑导航条,由 SnowCrescenter-tech 维护,仓库地址是 SnowCrescenter-tech/dsh-milestone。社区目录把它归在「会话与消息」分类,许可证为 MIT,主要语言是 TypeScript。仓库和 npm 上的当前版本都是 0.6.0(2026-08-14 发布)。package.json 里 dsh.client.platform 写的是 web,也就是说它挂在网页界面上,不是终端 TUI 插件。
截至 2026-08-17,GitHub 显示 17 颗星;目录页当时仍标注 14 颗,星标以仓库页面为准。GitHub 仓库创建于 2026-08-13,最近一次推送在 2026-08-14。
它解决的问题很具体:长对话里提问被代码块和工具调用淹没,缺少一张「提问地图」。插件不改 harness 源码,用官方 slot 挂到 shell.overlay 上,读会话快照后画出圆点列表。Node 半边是空的 apply(),真正干活的是浏览器半边。
核心功能¶
README 把能力写得很细,下面按使用路径归成几组,都来自仓库说明,不是额外推断。
圆点时间线。 会话右侧出现一条等距圆点轨:最新提问颜色最深、最早最浅,看起来像 Git 提交图。点击圆点会平滑滚动到对应消息;滚动会话时,离视口最近的那条提问会亮白环,用来标「读到哪了」。圆点按轮次分组,长轮次可以折成一条。历史没加载完时,顶部会出现「···」,点一下继续加载更早的消息,并提示当前已显示多少条。圆点超出可视区时,鼠标停在里程碑条上滚轮即可滑动。
悬停元信息。 鼠标停在圆点上,会看到序号、轮次、消息预览(前 80 字)、相对时间、用时、结束原因、首字延迟(TTFT)、tokens/秒,以及这一轮用的模型和输入/输出 token 数。README 写明这些字段来自 harness 原生 session 快照(turnTimings / timeline.turns / turn-tail),插件自己不另接计费或遥测服务。圆点还会按轮次健康状态画徽章:出错红环、达到上限黄环、重试橙环、运行中/等待输入蓝/黄脉冲。
搜索、书签和提问列表。 搜索框按完整消息内容过滤圆点(不是 80 字摘要),实时显示命中数 N/M,回车跳到下一个匹配,Esc 清空。顶部可以展开「全部提问」面板,一次看到序号、轮次和预览。悬停时还能点星收藏,刷新后仍在;顶部「★」只看收藏。另有跨会话搜索,走 harness 原生索引 session.search,点击结果会打开对应会话。
复制、fork 和深链接。 悬停可以复制该条提问全文,或「从此处 fork」开一个分支会话。跳转时 URL 会带上 #msg= 锚点,刷新或把链接发给自己,可以回到同一条消息。界面文案跟随 harness 语言在中英文之间切换。聚焦模式会淡化 AI 的 thinking 区块,悬停或展开时再恢复。
键盘操作。 里程碑条是一个焦点组件:↑↓ 移动、回车跳转、Home/End 到首尾。README 也写了目前还没有全局快捷键直接聚焦这条轨,需要用 Tab 切过去。
安装与启用¶
社区目录页给出的安装命令是:
dsh plugin add github:SnowCrescenter-tech/dsh-milestone
目录页同时提醒:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前请检查源代码仓库和许可证;如需可复现安装,请固定 commit 哈希。当前 main 上 0.6.0 对应的提交是 c238f8c5d4afe153ede8559e5f7e3d1a652b6327,可以写成:
dsh plugin add github:SnowCrescenter-tech/dsh-milestone#c238f8c5d4afe153ede8559e5f7e3d1a652b6327
仓库 README 另外推荐从 npm 装进指定 profile(包名就是 dsh-milestone,与 GitHub 仓库同名):
# 从 npm 安装(README 推荐)
dsh plugin --profile demo add dsh-milestone
# 或从 GitHub 源码安装
dsh plugin --profile demo add "github:SnowCrescenter-tech/dsh-milestone#main"
# 启动 Web UI
npx @deepseek-ai/dsh web # → http://127.0.0.1:3080
README 要求 Node.js >= 24,并注明这是 harness 官方要求。装完后打开一个至少两条提问的多轮对话,会话视图右侧才会出现里程碑条;只有一条提问时,按仓库说明不会画出这条轨。
典型用法¶
装好并打开 Web UI 之后,按 README 的操作路径走即可:
- 进入一个多轮会话(至少 2 条用户提问)。
- 看右侧圆点轨:从上到下对应提问的先后;滚动正文时,白环会跟着当前视口走。
- 悬停某个圆点,核对预览、轮次、耗时、模型和 token;需要反复回访就点星收藏。
- 点击圆点,页面会滚到那条消息。若要分享或稍后回来,看地址栏是否带上了
#msg=。 - 用搜索框按关键词过滤;命中后回车依次跳转。当前窗口里没有的更早历史,先点顶部「···」加载再搜。
- 需要一次看完全部提问时,打开顶部列表面板;需要只看对话正文时,打开聚焦模式淡化 thinking 区块。
- 想从某一轮另开分支,用悬停菜单里的 fork;fork 之后要到会话列表里手动打开子会话。
悬停卡片的信息结构,仓库 README 画成了下面这样(字段是否出现取决于该轮快照是否完整):
第 3 / 5 条 · 第 2 轮 ☆ 复制 ✂
帮我优化这段代码的性能
5 分钟前 · 用时 1m30s · 首字 1.2s · 12.4 tok/s
v4 · continue · 1280 / 2560 tok
适用场景与注意事项¶
适合已经在 DeepSeek Harness 网页界面里跑长对话的人:编码智能体连着改了几十轮、调研任务里夹着大量工具输出、事后要对照「当时问了什么 / 用了哪个模型 / 花了多少 token」。它不提供回退工作区、不改模型行为,只做导航和只读元信息展示。
使用前有几条边界需要知道,均来自仓库「已知限制」:
- 站内搜索只覆盖当前已加载的消息窗口(初始 50 条)。更早的历史要先点「···」加载进来,才能被搜到。
- TTFT、tokens/秒依赖 turn 位置数据;窗口外或未完成的 turn 会自动隐藏这两项。
- 运行中 / 等待输入的脉冲徽章只点亮最新一条可见提问;如果那一轮的提问已经滚出加载窗口,就不会有脉冲。
- 书签按会话隔离,不跨会话共享;存储走 harness 的
store.persist(每会话 localStorage)。 - 模型名和 token 用量依赖该轮 assistant 节点元数据,缺失时这一行不显示。
- fork 从选中消息所在轮次开始分支,不会自动打开子会话。
- 深链接的目标如果早于已加载窗口,插件会先尝试加载更早历史再定位;受加载上限约束,极端深的历史可能定位失败。
- 跨会话搜索依赖
session.search,结果是片段(≤240 字符)、最多 20 条。 - 聚焦模式只作用于当前会话视图的思考区块,不影响其他插件或工具卡片。
安全方面,目录页写得很明确:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前应打开 GitHub 仓库 看源码和 MIT 许可证。需要可复现环境时,不要长期跟踪浮动的 main,改用上面的 commit 哈希。
小结¶
dsh-milestone 把长会话里的每一次提问收成右侧一条圆点轨:悬停看时间、轮次、耗时和用量,点击跳转,搜索、书签和 #msg= 深链接用来反复回访。它挂在官方 shell.overlay 上,不改 harness 源码,但只服务 Web 界面,并且搜索、徽章、用量等能力都受已加载消息窗口约束。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-milestone/
GitHub:https://github.com/SnowCrescenter-tech/dsh-milestone