dsh-session-tree-extension:为 DeepSeek Harness 提供只追加的多分支会话树

前言

在 DeepSeek Harness(DSH)里做长对话时,常见做法是单线续写:改 prompt、重试、换模型,历史往往是一条时间线。一旦想从某个旧节点换一条路继续,要么复制粘贴上下文,要么开新 Session 丢血缘。官方 Session 列表能管理多个会话,但不擅长把「同一项目的分叉、克隆、祖先关系」画成一张可浏览的图。

下面介绍社区插件 dsh-session-tree-extension(目录维护者 lizhuoyuan41-droid,分类:记忆)。它在 Harness 上实现 只追加(append-only)、多分支 的会话树:从历史节点分叉、克隆到独立 Session、在 WebUI 里把整条谱系当作一张合并图查看;旧历史不被编辑或删除。仓库当前为 v0.1.2,基于上游 robiteame/dsh-session-tree-extension,许可证 MIT。发布包在 npm 上为 @ryanlee2007 作用域下的四个包,由载体 Bundle 一次安装挂载全部能力。

这是什么

一句话:给 DSH 加三条命令(/tree、/fork、/clone)和右侧会话树面板,把分叉与克隆放进同一套谱系视图。

实现上拆成四层(README 已列出):

包名 职责
@ryanlee2007/dsh-session-tree 载体 Bundle,一次安装组合下面三层
@ryanlee2007/dsh-pi-agent-session-tree Host 域服务:SessionTree / SessionTreeStore 与 sessionTree Remote
@ryanlee2007/dsh-tool-session-tree 命令面:/tree、/fork、/clone
@ryanlee2007/dsh-client-ui-session-tree WebUI 树面板:Harness 0.2 右侧 Sidebar 原生 Tab,旧版 stock 有叠加回退

徽章标明目标 DeepSeek-Harness 0.2.2-rc.1;开发与验证基线同为该版本。依赖 Cordis ~4.1.0,由目标安装环境提供 peer。

核心功能

三条命令

命令 作用
/tree 打开合并谱系图:非 subagent 的 Session 与节点可点击、可绑定
/fork 从任意历史节点分叉;图中出现新枝,源 Session 行下还有内联折叠菜单
/clone 将当前对话(沿根路径)复制为同项目下的独立新 Session

/tree:打开树面板

在右侧以 git 风格 展示当前 Session 谱系:祖先、分叉、克隆在同一视图;用户消息、助手回复、工具调用、模型切换为连线节点。共享前缀会去重;分叉点带 Session 徽章;当前 Session 路径高亮。点击节点可绑定;若节点属于其他 Session,会先打开该 Session。可折叠子树或整段 Session 枝;可用 focus 目标图标只查看某一叉点之后的子树。

/fork:从历史节点分支

选定更早的用户 prompt,从新路径继续对话,原路径保持不变。分叉走官方原生 fork API,在 Session 列表中有真实父链。插件同时更新合并图,并在源 Session 行下方渲染内联可折叠分支菜单;两处都跟随官方 reactive Session 列表,新分支无需手动刷新。

/clone:复制为新 Session

把当前对话复制到同项目下的独立 Session;源历史只读,克隆副本可单独续写。

界面与交互(README Highlights)

  • 子树聚焦:在分叉点点击靶心图标,只显示该节点及后代;聚焦节点置顶,切换 Session / 侧栏重挂时记忆焦点;在子树内导航保持聚焦;全部 或 Esc 回到全谱系。
  • 分支命名:分叉名取自该枝第一条自有 prompt,随后可跟动态标题;空分叉回退为 parent · fork N。
  • 颜色稳定:各分支按永久分支号着色,外层归档或子树聚焦后仍一致。
  • 嵌套泳道:分叉上的分叉位于 parent lane + 1。
  • 分支菜单动画:各级菜单高度 + 淡入淡出开合,关闭后不可交互;侧栏不再横向滚动。

安装与启用

环境要求:DeepSeek-Harness ^0.2.2-rc.1、Cordis ~4.1.0。预构建 tarball 无需 install 脚本,自带 lib/ 产物。

DeepSeek Harness Desktop

  1. 打开 Settings → Plugins → Market。
  2. 搜索 @ryanlee2007/dsh-session-tree 并安装。
  3. 重启桌面应用。

桌面插件管理器会激活载体 Bundle,下次启动组合 pi-agent-session-tree、tool-session-tree、ui-session-tree 三行。若当前构建的 dsh plugin 仅转发到 pnpm,仍应通过应用内市场安装;新装 bundle 会在当前构建中直接激活。重启后 /tree 应能打开面板。

CLI(0.2.2-rc.1 及更新)

在带 0.2.2-rc.1 插件管理器的 CLI 上,一条命令安装并激活 Bundle:

dsh plugin --profile <profile> add @ryanlee2007/dsh-session-tree

使用预构建包时(名称与版本以你手中的 tarball 为准,README 示例为 0.1.2):

dsh plugin --profile <profile> add ryanlee2007-dsh-session-tree-0.1.2.tgz

安装后重启该 profile,并检查组合层是否生效:

dsh --profile <profile> --dump-config   # 应列出三条 session-tree 相关行

典型用法

  1. 看清整条线:在当前 Session 输入 /tree,在右侧面板浏览祖先、分叉与克隆;点击节点绑定上下文,或跳到拥有该节点的 Session。
  2. 换一条路试 prompt:在对话中选定历史用户消息,执行 /fork,在新枝上继续;在侧栏源 Session 下展开内联菜单切换分支。
  3. 并行实验:对当前线程满意但想保留副本时,用 /clone 在同项目下开新 Session,两边独立演进。
  4. 只看某一叉:在树面板对分叉点使用聚焦(靶心),用 全部 或 Esc 退回全图。

分支切换上,插件 不修改 Harness 核心文件,运行时探测可选的分支选择 API:

  • Native 模式:带 Session.selectMessageSurface() 的构建上,跳转/分叉直接切换模型可见历史。
  • Stock 模式:在未改动的官方 Harness 上,通过官方 append API(空 replace surface 事件)加插件侧车 $DSH_HOME/storages/session-tree/ 持久化分支状态;日志仍可做 resume。
  • Projection 模式:若连仿真都不可用,仅移动树投影与面板,下一轮仍走 canonical 历史。

非 Native 模式时 Host 日志会 一次性 提示。跨机器迁移时请把 session.jsonl.zstd 与匹配的 sidecar 一并带走。

适用场景与注意

适合谁:需要在 DSH 里做 prompt 对照实验、从旧节点重开分支、在同项目下保留多个有血缘关系的 Session,并希望在一张图里看清谱系的开发者。

权限与信任:插件以当前 dsh 进程权限运行,可读写会话相关存储(含 stock 模式下的 $DSH_HOME/storages/session-tree/)。安装前应在 GitHub 仓库 查看源码与 MIT 许可证;社区目录 skillhub.cn 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系,亦不能替代你对代码的审阅。

生态:DSH 理念是「一切皆插件」;本插件通过 Cordis 组合层挂载,与核心解耦。目录页星标数为 0(以目录统计为准),不代表功能完整度,仅作参考。

结尾

dsh-session-tree-extension 把多分支对话树做成只追加数据模型加三条命令:/tree 看谱系、/fork 从历史分叉、/clone 复制独立 Session。桌面从市场装 @ryanlee2007/dsh-session-tree,CLI 用官方 dsh plugin add 装同一 Bundle;满足 0.2.2-rc.1 后即可在侧栏与内联菜单里管理分支。

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

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

Xiaoye