前言¶
DeepSeek Harness (DSH) 采用插件化架构,允许开发者通过扩展功能增强客户端体验。在 Web UI 的对话界面中,随着消息数量增加,手动滚动查找特定问题变得效率低下。dsh_chat_index 插件旨在解决这一导航痛点,在对话区右边缘提供可视化的索引工具。
核心功能¶
该插件在对话区右边缘展示一列小圆点,每个圆点代表一条用户发送的问题。
- 圆点索引:圆点等间距、紧凑、纵向居中排列。当问题过多超出显示高度时,间距会自动压缩以适应。
- 悬停提示:鼠标悬停在圆点上时,会浮出一个缩略提示卡,显示序号和问题正文的前 100 字。
- 平滑跳转:点击圆点,视图会平滑滚动到对应的消息气泡,气泡会短暂高亮。
- 当前视口高亮:位于当前阅读位置的圆点会高亮显示为品牌色。
- 无历史展开:索引仅基于 DSH 默认的 50 条消息窗口,不会强制展开折叠的历史记录。
- 按需分页:对于窗口外的旧消息,点击时才按需加载至该位置。
- 零构建:Node 端使用 ESM,浏览器端为手写脚本,无构建步骤。
- 不干预状态:不干预思考过程、工具调用或终端输出的折叠/展开状态。
安装与启用¶
前置条件¶
- DeepSeek Harness (DSH) 版本 0.1.1-rc.x 或更高
- Node.js ≥ 18
安装步骤¶
在终端执行以下命令安装插件:
dsh plugin --profile web add github:Barry-Liu-001/dsh_chat_index
安装完成后,重启 DSH Web(执行 dsh web 或重新打开应用会话),对话区右侧即可看到圆点索引(至少有 2 条用户消息时显示)。
原理简述¶
插件通过 cordis.patch.yml 向 Loader 树注入 Node 端入口,注册了精确路由 /chat-index.questions。浏览器端通过 DOM data-chat-flow-key 属性将圆点与消息气泡一一映射。
- 数据获取:请求发送到该路由,Node 端通过
ctx.sessionQuery.readSession读取会话日志,过滤source.kind === 'user'的事件,并返回{seq, time, id, text}列表。结果在 Node 端缓存有效时间小于 10 秒。 - 客户端渲染:零运行时依赖,全部使用 peerDependencies,不干扰 DSH 原生的折叠/展开逻辑。
卸载¶
如需移除插件,执行:
dsh plugin --profile web remove dsh-chat-index