dsh-plugin-worktree:在 DSH Web UI 中管理 Git Worktree

前言

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 進行覆蓋來修改這些值。

使用方法

  1. 創建 Worktree:打開一個新的會話,在 Workspace Picker 中展開 Worktree 芯片,點擊 New worktree…,輸入名稱(如 feat/okta-sso)並確認。
  2. 切換 Worktree:再次打開新會話,從 Worktree 芯片或側邊欄中選擇已有的 Worktree 工作區即可進入。
  3. 刪除 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

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

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

小夜