dsh-worktree:在 DSH 裏只讀查看 Git worktree,用 CLI 做隔離實驗

前言

在 DSH 裏讓智能體改代碼時,常見做法是在同一倉庫主工作區裏切分支或直接改文件。Git worktree 可以在同一倉庫下掛多個獨立目錄,各自對應分支,適合並行試驗而不互相污染。難點在於:智能體若隨意 git worktree add/remove,容易誤刪未提交改動或碰到不安全分支名。

下面介紹社區插件 dsh-worktree(維護者 lengrufeng2008,分類:客戶端)。它在 DSH 側只提供 worktree 列表的只讀能力;創建、刪除、清理則限定在命令行完成,把「看」和「動倉庫結構」分開。

這是什麼

dsh-worktree 的定位來自項目自述:Read-only worktree listing for DSH plus CLI create/remove/prune for isolated git worktrees. 即:DSH 內只讀列舉 worktree;通過 CLI 創建、移除、prune,用於隔離式 Git worktree 實驗。

DSH 生態強調「一切皆插件」;該插件通過 dsh.bundle.patch 接入 Cordis 能力面,並附帶 skill 提示在倉庫內使用 worktree_list。

核心功能

DSH 內:只讀列表

智能體在 DSH 中應使用 worktree_list 查看當前倉庫下的 worktree 信息。該工具爲只讀,不會在 DSH 進程內創建或刪除 worktree。

項目 README 在 DSH 中的提示爲:

Use worktree_list on this repository.

CLI:create / remove / prune / list

變更 worktree 結構需使用包內 CLI(bin/dsh-worktree.mjs,npm bin 名 dsh-worktree)。README 給出的示例如下。

列舉(與 DSH 只讀列表對應的數據源側操作):

node bin/dsh-worktree.mjs list --root .

創建隔離目錄與分支(示例路徑與分支名可按需替換):

node bin/dsh-worktree.mjs create --root . --path ../exp --branch exp-1

移除指定 worktree 路徑:

node bin/dsh-worktree.mjs remove --root . --path ../exp

清理已失效的 worktree 登記:

node bin/dsh-worktree.mjs prune --root .

安全邊界(README Safety)

插件在設計上刻意收窄風險面:

  • DSH 工具只讀;create / remove 僅 CLI。
  • 若目標路徑已存在,或分支名不安全,會拒絕操作。
  • remove 在 worktree 有未提交改動時會拒絕,除非傳入 --force。
  • 不刪除分支,不執行測試。

安裝與啓用

已抓取資料中,GitHub README 未給出 dsh plugin add … 一類安裝命令;SkillHub 目錄頁標註該插件爲「可安裝客戶端」,版本 v0.1.0。安裝與啓用步驟請以 目錄頁 與當前 DSH 客戶端插件文檔爲準,不要憑倉庫名自行拼接安裝命令。

啓用後需滿足 Node.js >= 20。插件以當前 DSH 進程權限運行;安裝前應閱讀倉庫源碼與 MIT 許可證,確認工具範圍符合你的安全策略。

典型用法

  1. 在 SkillHub / DSH 中安裝並啓用 dsh-worktree(客戶端類插件)。
  2. 在目標 Git 倉庫根目錄打開 DSH,讓智能體通過 worktree_list 瞭解現有 worktree,避免重複路徑或分支衝突。
  3. 需要新實驗目錄時,在終端用 CLI create(例如 --path ../exp --branch exp-1),在 worktree 目錄內開發,主工作區保持乾淨。
  4. 實驗結束後用 remove 卸掉 worktree;若存在髒工作區且你確認可丟棄,再考慮 --force。
  5. 倉庫內若有殘留登記,用 prune --root . 與 Git 狀態對齊。

經過上面的步驟,智能體側主要是「看清單、選路徑」,結構變更留在人工可控的 CLI 一步。

適用場景與注意

適合:需要在同一倉庫做多路並行試驗、又希望 DSH 智能體先看清 worktree 佈局再動手的開發者;希望 create/remove 不進入 DSH 工具鏈、降低誤操作面。

注意:

  • 插件不會替你在 DSH 裏創建 worktree;計劃外的目錄變更只會來自你或腳本執行的 CLI。
  • remove --force 會繞過髒 worktree 保護,使用前確認無需要保留的改動。
  • 社區目錄星標等展示數據會變動;以 GitHub 與 SkillHub 頁面爲準(目錄抓取時 GitHub 星標爲 0)。

結尾

dsh-worktree 把 DSH 裏的 worktree 能力收成只讀列表,把隔離實驗的增刪留給 CLI,並寫明拒絕規則與 --force 語義。若你在 Harness 工作流裏常和 Git worktree 打交道,可從目錄頁安裝客戶端插件,再按 README 組合 worktree_list 與 dsh-worktree.mjs 命令。

  • 目錄頁:https://www.skillhub.cn/plugins/lengrufeng2008/dsh-worktree
  • GitHub:https://github.com/lengrufeng2008/dsh-worktree
羽毛球分组比赛记分
小程序二维码

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

小夜