dsh-session-tree:把工作区里的 DSH 会话画成可浏览的分叉地图

前言

在 DeepSeek Harness(DSH)里做长对话或发散追问时,经常从某一轮分叉出新会话,新会话再继续分叉。Web 侧默认的会话列表是线性的:分支一多,很难一眼看出「从哪一轮切出去」「主线还在哪」,旧会话也容易被挤到后面。Session Tree 是维护者 lulaalu 发布的客户端插件,在同一工作区内把「会话 → 每一轮对话 → 分叉」画成一张图,在 Web UI 里单独一页浏览,不改动对话页本身,也不复制或额外存储对话正文。

这是什么

Session Tree(npm 包名 @lulaalu/dsh-session-tree)的定位是:按工作区展示 DeepSeek Harness 会话、轮次与分叉分支的 Web 地图。它是一个 DSH 插件 bundle:Host 侧 index.js 的 apply() 为空,全部 UI 在 Web 客户端;只读取 DSH 已有的会话投影(如 ctx.sessions、turnOutline),不读写 session 文件、不改 session 格式。

入口在 DSH Web 左侧边栏图标列(Plugins、Schedules 之后)新增的树形图标;点击后主区域整页切换到「会话树」,不是对话页浮层。

社区目录页:lulaalu/dsh-session-tree。源码与文档:GitHub lulaalu/dsh-session-tree。

设计理念(读图前先知道坐标系)

插件把一轮对话(一次 prompt + 一次回复)作为图的最小节点;一个会话占一行,节点按时间横排;分叉从某一轮连到新会话的一行。父会话被隐藏时,子会话继承来的历史用虚线/淡显标出,避免图从中间断开。横向是对话在推进,纵向是分支在生长。

核心功能

下面能力均来自仓库 README 中的功能表与说明。

能力 说明
按工作区一张图 页顶下拉切换工作区,默认最近活跃的工作区。
一行一会话、一列一轮 节点显示该轮 prompt / 回复摘要。
分叉可视化 从被切出的轮次连到新会话;中间会话隐藏时用虚线重连到最近可见祖先。
继承历史 父会话不在视图时,子会话就地淡显继承段。
子会话 迷你节点挂在调用轮下方;可收起并显示数量徽标。
归档会话 「显示归档」打开后,归档行用浅灰底与降低不透明度区分。
节点操作 行内「⋯」:重命名、置顶/取消置顶、分叉、归档/取消归档、复制 Session ID。
点击定位 点节点打开会话并定位到该轮(高亮闪一下)。

页面顶部还提供视图开关:显示继承历史、显示子会话、显示归档、回合连线、行分隔、清晰边框;右侧 ⚙ 可调强调色(写入浏览器 localStorage)。名字列可拖右边缘调宽。

安装与启用

环境要求

  • DeepSeek Harness 0.2.x(Web UI;web profile 或桌面 App 的 desktop profile)。
  • package.json 声明 engines.dsh 为 >=0.2.0 <0.3.0;不满足时 DSH 会拒绝加载,可用 dsh plugin allow-version 豁免(见 README)。
  • 插件为纯 JavaScript,无构建步骤;从 GitHub 安装不需要给 pnpm 授权运行构建脚本。

先确认 CLI 可用:

dsh --version

注意:npm 上不带 scope 的 dsh-session-tree 是另一个项目,不要使用 dsh plugin add dsh-session-tree。认准仓库 lulaalu/dsh-session-tree。

方式 A:从 GitHub 安装(README 推荐)

Web 环境:

dsh plugin --profile web add github:lulaalu/dsh-session-tree#v0.1.1

桌面 App 将 --profile web 换成 --profile desktop。

方式 B:从 npm 安装

dsh plugin --profile web add @lulaalu/dsh-session-tree

当前资料中 npm 版本为 0.1.1。

方式 C:插件商店索引(自建市场源)

  1. 设置 → 插件 → 发现 → 索引源,添加 https://cdn.jsdelivr.net/gh/lulaalu/dsh-session-tree@main/market/index.json
  2. 在发现页搜索「会话树」或 Session Tree 安装。

卸载

dsh plugin --profile web remove @lulaalu/dsh-session-tree

装完后若看不到树形图标:桌面 App 需重启;命令行环境需重启 dsh web 并刷新页面。常见原因是装到了另一套 profile,需用对应的 --profile 再装一次。

典型用法

  1. 打开会话树页,在顶部下拉选择要查看的工作区。
  2. 在右侧图区浏览各会话行与轮次节点;悬停节点右上角可从该轮分叉。
  3. 点击任意节点,跳回对应对话页并定位到该轮。
  4. 用顶部开关控制继承历史、子会话、归档与连线样式;需要时用行内「⋯」管理会话或复制 Session ID。

插件不保存对话正文;分叉关系来自 DSH 会话 header 中的 parentSession / isSeeded,子会话来自 origin === 'subagent',不维护第二份关系表。

适用场景与注意

适合:在同一工作区内频繁分叉会话、需要对照分支来源与主线进度的 DSH Web 用户。

已知限制(README 原文):全新子会话的 spawn 轮次若 DSH 未向客户端暴露,会暂时挂在父会话最后一轮下方;定位到某轮为「尽力而为」(loadThrough(seq) + DOM 滚动),极长历史可能翻不到;暂无搜索、导出与多选批量操作。

安全与信任:插件以当前 DSH 进程权限运行,安装前请自行查看 源码 与 MIT 许可证。SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

Session Tree 用只读方式把同一工作区的会话、轮次与分叉关系可视化,补上线性会话列表在分支场景下的定位短板。需要安装命令与细节时,以 GitHub README 为准:

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

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

小夜