Session Git:把分叉會話畫成分支樹,一鍵合併回主會話

前言

在 DeepSeek Harness(DSH)裏,從某條回覆「分叉會話」去探索另一條思路很常見。主會話卻看不到分叉裏發生了什麼:結論、改過的文件、跑過的命令、你在分叉裏做的決定,往往只能自己口述一遍,主會話的 Agent 才能接着用。

下面介紹社區插件 dsh-session-git(目錄分類:工作流)。它把分叉會話畫成分支地圖,並把分支成果以摘要(digest)合併回主會話,減少重複輸入。

這是什麼

Session Git 由維護者 glk1220 發佈,當前包版本爲 0.1.0(MIT 許可證)。定位是:在 Harness 中爲分叉會話提供分支視圖,並支持將分支已完成的工作合併回主會話。

插件不向網絡發送會話數據;合併時讀取本機會話記錄,本地處理。

核心功能

分支地圖

  • 右側邊欄 Session Git 標籤:圍繞當前會話展示分支樹——各分支從何處 fork、自有輪次數、已合併程度。
  • 左側邊欄 Session Git 面板:列出工作區內所有分叉樹。

一鍵合併

  • 主會話中可對某分支點 Merge here;分支內可點 Merge into parent。
  • 輸入斜槓命令 /merge 同樣觸發合併;單獨輸入 /merge 會打開分支選擇器。

增量合併

對同一分支再次合併時,默認只帶入自上次合併以來的新內容。需要從 fork 點重來可加 --all。

默認靜默投遞

合併產生的 digest 默認進入隊列,在你下一條消息時隨上下文交給 Agent,不中斷當前對話。輸入框上方有一條提示條說明合併已排隊。若希望 Agent 立刻行動,可加 --wake,或在 -- 後寫備註(與 digest 一併發送)。

未合併提醒

回到主會話且某分支有新工作尚未合併時,輸入框上方提示條提供 Merge here 或 Ignore;分支再完成一輪後會再次提醒。

Agent 側能力

運行時上下文可告知 Agent 當前會話有哪些分支;配置開啓 tools 後,Agent 可調用 session_branches 與 session_branch_merge。用戶說「把分支裏的結論帶進來」時,Agent 可走這一套工具;經此路徑讀取的內容同樣計入合併狀態。

安裝與啓用

要求 DeepSeek Harness 0.2.1-rc.5 或更高版本(package.json 中 engines.dsh 與此一致)。

在 Harness 圖形界面:打開 Plugins → Add plugin → Install a third-party plugin,填入 GitHub 倉庫地址:

https://github.com/glk1220/dsh-session-git

從 GitHub 安裝需要本機可訪問 GitHub;也可下載倉庫後,在同一對話框填寫插件目錄的絕對路徑。

命令行安裝:

dsh plugin --profile web add github:glk1220/dsh-session-git

按提示重啓 Harness。

插件以當前 DSH 進程權限運行。安裝第三方插件前,建議在 GitHub 上查看源碼與 LICENSE,確認符合你的安全與合規要求。社區目錄 skillhub.cn 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

典型用法

界面流程

  1. 在回覆下點 Branch into a new conversation,或從側欄會話菜單選 Fork session,在分叉中探索。
  2. 結束後在分叉右側 Session Git 中點 Merge into parent;或回到主會話,在輸入框上方條帶中點 Merge here。
  3. 在主會話照常發下一條消息;Agent 會在上下文中看到分支 digest 並回答。

側欄可設 digest 粒度:Summary、Full、Conclusion only;Let the agent act right away 等價於 --wake。

斜槓命令

/merge [#number|title|id] [summary|full|last|Nturns] [--all] [--wake] [--up] [-- note]
/branches
形式 含義
/merge 僅一個分支時直接合並;多個時合併唯一有新區間的分支,或列出供選擇。在無子分支的分叉內,合併到父會話。單獨輸入打開分支選擇器。
/merge #2 按地圖上編號選擇;標題(部分匹配)或 session id 前 4 位以上亦可。
summary / full / last digest 詳細程度,默認 summary。
turns:3 僅最近 3 輪,全文細節。
--all 忽略既往合併,從 fork 點重新合併。
--wake 合併後立即喚醒 Agent。
--up 將當前分支合併到父會話。
-- note -- 之後的內容作爲你的消息與 digest 一併發送。
/branches 在對話中打印分支地圖。

digest 包含什麼

digest 是交給 Agent 的背景材料。超長時會先壓縮步驟細節。主要章節包括:

  1. 分支與本會話的關係:fork 位置、本次合併覆蓋的輪次。
  2. 分支目標(若已設置)。
  3. 各輪:用戶消息、Agent 回覆要點、所用工具、委派給 subagent 的工作。
  4. 用戶在分支中的決定(如對 Agent 提問的回答)。
  5. 變更文件與執行的命令。
  6. 待辦列表與 compaction 摘要。
  7. 分支最終結論。

開頭會說明:分支中的計劃與 to-do 僅供記錄、需你確認;若兩會話共享工作目錄,分支的文件改動已在磁盤上,以實際文件爲準。

配置

在 profile 的 cordis.patch.yml 中,可覆蓋 id 爲 session-git 的整條 config:

選項 默認 含義
runtimeContext true 在運行時上下文中告知 Agent 本對話有哪些分支(多爲不變事實,減少重複推送)。
tools true 提供 session_branches、session_branch_merge 工具。
maxDigestChars 24000 單次 digest 字符上限,2000–200000。
maxContextBranches 8 運行時上下文最多列出的分支數。
locale auto 命令結果與 digest 語言:auto 隨對話,zh / en 強制。

適用場景與注意

適合誰:經常在 Harness 裏 fork 多路線探索、又希望主會話 Agent 自動繼承分支結論與操作記錄的開發者。

已知限制(來自上游 README):

  • 排隊中的合併類似排隊消息:在 Agent 讀取前若點 Stop 或重啓 Harness,可能被取消;提示條會再次顯示未合併,重新合併不丟分支內容。
  • 靜默合併不出現在對話流中(Harness 不渲染純上下文注入),狀態見輸入框條帶與分支地圖。
  • Subagent 會話不在地圖上;其下分支掛在最近可見會話下。

DSH 生態理念是「一切皆插件」;Session Git 解決的是分叉探索與主會話上下文之間的斷層,用分支樹和 merge 把成果帶回,而不必重新打字複述。

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

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

小夜