dsh-worktree:在 DSH 里只读查看 Git worktree,用 CLI 做隔离实验

前言

在 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 实验。

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 许可证,确认工具范围符合你的安全策略。

典型用法

  1. 在 SkillHub / DSH 中安装并启用 dsh-worktree(客户端类插件)。
  2. 在目标 Git 仓库根目录打开 DSH,让智能体通过 worktree_list 了解现有 worktree,避免重复路径或分支冲突。
  3. 需要新实验目录时,在终端用 CLI create(例如 --path ../exp --branch exp-1),在 worktree 目录内开发,主工作区保持干净。
  4. 实验结束后用 remove 卸掉 worktree;若存在脏工作区且你确认可丢弃,再考虑 --force。
  5. 仓库内若有残留登记,用 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
羽毛球分组比赛记分
小程序二维码

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

小夜