前言¶
在 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 / 幻方無官方從屬關係。
典型用法¶
界面流程¶
- 在回覆下點 Branch into a new conversation,或從側欄會話菜單選 Fork session,在分叉中探索。
- 結束後在分叉右側 Session Git 中點 Merge into parent;或回到主會話,在輸入框上方條帶中點 Merge here。
- 在主會話照常發下一條消息;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 的背景材料。超長時會先壓縮步驟細節。主要章節包括:
- 分支與本會話的關係:fork 位置、本次合併覆蓋的輪次。
- 分支目標(若已設置)。
- 各輪:用戶消息、Agent 回覆要點、所用工具、委派給 subagent 的工作。
- 用戶在分支中的決定(如對 Agent 提問的回答)。
- 變更文件與執行的命令。
- 待辦列表與 compaction 摘要。
- 分支最終結論。
開頭會說明:分支中的計劃與 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 把成果帶回,而不必重新打字複述。