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
羽毛球分组比赛记分
小程序二维码

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

小夜