dsh-starred-turns:在对话右侧 turn rail 上标记并快速回到关键轮次

前言

在 DeepSeek Harness(DSH)里拉长对话时,界面右侧会有一列短横线组成的 turn rail:每一道横线对应一轮对话,点击可跳回该轮。内置 rail 会突出当前活跃轮次,但无法标记「你自己想反复查看」的位置——例如某次决策、某段 diff、或某条需要对照的答案。长对话里横线外观相近,靠肉眼扫 rail 成本很高。

dsh-starred-turns 是社区维护的客户端插件(维护者 feiyaochang123-sys),在 rail 上为单轮增加书签:被标记的横线会变长并改用强调色,一眼能分辨,仍可点击跳转。下面介绍其定位、能力与安装用法。

这是什么

插件不修改聊天主包,而是从外部装饰由 @deepseek-ai/dsh-client-ui-chat 绘制的 rail,在现有「短横线 + 点击跳转」交互上增加右键书签,并复用 rail 自身的 scaleX 几何,避免挤乱布局。

核心功能

依据 README,已核实能力如下。

右键书签 / 取消书签

在某一道的横线上右键即可为该轮加书签;再次右键同一道横线则取消。书签状态下,横线从默认 resting 长度(未加载进 transcript 的轮次 scaleX 0.4,已加载为 0.6)伸长到 rail 全宽(scaleX 1),颜色从中性边框色变为强调色。

按会话隔离

书签以当前选中的 Session id 为会话键。会话 A 的第 5 轮与会话 B 的第 5 轮互不影响。

持久化

书签写入客户端 store dsh.starred-turns.v1,结构形如:

{ "byConversation": { "session-…": ["1", "7"] } }

Shell 通过 localStorage 做 persist。在 Desktop 构建下,页面 origin 为稳定的 dsh-app://app,书签可跨应用重启保留。在普通浏览器模式下,Host 每次启动可能使用新的 loopback 端口,localStorage 按 origin(含端口)隔离,跨进程重启后书签不会保留。

不改变 rail 排版

rail 固定 10px 间距(pitch);插件只改单道横线自身的 scaleX,不增宽增高 rail 列,避免布局抖动。

安装与启用

官方安装命令(来自 README):

dsh plugin add dsh-starred-turns

也可在 profile 的 cordis.patch.yml 中手工写入:

- insert:
    - id: starred-turns
      name: dsh-starred-turns

安装后需重启应用(或等待 HMR 重新扫描):Host 仅在启动时扫描插件包。

DSH 生态主张「一切皆插件」;SkillHub 等为社区目录,与 DeepSeek / 幻方无官方从属关系,安装前请自行查看源码与 MIT 许可证。插件在当前 dsh 进程/客户端环境中运行,权限与宿主一致。

典型用法

  1. 安装并重启 DSH(或触发插件扫描)后打开任意已有 turn rail 的长对话。
  2. 在右侧 rail 上找到需要反复查看的轮次,将指针移到对应短横线上。
  3. 右键该横线:横线变长并变为强调色,表示已书签。
  4. 之后在长对话中滚动正文时,用 rail 上「满宽 + 强调色」的横线快速定位该轮;点击仍可 Jump to turn N(与内置行为一致)。
  5. 若不再需要标记,在同一横线上再次右键取消书签。

无需额外配置项或命令行参数;手势即全部交互。

实现要点(便于评估与二次开发)

README 说明 rail 上每个刻度为带 data-index 的 button,可见横线由 ::before 绘制。插件在外部完成三件事:捕获阶段 contextmenu 切换书签;MutationObserver(监视 data-index 与子节点插入)加 store 订阅,为对应刻度写上 data-dsh-starred-turn;样式表将该属性映射为 scaleX(1) 与强调色。Observer 刻意不监视插件自写属性,并在写入前读取当前属性,避免自触发循环。

本地开发(README Develop 节):

npm install
npm run build   # src -> lib(客户端 bundle 为 shell 的 closure-factory 格式)
npm test        # bundle 形态、导出面、选择器目标

入口大致为 src/client.js(store、绘制、右键、样式)与 src/index.js(Host 侧 no-op,供 Loader 入口)。

适用场景与注意

适合:经常在 DSH 里做长链推理、对照多轮 diff 或答案、需要在 rail 上固定几个「锚点」再跳读的开发者。

注意:

  • 仅客户端装饰,不改变服务端或会话内容本身。
  • 浏览器 loopback 模式下书签可能无法跨次启动保留;需要长期保留时请使用 Desktop 构建或接受「单会话内 + 同 origin」的持久化范围。
  • 安装第三方插件前请阅读 仓库源码 与许可证;勿假设目录站等同于官方应用商店。

结尾

dsh-starred-turns 用右键在 turn rail 上为关键轮次加书签,并用「满宽横线 + 强调色」在长对话里保持可发现性,与会话级持久化(Desktop 下可跨重启)配合,补上了内置 rail 缺少的「用户自选标记」这一位能力。进一步了解可访问 SkillHub 目录页 与 GitHub 仓库(含 中文 README)。

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

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

小夜