前言¶
在 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 實驗。
- 倉庫:lengrufeng2008/dsh-worktree
- 社區目錄:skillhub.cn 插件頁(獨立站點,與 DeepSeek / 幻方無官方從屬關係)
- 許可證:MIT(見
package.json) - 版本:v0.1.0;運行環境 Node.js >= 20
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 許可證,確認工具範圍符合你的安全策略。
典型用法¶
- 在 SkillHub / DSH 中安裝並啓用 dsh-worktree(客戶端類插件)。
- 在目標 Git 倉庫根目錄打開 DSH,讓智能體通過
worktree_list瞭解現有 worktree,避免重複路徑或分支衝突。 - 需要新實驗目錄時,在終端用 CLI
create(例如--path ../exp --branch exp-1),在 worktree 目錄內開發,主工作區保持乾淨。 - 實驗結束後用
remove卸掉 worktree;若存在髒工作區且你確認可丟棄,再考慮--force。 - 倉庫內若有殘留登記,用
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