在 DSH 中進行智能體開發時,經常需要在獨立分支上並行推進任務,同時保留當前對話的上下文。原生 DSH 沒有直接提供這種級別的 git worktree 管理,dsh-worktree 插件填補了這一空白。
插件簡介¶
dsh-worktree 是 Jiazliang 開發的一款 DSH 工作流插件。它的核心價值是提供類似 git fork 的操作:爲任意工作區或會話創建隔離的 git worktree(獨立分支),並在其中打開一個新會話。
插件提供了「創建 → 使用 → 刪除」的完整閉環,支持會話分叉(繼承對話歷史),能夠實現互不干擾的並行開發。
核心功能¶
1. 創建獨立 Worktree¶
在工作區菜單點擊「創建 Worktree」,可以基於當前倉庫創建一個獨立的 git worktree 和獨立分支。
- 目錄隔離:新工作區出現在側欄,新會話的當前工作目錄(cwd)指向倉庫外層的
<倉庫名>.Worktree/<id>目錄。 - 自動打開:創建後會自動打開一個新會話,且該會話使用獨立分支。
- 零干擾:主工作區的
.git目錄不被觸碰,主倉庫的git status保持乾淨。
2. 分叉到 Worktree¶
在會話菜單點擊「分叉到 Worktree」,可以帶着當前對話的所有上下文進入新的 worktree。
- 繼承歷史:新會話繼承當前會話的全部對話歷史。
- 配置繼承:繼承當前會話使用的 preset 與模型設置,無需重新配置。
3. 刪除 Worktree¶
在插件創建出來的 worktree 工作區上,菜單會多出一行「刪除 Worktree」。
- 強制拆除:強制刪除 worktree 目錄、對應分支,並移除工作區登記。
- 安全護欄:該操作只對插件創建的 worktree 工作區顯示,普通工作區看不到這一行,防止誤刪主倉庫。
- 數據保留:注意,此操作會丟棄未提交的更改,但會話日誌會保留(與 DSH 原生行爲一致)。
4. 兼容性與界面¶
- 自動適配:優先使用新版 DSH 的原生菜單插槽,舊版構建自動降級爲 DOM 注入適配器。
- 中文界面:菜單項採用中文命名,與 DSH 內置條目保持對稱。
安裝與啓用¶
使用官方插件命令進行安裝:
dsh plugin --profile web add github:Jiazliang/dsh-worktree
安裝完成後,需要重啓 dsh web 應用才能生效。
典型用法¶
場景:從主工作區分出一條獨立開發線
- 在側欄的某個工作區(文件夾)上打開菜單,點擊「創建 Worktree」;
- 側欄出現新工作區,新會話自動打開,此時工作目錄已指向獨立的 worktree(獨立分支);
- 在該會話中進行開發、提交等操作,所有更改隻影響該分支;
- 如果需要帶着當前的對話上下文另起一條線,在會話菜單點「分叉到 Worktree」,子會話將繼承全部歷史並落在新的 worktree 上;
- 任務完成或不再需要該分支時,在該 worktree 工作區的菜單點「刪除 Worktree」,目錄和分支將被清理。
注意事項¶
- 前置條件:創建需要目標工作區是 git 倉庫(能從 cwd 解析出倉庫根)。
- 刪除行爲:「刪除 Worktree」是破壞性操作,未提交的更改會隨目錄刪除而丟棄,但會話日誌會保留。
- 路徑結構:新會話的 cwd 指向倉庫外層的
<倉庫名>.Worktree/<id>目錄。
結語¶
dsh-worktree 通過插件化的方式爲 DSH 增加了 Git Worktree 能力,適合需要在同一倉庫內並行管理多個分支和會話的開發者。更多細節可查閱插件目錄或源碼倉庫。