DeepSeek Harness 插件:dsh-trail-plugin

DSH 的会话本质是一条线性滚动的对话日志。用户通常只能顺着往下看,难以快速定位到历史某轮对话,也无法从中间节点进行续写或分支切换。dsh-trail-plugin 为 DSH 增加了一个「历史索引」导航层,将事件日志折叠为可交互的节点树。

是什么

该插件由 MemoryIt 维护,旨在给线性会话日志加上可索引、可跳转、可分叉的导航层。它通过 DSH 官方投影通道持久化索引($DSH_HOME/storages/session_projcache.json),重启后即可恢复,不受对话窗口已加载条数的限制。

核心功能

  • 行内跳转:点击任意节点,聊天流自动滚动到该轮。
  • 续写(fork):从任意节点 fork 出新的子会话继续,不打断当前会话。
  • 分叉切换:有分叉的节点带角标,可展开下拉菜单,一键切换分支。
  • 可拖宽、可折叠:左栏宽度支持调整,折叠状态会被记住。

安装与启用

前置要求

  • DSH(dsh CLI 可用,profile 机制正常)
  • Node.js ≥ 20

安装命令

使用官方推荐方式从 npm 安装:

dsh plugin --profile web add dsh-trail-plugin

--profile 需替换为你实际使用的 profile 名(默认 GUI 为 web)。

注意:bundle 层改动需要整进程重启 DSH 才生效,安装完成后请重启 DSH。

验证安装

重启后检查以下两点:
1. 启动日志中出现 [I] dsh-trail [dsh-trail] hello world from dsh-trail-plugin (host)。
2. GUI 会话列表左侧出现「历史索引」左栏。

典型用法

安装并重启后,进入任意会话:

  1. 行内跳转
    点击任意节点行,聊天流会自动滚动到该轮对话。如果目标未加载,会自动加载更早内容;如果目标无独立气泡,会定位到邻近内容。

  2. 续写(fork)
    鼠标悬停在节点行上,点击行尾出现的「续写」按钮,即可从该节点 fork 出新的子会话并自动打开。

  3. 分叉切换
    有分叉的节点行首会显示数字角标,点击可展开共享会话下拉,查看子会话摘要并切换。

  4. 调整与折叠
    拖动左栏右缘可调整宽度(范围 240–480px)。点击左栏右上角的 <- 可折叠;折叠后,点击对话区左上角的 -> 即可展开。

配置

插件配置通过 profile 的用户层 patch 覆盖。编辑 $DSH_HOME/profiles/<name>/cordis.patch.yml:

- id: dsh-trail-plugin
  name: dsh-trail-plugin
  config:
    enabled: true
    label: my-trail
字段 默认值 说明
enabled true 是否启用插件
label dsh-trail 日志与标识前缀

注意事项

  • 数据安全:插件只读事件日志,写路径仅通过官方 sessions.fork 接口创建新会话,不会改动你的会话数据。
  • 重启生效:修改 bundle 层(如修改代码或配置)后必须重启 DSH 进程。
  • 折叠状态:刷新后左栏消失多半是处于折叠态,点击对话区左上角的 -> 展开。
  • 视图限制:点击跳转提示「聊天视图未激活」时,需手动切回「对话」视图。
  • 旧会话兼容:只有 session.l.zstd 压缩日志的极旧会话不在补齐范围内,有 log.jsonl 的会话均会补齐。

结语

dsh-trail-plugin 通过在 DSH 中增加侧边栏导航层,解决了线性日志难以跳转和分叉的问题。适合需要在复杂长对话中快速定位上下文或进行多分支实验的开发者。

插件目录页
GitHub 仓库

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

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

小夜