前言¶
在 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 实验。
- 仓库:lengrufeng2008/dsh-worktree
- 社区目录:skillhub.cn 插件页(独立站点,与 DeepSeek / 幻方无官方从属关系)
- 许可证:MIT(见
package.json) - 版本:v0.1.0;运行环境 Node.js >= 20
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 许可证,确认工具范围符合你的安全策略。
典型用法¶
- 在 SkillHub / DSH 中安装并启用 dsh-worktree(客户端类插件)。
- 在目标 Git 仓库根目录打开 DSH,让智能体通过
worktree_list了解现有 worktree,避免重复路径或分支冲突。 - 需要新实验目录时,在终端用 CLI
create(例如--path ../exp --branch exp-1),在 worktree 目录内开发,主工作区保持干净。 - 实验结束后用
remove卸掉 worktree;若存在脏工作区且你确认可丢弃,再考虑--force。 - 仓库内若有残留登记,用
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