前言¶
在 DeepSeek Harness(DSH)里拉长对话时,界面右侧会有一列短横线组成的 turn rail:每一道横线对应一轮对话,点击可跳回该轮。内置 rail 会突出当前活跃轮次,但无法标记「你自己想反复查看」的位置——例如某次决策、某段 diff、或某条需要对照的答案。长对话里横线外观相近,靠肉眼扫 rail 成本很高。
dsh-starred-turns 是社区维护的客户端插件(维护者 feiyaochang123-sys),在 rail 上为单轮增加书签:被标记的横线会变长并改用强调色,一眼能分辨,仍可点击跳转。下面介绍其定位、能力与安装用法。
这是什么¶
- 名称:
dsh-starred-turns(npm 包名与插件 id 一致) - 分类:客户端(
dsh.client.platform为web) - 版本(package.json):
0.1.0 - 许可证:MIT
- 目录页:SkillHub 插件页
- 源码:GitHub — feiyaochang123-sys/dsh-starred-turns
插件不修改聊天主包,而是从外部装饰由 @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 进程/客户端环境中运行,权限与宿主一致。
典型用法¶
- 安装并重启 DSH(或触发插件扫描)后打开任意已有 turn rail 的长对话。
- 在右侧 rail 上找到需要反复查看的轮次,将指针移到对应短横线上。
- 右键该横线:横线变长并变为强调色,表示已书签。
- 之后在长对话中滚动正文时,用 rail 上「满宽 + 强调色」的横线快速定位该轮;点击仍可
Jump to turn N(与内置行为一致)。 - 若不再需要标记,在同一横线上再次右键取消书签。
无需额外配置项或命令行参数;手势即全部交互。
实现要点(便于评估与二次开发)¶
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)。