dsh-chat-history:DeepSeek Harness 的历史消息目录

在 DeepSeek Harness (DSH) 中处理长对话时,传统的上下翻页方式难以快速定位历史节点。dsh-chat-history 插件通过在会话头部添加一个独立的“History”标签页,将当前会话的用户消息转化为可点击的目录,解决了长会话导航困难的问题。

核心功能

该插件实现以下功能:

  1. 消息目录化:将当前会话的用户消息提取并转换为可点击的目录列表。
  2. 点击跳转:点击目录项后,自动切换回 Chat 标签页,平滑滚动到目标消息位置。
  3. 噪声过滤:自动过滤工具调用、思考过程、命令等非用户消息,保持目录整洁。
  4. 自动分页:在标签页激活状态下,自动分页加载旧历史(每页 50 条消息),直到加载完整。
  5. 零槽位冲突:注册为 conversation.view 会话标签页,与官方的 Trajectory 标签页并排显示,不占用 details 槽位,不影响官方工具调用详情面板。

安装与启用

使用官方插件安装命令将其添加到指定的 profile(例如 web):

dsh plugin --profile web add dsh-chat-history

安装完成后,需要重启 dsh web 进程以使插件生效。

典型用法

  1. 进入会话:在任意会话的头部标签栏中,新增了 History 标签页( alongside Chat 和 Trajectory)。
  2. 查看目录:点击 History 标签页,目录会按顺序列出所有用户消息。每条目显示序号和单行截断标题,鼠标悬停可查看完整文本。
  3. 加载历史:标签页头部会显示加载状态(“Loading earlier history…”),在加载过程中自动获取旧消息,加载完成后显示总条目数。
  4. 跳转定位:点击目录中的任意条目,界面会切换回 Chat 标签页,并平滑滚动到对应的用户消息位置,该消息会闪烁 1.5 秒以示高亮。

开发与维护

  • 无构建步骤:这是一个纯客户端插件,无需配置 Webpack 或 Vite 等构建工具。
  • 热重载支持:修改 lib/client.js 后,无需重启,系统每 500ms 检测文件变更并自动热重载(约 1 秒生效)。
  • 重启时机:以下操作需要重启 dsh web 才能生效:
    • 添加新的插件包。
    • 修改 package.json 中的 dsh.client 声明。
    • 切换插件的启用/禁用状态。

兼容性

插件会根据当前 DSH 版本自动适配数据源:

DSH 版本 数据源 Hook 视图切换方式
>= 0.1.5 useChat((s) => s.order) / useChat((s) => s.nodes) openView("chat")
<= 0.1.0-rc.x useSession((s) => s.chat.order) / s.chat.nodes 点击 Chat 标签按钮

插件通过检测 useChat 是否注入来自动选择对应的逻辑分支。Sessions、分页状态(hasMore / loadingOlder)以及消息节点的 kind === "user" 形状在两个版本中保持一致,因此目录逻辑可以共用。

生态背景

DeepSeek Harness 采用「一切皆插件」的架构理念。此插件托管在社区目录,与 DeepSeek 或幻方官方无从属关系。使用前请检查源码与许可证(MIT)。

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

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

小夜