dsh-branch-worktree:在新會話裏選分支並自動進入 Git worktree

前言

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(推薦)

  1. 側欄 → Plugins → Add plugin → Install a third-party plugin。
  2. 粘貼倉庫地址並確認:
https://github.com/elfgzp/dsh-branch-worktree
  1. 在 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 列表不同步。

典型用法

  1. 點擊 New Session。
  2. 選擇工作區,再點中間 branch chip。
  3. 默認可直接 Start here(自動命名 + worktree 均已開啓)。
  4. 若要自己命名:關閉 Auto name,選已有分支或輸入 New branch,必要時選 based on。
  5. 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。

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

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

小夜