dsh-session-git:DeepSeek Harness 對話血緣與分支管理插件

前言

DeepSeek Harness (DSH) 提供了 fork API 用於會話分支,但 Web 界面目前僅支持從對話的最新回合(tail)進行分支,且官方側邊欄設計上保持扁平,無法查看會話的歷史血緣。對於需要在複雜對話流中回溯特定上下文的開發者,缺乏直觀的分支管理入口。dsh-session-git 通過插件形式擴展了 Web UI,允許用戶從歷史中任意一個已完成的回合發起分支,並在子會話頭部繪製家族樹,專注於會話的 lineage 管理。

這是什麼

dsh-session-git 是 DeepSeek Harness 的配套插件,由 JUANWANG-BUAA 維護,遵循 MIT 協議。它的核心定位是會話血緣管理:允許用戶從對話歷史中的任意已完成回合(turn/end)發起分支,並在子會話頭部展示家族樹。與重寫文件或合併日誌的插件不同,它不修改工作區文件,也不改變源會話。

核心功能

  1. 頭部分支選擇:在會話頭部提供“Branch from turn”選項,列出當前加載窗口內的所有已完成回合(turn/end)供用戶選擇。這並非直接觸發分支,而是提供選擇入口。
  2. 歷史分支入口:對於之前沒有產生文件的回合,提供“Branch from here”按鈕。
  3. 家族樹展示:在會話頭部通過 Popover 展示家族樹,顯示只讀的父級會話芯片。
  4. 源會話保護:插件不會歸檔、取消或詢問源會話,源會話保持不變。
  5. 防重疊分支:拒絕對同一源發起重疊的分支操作(error.in-flight)。
  6. 兼容性:嚴格兼容 DeepSeek Harness 0.1.0-rc.5 的 fork 語義。

安裝與啓用

安裝前請確保已安裝 DeepSeek Harness Web 模式,且 Node.js 版本滿足 ^22.19.0 || >=24。

執行以下命令安裝預構建包:

dsh plugin --profile web add https://github.com/JUANWANG-BUAA/dsh-session-git/releases/latest/download/dsh-session-git.tgz

安裝完成後,可以通過以下命令驗證配置:

dsh --profile web --dump-config | grep session-git

啓動 Web 模式(若需調試,建議取消環境變量 DSH_HOME):

env -u DSH_HOME dsh --profile web

典型用法

  1. 打開一個包含至少一個已完成回合的對話。
  2. 在會話頭部使用 Branch from turn 選擇一個切分點,或對沒有文件產生的早期回合使用 Branch from here。
  3. 子會話將打開,包含該回合之前的歷史記錄(不包括之後的回合)。
  4. 在子會話頭部,通過 Parent 按鈕或家族樹彈窗返回源會話。
    注:子會話標題遵循官方的 (1) / (n) 編號規則。

適用場景與注意

  • 環境要求:必須使用 --profile web 模式運行,且 Node.js 版本需符合要求。
  • 文件重寫差異:插件僅管理會話分支,不重寫工作區文件。若需文件時間機功能,請使用專門的 rewind 插件。
  • 標題規則:當某回合產生了文件,官方交付物會佔據 turnTail 鏈,此時應使用頭部選擇器進行切分。子會話標題由官方邏輯管理。
  • 父會話狀態:歸檔或不在工作區內的父會話將以佔位符形式渲染。
  • 分支邏輯:session.fork 複製的是 fork 時刻的當前工作區,而非該回合時刻的文件快照。該插件不負責文件系統的狀態回溯。

結語

該插件通過在 Web 界面補充歷史分支選擇與家族樹展示,填補了官方 fork 功能在歷史回溯方面的空白。它專注於會話血緣的可視化與導航,不涉及文件系統操作,適合需要在長期對話中保持上下文隔離與回溯能力的開發者。

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

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

小夜