前言¶
DeepSeek Harness(DSH)新建會話時,你可以選工作區和 Agent 模式,但對話默認從當前工作區目錄、當前已檢出的分支開始。並行讓多個智能體改不同分支時,往往要先手動切分支、stash,或自己建 worktree,再開新會話。
dsh-branch-worktree 是 DSH 的 Web UI 客戶端插件,在「新建會話」那一行的工作區與 Agent 模式芯片之間增加「分支 / worktree」選擇,用一次點擊完成分支選擇(或新建)與隔離檢出,會話在獨立 worktree 裏啓動,主工作副本里未提交的改動不會被碰動。
這是什麼¶
維護者 elfgzp 在 GitHub 開源的 dsh-branch-worktree(package 版本 1.1.1,MIT 許可證)。它面向已在 DSH 裏用 Git 倉庫作工作區的開發者:把「選分支 + 是否 worktree」收進 New Session 界面,而不是在終端裏重複 git worktree add。
社區目錄頁:skillhub.cn/plugins/elfgzp/dsh-branch-worktree。目錄站點與 DeepSeek / 幻方無官方從屬關係;DSH 生態本身是「一切皆插件」,第三方插件需自行審源碼與許可證後再安裝。
核心功能¶
新建會話那一行的順序是:項目 → 分支 → 模式,與決策順序一致。分支控件以下拉麪板打開,不是模態框,後面的輸入區仍可見可用。
| 控件 | 來源 |
|---|---|
| 工作區 / 項目 | DSH 內置 |
| Agent 模式(如 Creator) | DSH 內置 |
| 分支,或新分支 + 基準 | 本插件 |
| 自動 worktree | 本插件 |
主要行爲(與 README 一致):
- 默認自動命名:worktree 開關默認開啓,面板打開即可直接「Start here」;插件會生成分支名與 worktree 目錄名並在 Will create 裏預覽,創建結果與預覽一致。未輸入可用草稿時用時間戳(如
wt/20261103-153102);草稿來自已輸入但未發送的提示詞(英文類文本會 slug 化到wt/…命名空間,非 ASCII 草稿不轉寫,回退時間戳)。重名會自動加後綴。 - 手動選分支:關閉 Auto name 後,可選已有分支或在 New branch 裏輸入新名,並選 based on(默認倉庫默認分支)。新分支從所選基準創建;已有分支複用,不重複創建。
- 兩種模式:Create a worktree(默認)在
<repo>/.worktrees/<branch>下執行git worktree add,將該目錄註冊爲 DSH 工作區並在其中開會話;Switch in place 在當前檢出裏git checkout,工作樹 dirty 時會拒絕,避免覆蓋未提交改動。 - 已在其他 worktree 檢出的分支在列表裏顯示爲
in use並禁用(Git 不允許同一分支檢出兩次)。若該分支已在主工作副本檢出,開啓 worktree 模式時會被明確拒絕(不會再把主副本當作「複用 worktree」)。 - 首次運行會把
.worktrees/寫入.git/info/exclude,worktree 池不會污染git status。 - 未發送的草稿會帶進新會話,並參與自動命名。
- 當前工作區不是 Git 倉庫時,分支芯片隱藏;切回倉庫工作區後恢復。
worktree 目錄佈局示例:
my-repo/
├── .git/
├── .worktrees/
│ ├── feature-login/ ← branch feature/login
│ └── fix-crash/ ← branch fix/crash
└── ... 主檢出,不被改動
「Create worktree」不等於「一定新建分支」:自動命名會 git worktree add -b 建新分支;手動給的新名字同樣 -b;已有分支則 git worktree add <path> <branch> 只加 worktree。
安裝與啓用¶
依賴:DSH >= 0.2.0,且系統 PATH 上有 git。
通過 Web UI(推薦)¶
- 側欄 → Plugins → Add plugin → Install a third-party plugin。
- 粘貼倉庫地址並確認:
https://github.com/elfgzp/dsh-branch-worktree
- 在 Installed plugins 裏打開 Branch & Worktree。若界面未立即出現,重啓 DSH。
讓 Agent 安裝¶
在已啓用 plugin-manager 工具的會話(Creator 模式可用)中說:
從 https://github.com/elfgzp/dsh-branch-worktree 安裝這個插件並啓用
Agent 會通過 plugin_manager 的 install_bundle 寫入 profile 依賴、更新 dsh.profile.bundles 並激活。
注意¶
插件以當前 DSH 進程權限運行;安裝前請閱讀倉庫源碼與 MIT 許可證。不要手改 profile 的 package.json 或 cordis.patch.yml,以免與 plugin manager 管理的 bundle 列表不同步。
典型用法¶
- 點擊 New Session。
- 選擇工作區,再點中間 branch chip。
- 默認可直接 Start here(自動命名 + worktree 均已開啓)。
- 若要自己命名:關閉 Auto name,選已有分支或輸入 New branch,必要時選 based on。
- Start here(或在名稱框按 Enter)。
會話在結果目錄打開,側欄工作區會以分支名顯示。
適用場景與注意¶
適合:同一倉庫上並行多個 DSH 會話、每個會話對應不同分支,且希望主目錄保持當前分支與未提交改動不動。
不適合或需知:非 Git 工作區無此芯片;必須在 dirty 時原地切分支請先用 stash 或 commit,或保持 worktree 模式;已在別處檢出的分支無法再次選中。
結尾¶
dsh-branch-worktree 把 New Session 上缺失的「分支 + 隔離檢出」補成一行裏的一個芯片,默認零輸入即可按草稿或時間戳開 wt 分支並在 .worktrees/ 下開會話。詳情與截圖見 GitHub README;社區條目見 目錄頁,源碼見 https://github.com/elfgzp/dsh-branch-worktree。