用dsh-navbar在DeepSeek Harness对话区快速跳转用户消息

前言

DeepSeek Harness(以下简称 dsh)把模型适配、工具、会话日志和 Web 界面都做成插件,核心理念是「一切皆插件」。日常用 Web UI 跑智能体时,一轮对话往往很长:你改过需求、追问过报错、中途又插过几句补充。回头想找某一条自己发过的消息,只能在对话区里来回滚。

社区插件 dsh-navbar 做的事情很具体:在对话区右缘放一串等距节点,每条 user 消息对应一个圆点,悬停看预览,点击跳回去。本文根据插件目录页、GitHub 仓库 README 和源码交叉核对后,说明它是什么、怎么装、怎么用。

需要先分清两件事。DeepSeek Harness 本身是 DeepSeek 开源的智能体运行时;而 DeepSeek Harness 插件库 是独立的社区目录,与 DeepSeek / 幻方没有从属关系,不是官方应用商店。目录页把 dsh-navbar 标成「官方 bundle 插件」,指的是它采用 dsh 的官方组合包(bundle)形态——dsh.bundle 加上浏览器端 client 通道,并不是 DeepSeek 官方出品。

这是什么

dsh-navbar 是一款界面增强插件,由 vlln 维护,npm 包名为 @vlln/dsh-navbar,当前仓库版本号为 0.3.0,许可证 MIT。GitHub 仓库在 2026-08-17 显示 31 颗星,主要语言是 TypeScript。社区目录于 2026-08-15 收录,分类为「界面增强」。

它解决的问题可以一句话概括:在 Chat 视图右缘用节点串索引当前页面里已经渲染出来的 user 消息,让你少滚几次对话区。

实现上它是纯浏览器端插件。Node 半边的 apply() 是空函数,只负责让组合包能挂到 profile 上;真正的导航条、预览卡和精选按钮都写在 client bundle 里。package.json 里声明了 "platform": "web",并要求 Node.js >=22.19.0、dsh >=0.1.0-rc.5。仓库 README 写明:它按 dsh-external 仓库 issue 144 的「对话节点导航条」规格实现,不注册面向模型的工具,也不另开数据通道。

核心功能

对照目录页「更多介绍」、README 能力表和 src/client/index.ts,当前版本可以确认的能力如下。

1、右缘节点串。对话区右侧出现一列纵向圆点,每条 user 消息一个节点。平时几乎隐形,鼠标悬停到导航条附近才会浮现。当前会话里少于 2 条 user 消息,或者你不在对话页时,导航条会自动隐藏。

2、跟随阅读位置。正在阅读的那一条会变成约 22px 宽的品牌蓝胶囊(源码里叫激活药丸),滚动对话区时它会跟着移动。

3、悬停预览。光标停在节点上,左侧弹出预览卡,文案按 6 行截断,视觉对齐 Web UI 自带的 HoverCard。整条导航条(含节点之间的空隙)都会响应悬停:预览跟随最近的那个节点切换,对应圆点拉长成灰色药丸,用来指示「现在点下去会跳到哪一条」,中间没有死区。

4、点击跳转。不必精确点中 7px 的小圆点,整条导航条都可点,按最近节点跳转。跳转后平滑滚到对应消息,并加上品牌蓝高亮环。源码里还给药丸加了扩大热区,降低瞄准成本。

5、滚轮切换。光标停在导航条上时滚动滚轮:向上一条、向下来一条,并阻止对话区本身跟着滚。源码里对滚轮做了约 120ms 节流,避免一次滚轮脉冲连跳多条。

6、滑动窗口。节点超过 11 个时,导航条只显示当前激活位置附近的一段(激活节点前后各约 5 个),两端用细点提示还有更多,避免右缘被圆点堆满。

7、消息精选 pin。把鼠标移到 assistant 消息的操作条上,在 copy 与 Good response 之间会出现 📌 按钮。点一下,这一轮在导航条上会变成金色细长椭圆盘,恒可见;预览卡带 📌 徽标,点击会直达被精选的那条回复。再点一次取消精选。精选状态按会话写在浏览器 localStorage 里,刷新页面会保留。

