前言¶
在使用 DeepSeek Harness (DSH) 进行 Web 会话开发时,长对话场景下定位历史提问或上下文切换点需要频繁手动滚动。这种方式效率低下且容易迷失。dsh-anchor-rail 插件通过左侧固定导轨,提供全局会话导航能力。
插件简介¶
dsh-anchor-rail 是一个客户端插件,由开发者 lyfZhixing 维护。它解决的核心问题是:如何在长会话中快速定位用户提问,并处理上下文压缩带来的历史数据展示问题。
核心功能¶
- 左侧导轨展示:在会话聊天区左侧展示全部用户问题的锚点,不随页面滚动移动。
- 压缩段聚合:连续的已压缩问题折叠为一个虚线分组锚点(如
▸ 已压缩 · N 个问题),避免导轨因压缩内容过多而拥挤。 - 悬浮交互:鼠标悬浮在导轨或任意锚点上时,右侧展开对应的锚点名称列表(
#序号 + 问题文本)。 - 分组展开:悬浮虚线分组锚点时,切换为该段已压缩问题的子列表;悬浮普通锚点仅显示未压缩列表。
- 密集兜底:当锚点间距小于 24px 时,名称面板自动变为紧凑滚动列表,防止文字重叠。
- 高亮与跳转:当前阅读的问题对应锚点/名称高亮加长。点击锚点或名称可快速跳转至对应问题。
- 保留历史:上下文压缩后的历史锚点会被保留(聚合进虚线分组或单独显示),不会因压缩而丢失。
安装与启用¶
推荐使用 DSH 官方插件命令进行安装:
dsh plugin --profile web add dsh-anchor-rail
若需本地调试或自定义,可将仓库放置于 ~/.dsh/profiles/web/plugins/dsh-anchor-rail/,并在 package.json 中配置依赖与 bundle。
工作原理¶
该插件分为 Host 和 Client 两半:
* Host 半:通过 sessionQuery.readSession 读取完整原始日志,提取用户提问事件,利用压缩检查点标记已压缩历史,并通过路由 /dsh-anchor-rail/anchors 提供数据。
* Client 半:处理导轨渲染、悬浮列表逻辑及滚动跳转。当跳转目标在当前窗口外时,会自动调用 loadOlder() 逐页加载历史数据。
典型用法¶
- 打开 DSH Web 会话页面。
- 导轨会自动出现在左侧(仅当问题数大于 2 且内容可滚动时显示)。
- 悬浮导轨查看全部锚点名称,点击任意名称跳转。
- 悬浮虚线分组查看已压缩问题的子列表。
注意事项¶
- 自动隐藏:问题少于 2 个或内容无需滚动时,导轨自动隐藏。
- 滚动列表:锚点间距小于 24px 时,名称面板自动变为紧凑滚动列表。
- 许可证:MIT。
总结¶
dsh-anchor-rail 通过左侧导轨和悬浮交互,解决了长会话中快速定位历史提问的问题。它正确处理了上下文压缩后的数据展示,适合需要在复杂会话中快速回溯的开发者。