前言¶
在 DSH 中跑編碼任務時,一個常見問題是 Agent 直接修改 Local checkout:任務增量容易和已有 staged、unstaged、untracked 內容混在一起;多個任務也可能爭用同一個 checkout。
dsh-git-worktree 針對這個點,把“施工”和“交付”拆開:Agent 在隔離 Worktree 中修改和測試,用戶先查看可撤回的 Local Preview,確認後再由 Host 保存本輪任務增量。
這是什麼¶
wloops/dsh-git-worktree 是 DeepSeek Harness 的實驗性 Session Target 插件,由 wloops 維護,使用 MIT 許可證。
它的一句話定位是:讓 Agent 在真實 Git Worktree 中執行任務,先預覽修改,再由用戶明確確認是否保存。
它是獨立維護的社區插件,不是 DeepSeek 官方項目,也不代表官方背書、合作或授權。當前定位是項目級 Worktree Session 交付插件,不是跨項目全局 Worktree Manager。
核心功能¶
- 每個任務擁有獨立 Git Worktree、Workspace 和唯一 owner Session。
- Agent 只在隔離 Worktree 中修改和測試。
- 用戶先查看可撤回的 Local Preview。
- Host 只保存本輪任務增量,不吞入無關 Local 修改。
- 無法證明安全時停止寫入並保留恢復證據。
- Managed owner 以 Branch Icon 和狀態 Badge 直接歸入原 Local 項目;普通 Local Session 保持官方行爲。
- Ready 後由用戶選擇“預覽修改”“確認並保存”或其他操作。
- 預覽寫入 Local 但不立即創建 Commit,可安全撤回。
- 最終只爲本輪累計增量創建一個 Commit。
- Checkpoint 只存在於 managed Worktree,最終仍合併爲一次交付。
- 處理 Local 漂移、衝突、
preview_detached、重啓和 cleanup 中斷。 - 多個 Worktree 可並行工作,同一 Local 項目一次只接受一個 Preview。
- 交付並 cleanup 後,可在原 Session 和對話中開始下一輪。
安裝與啓用¶
環境要求¶
- Node.js
^22.19.0 || >=24.0.0 - DeepSeek Harness
0.1.1-rc.2包線 - Harness Web Client
- Git Workspace
安裝¶
下面命令用於在 web profile 下安裝插件:
dsh plugin --profile web add dsh-git-worktree
如果需要使用指定版本:
dsh plugin --profile web add github:wloops/dsh-git-worktree#v0.7.1
啓用¶
安裝後打開 Git Workspace,在新建 Session 時啓用 Worktree。
已有 Local Session 也可以讓模型調用 worktree_create 創建隔離 Session。
第一次使用建議先完成一次完整流程:
創建 → 預覽修改 → 確認並保存 → cleanup
典型用法¶
驗收時怎麼選¶
根據目標選擇操作:
| 目標 | 操作 |
|---|---|
| 先在 Local 查看效果 | 預覽修改 |
| Preview 沒問題 | 確認並保存 |
| 任務很長,先固定進度 | 保存階段並繼續 |
| 還要讓 Agent 改代碼 | 繼續修改或撤回本次預覽 |
| 不需要 Preview | 跳過預覽並保存 |
幾個關鍵行爲如下:
- “預覽修改”會寫入 Local,但不立即創建 Commit,可安全撤回。
- “確認並保存”最終只爲本輪累計增量創建一個 Commit。
- “保存階段並繼續”會在 managed Worktree 中保存 Checkpoint,最終仍合併爲一次交付。
本地開發¶
如果你要參與該插件開發,按下面命令安裝依賴並跑檢查:
pnpm install
pnpm run typecheck
pnpm test
pnpm run build
pnpm run check:publish
端到端啓動:
pnpm run dev:dsh
安全邊界與當前限制¶
- 所有 Local 寫入都由 Host 在執行前重新檢查,瀏覽器緩存和模型輸出不構成寫入授權。
- 插件會驗證 Session、checkout、revision、Git 身份、Preview receipt 和 Local 狀態;遇到分支切換、重疊衝突、未知殘餘或恢復證據不足時會 fail closed。
- owner 缺失、額外 Session 或歸屬衝突時保留原 Workspace,避免靜默隱藏數據。
- Worktree-aware Fork 尚未實現,本版不顯示普通 Fork 入口。
- 子 Agent 繼承父 Session cwd,插件不額外創建 per-child Worktree。
- Checkpoint 不提供歷史編輯、刪除、重排或任意回退。
- Domi 的全局 Manager、Local Maintenance、依賴快照和完整 collaborator 生命週期不在本插件範圍內。
適用場景與注意¶
適合這類使用場景:
- 想讓 Agent 先改、先測,不直接污染 Local checkout。
- 想在 Local 中看到可撤回預覽後再決定是否保存。
- 需要把本輪任務增量保存成一次交付,而不是混入其他本地修改。
- 希望多個 Worktree 可以並行工作,但同一 Local 項目一次只接受一個 Preview。
使用前注意:
- 插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。
- 它是獨立社區插件,不是 DeepSeek 官方項目,也不代表官方背書、合作或授權。
- 社區目錄頁提供插件信息,但不等同於官方應用商店。
結尾¶
dsh-git-worktree 的核心價值,是把 Agent 的本地修改從“直接落盤”變成“隔離施工、人工預覽、確認交付”。如果你希望在 DSH 中控制 Agent 修改 Local 的邊界,它提供了一個可用的工作流方案。
目錄頁:
https://www.skillhub.cn/plugins/wloops/dsh-git-worktree
GitHub: