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 後即可在側欄與內聯菜單裏管理分支。

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

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

小夜