前言¶
DSH(DeepSeek Harness)採用插件化架構,允許用戶根據需求擴展功能。在 Web UI 中進行開發時,管理多個 Git 分支或 Worktree 通常需要頻繁切換終端或離開瀏覽器界面。dsh-plugin-worktree 解決了這一痛點,它將 Claude Code 風格的 Git Worktree 支持引入了 dsh Web UI,允許用戶在瀏覽器中直接創建、切換和刪除 Worktree。
是什麼¶
這是一個由 limoiie 維護的 DSH 插件。它的核心作用是在 dsh Web UI 中提供 Worktree 管理能力,讓工作區切換不再依賴命令行。
核心功能¶
插件爲 Web UI 增加了以下交互能力:
- New-session hero:在新建會話界面,Workspace 芯片會顯示根工作區名稱;Worktree 芯片會顯示當前 Worktree 名稱,並提供列出倉庫 Worktree、創建新 Worktree 和切換到其他 Worktree 的入口。
- Sidebar badge:側邊欄的工作區標題會附帶
⑂分支徽章,用於區分普通工作區和 Worktree 工作區。 - Delete dialog:刪除 Worktree 工作區時,會彈出對話框詢問是否同時刪除對應的 Git Worktree 目錄及其
dsh/<name>分支,或者僅刪除 DSH 會話註冊。
安裝與啓用¶
在使用前,請確保環境滿足以下要求:
* 已安裝並正常運行 dsh。
* 已配置 web profile(即運行 dsh web)。
* 機器上安裝了 git。
* Node.js 版本爲 18 或更高。
安裝命令如下:
dsh plugin --profile web add dsh-plugin-worktree
安裝完成後,重啓 dsh web 即可生效。
配置¶
插件提供了兩個配置項,默認值如下:
| 字段 | 默認值 | 說明 |
|---|---|---|
root |
process.cwd() |
用於 git rev-parse --show-toplevel 的目錄 |
worktreesDir |
.dsh/worktrees |
Worktree 根目錄;支持絕對路徑或相對於倉庫根目錄的路徑 |
用戶可以通過在 cordis.patch.yml 中針對 id: worktree 進行覆蓋來修改這些值。
使用方法¶
- 創建 Worktree:打開一個新的會話,在 Workspace Picker 中展開 Worktree 芯片,點擊 New worktree…,輸入名稱(如
feat/okta-sso)並確認。 - 切換 Worktree:再次打開新會話,從 Worktree 芯片或側邊欄中選擇已有的 Worktree 工作區即可進入。
- 刪除 Worktree:在側邊欄找到對應的工作區,使用刪除流程。系統會詢問是否移除 Git Worktree 目錄和分支,根據需要選擇保留或刪除。
注意事項¶
- 安全性:Worktree 名稱會經過驗證,以防止路徑遍歷攻擊和無效的 Git 名稱(長度限制 64 字符,僅允許字母、數字、點、下劃線和連字符)。
- 分支刪除限制:刪除分支使用
git branch -d命令。如果分支包含未合併的提交,Git 會拒絕刪除,此時客戶端會提示“branch kept”。 - 目錄清理:配置的 Worktrees 目錄會盡力添加到
.git/info/exclude,以保持主檢出目錄的整潔。
總結¶
dsh-plugin-worktree 爲 DSH Web 用戶提供了原生的 Worktree 管理能力。通過在瀏覽器中直接操作,開發者可以更方便地管理並行開發環境。該插件地址:https://github.com/limoiie/dsh-plugin-worktree