数据从哪来,也决定了它的边界。README 写得很清楚:零数据通道依赖,只靠官方 user 行锚点属性 data-time-hover-root(注释里写的是 0806 起的 UserStyleBubble 行)驱动,无轮询、无路由、无工具。因此导航条索引的是当前对话区已经渲染出来的 user 消息,并不会在后台把未加载进 DOM 的更早历史全部拉进来。

安装与启用

先确认本机已经能启动 dsh 的 Web UI。官方仓库给出的起步方式是:

npx @deepseek-ai/dsh web

默认界面在 http://127.0.0.1:3080dsh-navbar 只声明了 web 平台,装到 headless 这类不带浏览器界面的 profile 上没有意义。

社区目录页给出的安装命令是:

dsh plugin add github:vlln/dsh-navbar

仓库 README 的推荐写法更明确,会装进 web profile,并钉在 main 分支(构建产物已经入库,git 源安装不会再触发本地构建):

dsh plugin --profile web add "github:vlln/dsh-navbar#main"

如果本地已经克隆了仓库,也可以从目录安装:

git clone https://github.com/vlln/dsh-navbar.git
cd dsh-navbar
dsh plugin --profile web add .

目录页还提示:如需可复现安装,请固定 commit 哈希。写法是把 #main 换成具体提交,例如仓库 main 在 2026-08-15 的提交:

dsh plugin add github:vlln/dsh-navbar#10e9d1546db28c499687d66a369e548cd3f52237

装完需要重启 web 才会生效。之后可以在设置页的「插件」面板里停用或重新启用。安装即用,没有额外命令,也不向模型注册工具。

插件以当前 dsh 进程的权限运行,安装时可能执行代码。装之前请自己打开 GitHub 仓库看源码和 MIT 许可证,不要只凭目录页的一句话安装。

使用方法

打开一个至少包含两条 user 消息的 Chat 会话。对话区右缘会出现节点条。

1、把鼠标移到右缘节点串上,预览卡会显示对应 user 消息的开头。
2、点击节点(或节点附近的空白)跳到那一条;跳转后会有蓝色高亮环提示落点。
3、光标停在导航条上时,用滚轮在相邻 user 消息之间切换。
4、需要标记某次回复时,悬停该条 assistant 消息的操作条,点 📌。对应轮次的节点变成金色椭圆盘;再点一次取消。
5、系统开启了「减少动态效果」(prefers-reduced-motion)时,插件会关掉过渡动画。

如果导航条没有出现,可以按下面几项自查:当前是不是 Chat 视图;这条会话里是否已经有至少两条 user 消息;安装后有没有完整重启 dsh web(只刷新浏览器不够);设置里该插件是否被停用。

适用场景与注意事项

比较适合这些情况:Web UI 里会话已经滚得很长,经常要跳回自己某句原话;或者希望把某次关键回复钉在导航条上,过一会儿还能一眼找到。它不改变智能体循环,也不增加模型可调用的工具,只改你在浏览器里怎么读对话。

使用前有几条边界需要知道。

第一,这是社区插件,不是 DeepSeek 官方应用。目录是独立站点;仓库 LICENSE 写明版权归 Sam Gao(vlln),2026 年,MIT 许可。所谓「官方 bundle」只描述打包形态。

第二,它绑定的是 Web UI 当前的 DOM 契约。user 行靠 data-time-hover-root,精选按钮挂在官方 conversation.chat.assistant-actions 插槽。dsh 网页结构若再改一版,导航条可能对不齐或直接不显示。源码注释里也能看到它为 0808、0810、0811 几轮滚动判定做过适配,说明这类界面插件会跟着宿主版本走。

第三,未渲染进页面的更早消息不会进入节点串。如果你需要「进入会话就覆盖全部历史、不必等翻页」那种能力,这款插件的设计目标不在这里。

第四,精选状态存在本机浏览器的 localStorage,换浏览器、清站点数据或换设备都不会带过去。

第五,安装前检查源码与许可证。插件和当前 dsh 进程同权;目录页也写了同一条警告。

小结

dsh-navbar 把长对话里「找回某句 user 消息」收成右缘一串节点:悬停预览、点击跳转、滚轮切换,还可以把关键回复精选成金色节点。它体积小、不注册工具、走官方 bundle 的 web client 通道,装完重启即可用。

目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-navbar/

GitHub:https://github.com/vlln/dsh-navbar

羽毛球分组比赛记分
小程序二维码

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

小夜