dsh-chat-rail:对话区右缘的网页版风格导航竖线

前言

在 DeepSeek Harness(DSH)里做长会话开发时,消息一多,靠滚动条或逐条翻找人类提问的成本会明显上升。DeepSeek 网页版在对话列右缘有一条竖线:每条用户消息对应一根短横线,靠近可展开列表并跳转。Harness 自带聊天视图并不自带这一控件。

下面介绍社区客户端插件 dsh-chat-rail(维护者 Stellight,分类:客户端)。它在对话区右缘复刻同类导航竖线,并针对 Harness 只持有会话日志「窗口」这一限制,提供载入更早历史后再扩展横线的能力。

这是什么

dsh-chat-rail 是 DSH 的静态 dual-face 插件:Host 侧 dsh/index.js 为空实现,功能全部在浏览器侧的 dsh/client.js 中,通过 frame 级浮层 shell.overlay 挂载,无需 Host 注入批准。

数据来源只走公开客户端契约(props.useSessions、会话 binding 快照、聊天视图发布的 [data-chat-flow] 等结构锚点),不向 Host 往返请求。

  • 目录页:https://www.skillhub.cn/plugins/Stellight/dsh-chat-rail
  • 源码与说明:https://github.com/Stellight/dsh-chat-rail
  • 许可证:MIT(package.json 版本 1.0.0,Node >= 20)

核心功能

静默态与悬停面板

右侧一列灰色短横线,当前视口中的那条为品牌蓝;竖线带极淡胶囊底,不遮挡正文。

鼠标靠近或聚焦时,向左展开圆角面板,列出本会话全部人类消息(当前项蓝色高亮;过长文本省略,悬停显示全文)。点击横线或列表行,对应消息滚回视口顶部(跳转留白由 JUMP_OFFSET 控制,默认 16px)。

布局跟随

侧栏收放、详情栏、输入框增高、窗口缩放时会重新测量,竖线贴着正文栏右缘,定位依赖聊天视图发布的 [data-chat-flow] 等锚点,不写死布局类名。

消息很多时,横线在最小间距仍放不下时会按比例抽样,两端必留,横线不超出聊天列;面板仍列出全部消息。

回溯更早的历史

客户端只持有会话日志的一个窗口,竖线只能反映已载入部分。若还有更早历史,面板顶部显示 ↑ 载入更早的消息:

  1. 点击一次把窗口往前扩一页,新横线随之出现;
  2. 加载完成后视图会滚到刚载入批次中最新的那条,便于继续往更早读;
  3. 面板可连点,一路翻到底。

面板交互:指针在竖线或面板上时展开;离开且未钉住时在 CLOSE_DELAY_MS(默认 160ms)后收起;面板内任意点击会钉住;Escape 或点外部收起;点某条消息跳转后收起;加载进行中不收起。

安装与启用

安装命令来自仓库 README,在插件包目录下执行(默认装进 web profile):

node tools/install.mjs              # 默认装进 `web` profile
node tools/install.mjs --profile web
node tools/install.mjs --remove     # 卸载

脚本会把包复制到 <profile>/node_modules/dsh-chat-rail,并在 <profile>/package.json 登记 dependencies 与 dsh.profile.bundles,同时留下 package.json.bak。

装完后需要重启 harness(dsh web)并刷新页面:profile 的 bundle 在启动时合成,新 bundle 下次启动才挂载。之后若只改 dsh/client.js,刷新页面即可(/plugins/... 按请求从磁盘读取)。

插件以当前 DSH 进程及浏览器上下文运行;安装前建议阅读源码与 MIT 许可,确认符合你的环境策略。

典型用法

  1. 按上一节完成安装并重启 dsh web,打开对话页签。
  2. 在有至少一条人类消息(或仍可载入更早历史)的会话中,在聊天列右缘查看竖线与横线;悬停展开列表,点击条目跳转。
  3. 长会话在面板顶点击 ↑ 载入更早的消息,扩展可见横线并继续向上阅读。

可调参数集中在 dsh/client.js 顶部常量,例如横线尺寸(DASH_HEIGHT / DASH_WIDTH)、间距(DASH_GAP_MAX / DASH_GAP_MIN)、RAIL_CLEARANCE、ACTIVE_THRESHOLD、CLOSE_DELAY_MS 等。排查「竖线应出现却未出现」时,可临时将 DIAGNOSTIC 设为 true(默认 false);该模式会通过 session.prompt 发一条自检报告到会话并可能触发 agent 回复,排完应改回 false。

仓库提供本地校验:

node test/smoke.mjs      # 浏览器半区:合成 DOM + 真实 React 渲染
node test/manifest.mjs   # 安装脚本用的 profile manifest 文本改写

适用场景与注意

适合:经常在 Harness Web 端进行长对话、希望用网页版类似的竖线快速在人类消息间跳转的开发者。

注意:

  • 空白会话、窗口内无人类消息且没有更早历史的会话不会出现竖线,属预期行为。
  • 装完没有竖线:常见原因是未重启 harness,启动图早于本 bundle。
  • 启动报 cannot resolve profile bundle:检查 <profile>/node_modules 是否缺本包目录。
  • 社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本插件为社区贡献的客户端 bundle。

结尾

dsh-chat-rail 在 DSH 对话列右缘提供 DeepSeek 网页版风格的导航竖线,并在 Harness 会话窗口机制下支持载入更早历史。安装依赖仓库内的 tools/install.mjs,装后重启 dsh web 并刷新即可使用。

  • 目录:https://www.skillhub.cn/plugins/Stellight/dsh-chat-rail
  • GitHub:https://github.com/Stellight/dsh-chat-rail
羽毛球分组比赛记分
小程序二维码

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

小夜