前言¶
DeepSeek Harness (DSH) 採用插件化架構。在開發或調試智能體對話時,開發者常需要複用歷史對話片段、對比不同分支的上下文,或從任意歷史節點繼續提問。dsh-git 插件通過引入 Git 的核心概念,將對話過程轉化爲 DAG(有向無環圖),提供了對話分支管理、節點選擇與上下文重組的能力。
dsh-git 是什麼¶
dsh-git 是 DeepSeek Harness Web 的一個客戶端插件,由 ZicanC 維護。它不包含 dsh 可執行文件,僅提供插件模塊。其核心價值在於將對話中的每個 Prompt + Answer 輪次視爲一個不可變的 PA 節點,支持跨分支選擇、有序上下文托盤以及多父 DAG 節點的生成。
核心功能¶
- 對話的 Git 風格管理:每個完成的 Prompt + Answer 輪次是一個
PA節點。這些節點是原子、可尋址且不可原地重寫。 - 會話對話圖:每個 Session 都有一個對話圖,顯示分支、合併邊和當前
HEAD。 - 工作區項目圖:顯示工作區中所有已完成的 PA,支持摺疊重複歷史。
- 有序上下文托盤:允許從任何分支選擇 PA 節點,並拖拽排序。排序後的順序將決定發給主機的連續歷史。
- 跨分支選擇:支持自由跨分支選擇節點。
- 主機端持久化:圖形數據存儲在主機端,遵循 DSH 配置文件,不依賴當前瀏覽器。
安裝¶
該插件僅提供插件代碼,不包含 dsh 可執行文件。如果使用 DeepSeek Harness 的源碼檢出,請在檢出目錄中調用 CLI。以下命令假設插件目錄與 deepseek-harness 目錄同級:
pnpm --dir ../deepseek-harness dsh plugin --profile web add "$PWD"
pnpm --dir ../deepseek-harness dsh --profile web
如果 dsh 已全局安裝,可使用簡寫命令。注意不要在插件倉庫目錄內運行 pnpm dsh。
典型用法¶
- 在 DSH 中完成一個或多個普通輪次。
- 打開 Branches 標籤頁。當前主線路爲實線,活動節點標記爲
HEAD。 - 選擇任意 PA 節點,它們將按創建順序進入 Context Tray。
- 拖動 Context Tray 中的卡片,設置發給模型的精確順序。
- 輸入下一個問題,選擇 Create merge branch and ask。
- 插件創建一個新的 Session,使用選定的輪次作爲其有序歷史,並打開該會話發送問題。當回答完成時,
HEAD移動到新節點。
Git 概念映射¶
| Git 操作 | dsh-git 操作 |
|---|---|
commit |
每個 Prompt + Answer 輪次是一個 PA 節點。 |
log --graph |
會話對話圖與工作區項目圖。 |
HEAD |
活動節點。 |
checkout |
使用 Switch to this branch 打開 DSH Session。 |
cherry-pick |
從任何分支選擇 PA 節點並添加到有序的 Context Tray。 |
rebase |
主機按托盤中的順序將選定的輪次重新編號爲連續的歷史。 |
branch |
從托盤提問會創建一個新的主機端 Session。 |
merge |
下一個 Prompt 和 Answer 成爲記錄所有源的多父 DAG 節點。 |
注意事項¶
- 預覽行爲:點擊節點僅預覽其內容,不更改上下文或當前 Session。
- 只讀視圖:工作區項目圖是隻讀的。點擊 PA 可打開詳情檢查器,點擊“Open source Session”可跳轉回原會話。
- 自包含:構建的插件除了 React 外是自包含的瀏覽器包。
- 數據模型:數據模型基於
TurnNode接口,包含 id、sessionId、turn、parentIds 等。
總結¶
dsh-git 爲 DeepSeek Harness 提供了對話分支管理能力,允許開發者像管理代碼一樣管理對話歷史。通過有序的 Context Tray 和多父 DAG 節點,它支持從任意歷史片段繼續對話,適用於需要精細控制上下文和分支的智能體開發場景。