dsh-worktree:DSH 子代理的 Git worktree 隔离与交付

前言

在 DSH “一切皆插件”的思路下,dsh-worktree 以插件形式接入。它解决的是一个具体问题:多个 DSH 子代理同时处理同一仓库时,并行写入容易互相干扰。该插件让子代理在独立 Git worktree 中工作,任务结束后再审阅、验证、提交、合并、推送、创建 Pull Request、归档或恢复结果。

这是什么

仓库所有者是 paradoxSCH,仓库地址为:

https://github.com/paradoxSCH/dsh-worktree

包信息如下:

@paradoxsch/dsh-worktree
0.1.0-alpha.2
MIT

package.json 声明的 Node 要求是:

>=22.19.0

当前 alpha 版本支持已发布的 DSH:

0.1.0-rc.6
0.1.x

插件会安装到全局 DSH profile,不会修改业务项目的 package.json

安装与启用

先选择要安装的 DSH profile,再执行安装命令。

Web profile:

dsh plugin --profile web add @paradoxsch/dsh-worktree@alpha

Headless profile:

dsh plugin --profile headless add @paradoxsch/dsh-worktree@alpha

安装完成后,可以检查当前 profile 是否能看到这个插件:

dsh plugin --profile web why @paradoxsch/dsh-worktree
dsh --profile web --dump-config

典型用法

委派子代理

让 Agent 使用以下委派能力,子代理会自动进入独立 worktree:

subagent_worktree

如果任务需要并行执行,可以设置:

run_in_background: true

之后通过 DSH 的任务接口查看结果或停止任务:

job_output
job_kill

手动管理 worktree

也可以使用 /worktree 命令手动管理。常用命令如下:

/worktree list
/worktree create working-state managed
/worktree review <id>
/worktree validate <id>
/worktree doctor
/worktree recover

命令中的 <id> 表示某个 worktree 标识。

审阅和交付

/worktree 支持以下交付操作:

/worktree review <id>
/worktree validate <id>
/worktree commit <id> <message>
/worktree branch <id> <branch-name>
/worktree handoff <id>
/worktree merge <id>
/worktree push <id>
/worktree pr <id> <title>
/worktree archive <id>
/worktree restore <id>
/worktree discard <id> confirm

这些命令覆盖审阅、验证、提交、分支、交付、合并、推送、Pull Request、归档和恢复等路径。

任务起点与保留方式

创建 worktree 时,事实中支持以下模式值:

working-state
head
fresh
ephemeral
managed
permanent

其中 working-stateheadfresh 用于选择任务起点;ephemeralmanagedpermanent 用于选择保留方式。

关于敏感文件,已确认的行为是:

  • ignored 文件默认不会复制。
  • .env、密钥和证书等敏感内容即使列在 .worktreeinclude 中也不会复制。

安全与恢复

已确认的安全约束包括:

  • 有修改的 worktree 不会被自动丢弃。
  • 删除、合并、提交、推送和 Pull Request 等操作会在执行前重新检查 worktree 状态。
  • push 不使用 force。
  • merge 要求目标 checkout clean。
  • worktree 解决并行写冲突,但不替代 DSH sandbox 或审批策略。

创建 Pull Request 需要已登录的 GitHub CLI。可以先检查:

gh auth status

默认持久化数据位于:

$DSH_HOME/plugins/dsh-worktree

环境诊断和状态恢复可以使用:

/worktree doctor
/worktree recover

适用场景与注意

适合在 DSH 中让多个子代理并行处理同一个仓库,同时希望每个任务拥有独立 checkout,并在任务结束后保留可审阅、可交付、可恢复的结果。

注意:

  • 该插件随当前 DSH 进程权限运行,安装前应检查源码、package.json 和 MIT 许可证。
  • 插件安装到全局 DSH profile,不会修改业务项目的 package.json
  • 卸载 Bundle 不会删除 retained 或 archived 结果。

卸载

卸载命令如下:

dsh plugin --profile web remove @paradoxsch/dsh-worktree
dsh plugin --profile headless remove @paradoxsch/dsh-worktree

确认不再需要 retained 或 archived 结果后,再单独处理:

$DSH_HOME/plugins/dsh-worktree

结尾

dsh-worktree 的主要价值,是把 DSH 子代理的并行写入隔离到独立 Git worktree 中,并提供审阅、验证、提交、合并、推送、Pull Request、归档和恢复的交付链路。若需要查看源码、许可证或反馈问题,可访问:

https://github.com/paradoxSCH/dsh-worktree
羽毛球分组比赛记分
小程序二维码

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

小夜