前言¶
在 DeepSeek Harness(DSH)里,侧边栏会列出多个工作区,每个工作区对应一个目录和会话。当你要在同一仓库上并行试不同改动、或想保留一份「干净检出」又不想手动敲 git worktree,通常要自己记目录命名、分支名,再在 DSH 里再登记一次新路径。
dsh-fork-worktree 把这件事接到工作区行上:在 … 和 + 之间多两个按钮,用确认弹窗完成 fork 或删除,并在成功后打开新会话或清理登记。下面介绍它做什么、怎么装、怎么用,以及使用时要注意的边界。
这是什么¶
dsh-fork-worktree 是社区维护的 DSH 插件(维护者 Bainianzzz),分类为工作流。它给侧边栏每条工作区记录增加 fork 与垃圾桶操作:前者基于当前工作区目录对应的 git 仓库创建 worktree 并注册为新工作区;后者删除该工作区的 worktree 并移除登记。插件以 MIT 许可证发布,当前 package 版本为 0.2.1,要求 DSH >=0.2.1-rc.2 <0.3.0。
目录页:skillhub.cn/plugins/Bainianzzz/dsh-fork-worktree
源码与说明:github.com/Bainianzzz/dsh-fork-worktree
核心功能¶
工作区行上的两个按钮¶
安装并启用后,将鼠标悬停在工作区行上可见:
- fork:从该工作区 fork 出新的 git worktree,登记为新工作区,并在新工作区中打开会话。
- 垃圾桶:删除该工作区对应的 worktree,并移除工作区登记。
两种操作都会先弹出确认框;仅点击按钮不会直接执行。
fork:两种创建方式¶
确认框里可选择:
- 创建 git worktree:只检出已提交内容;未提交修改、未跟踪文件、以及被
.gitignore忽略的内容仍留在源目录。 - 复制并创建 worktree:检出后把 worktree 里缺失的文件从源目录复制过去,包括未跟踪与被忽略的内容(例如
node_modules、.env、构建产物、配置文件等)。已跟踪文件保持 HEAD 版本;相对路径软链按原样保留。
目录已是 git 仓库时¶
点任一创建按钮后:
- 在仓库同级创建目录
<仓库名>-wt-<label>。 - 分支名为
wt/<label>,基于当前 HEAD。 - 若选了复制方式,会补齐缺失文件,并注册为新工作区。
目录还不是 git 仓库时¶
弹窗会切到「初始化」模式(保留你已选的方式)。再次确认后会执行 git init,把目录当前内容作为首个提交(空目录则为空提交),再创建 worktree。
成功后会在新工作区打开会话,并用 toast 显示路径;复制方式下还会提示复制了多少项。若复制失败,刚创建的 worktree 与分支会一并撤销。
删除 worktree¶
- 点垃圾桶后,确认框会写明将要删除的路径,并说明会话记录会保留。
- 确认后通过
git worktree remove删除 worktree,清理仓库 worktree 元数据,并移除工作区登记。 - 若存在未提交修改或未跟踪文件,会拒绝删除;弹窗切到「强制删除」模式,需再次确认才执行。
- 护栏:不会删除
$HOME与文件系统根目录。
删除刻意没有斜杠命令入口,避免一条命令误删当前会话正在使用的目录。
自动清理¶
若 worktree 目录在文件系统里被外部删掉,对应的工作区登记会自动移除;普通目录以及不符合命名规则的目录不受影响。
安装与启用¶
在侧栏打开插件面板,点添加插件,填入下面这一行(与 README 一致):
github:Bainianzzz/dsh-fork-worktree
安装完成后点立即启用。启用后 hover 工作区行即可看到 fork 与垃圾桶按钮。更多安装方式见仓库 Release 页。
DSH 生态强调「一切皆插件」;SkillHub 等社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。插件在当前 dsh 进程权限下执行 git 与文件操作,安装前请自行查看源码与 MIT 许可证。
典型用法¶
侧栏按钮¶
- 选中一条工作区,点 fork,在弹窗里选「创建 git worktree」或「复制并创建 worktree」,再点对应创建按钮并确认。
- 需要拆掉某个 fork 出来的工作区时,点 垃圾桶,核对路径后确认;有脏工作区时按提示走强制删除二次确认。
会话内命令(仅 fork)¶
在该工作区的会话里可以执行:
/fork-worktree [name] [--init] [--copy]
省略 name 时,会用 6 位随机 hex 作为 label;--copy 对应「复制并创建 worktree」。非 git 目录可用 --init 配合初始化流程(与侧栏「初始化」模式一致)。
适用场景与注意¶
适合在同一仓库上开多条并行工作区、或需要把当前目录(含本地未提交/被忽略文件)快速复制到新 worktree 再继续对话的场景。若你只想要纯 HEAD 检出、且希望源目录里的未提交改动完全隔离,选「创建 git worktree」即可。
注意:
- 复制方式会带入
node_modules、.env等被忽略文件,请确认无敏感信息误拷到新目录。 - 删除会动真实目录与 git worktree 元数据;强制删除可清掉有未提交改动的 worktree,操作前看清确认框里的路径。
- 引擎版本需落在
>=0.2.1-rc.2 <0.3.0,与当前 DSH 不匹配时请先升级或换兼容版本。
结尾¶
dsh-fork-worktree 把 git worktree 的创建与清理绑到 DSH 工作区行上,减少手抄路径和重复登记。需要细节与更新时,以 GitHub README 为准:Bainianzzz/dsh-fork-worktree;也可从目录页进入:skillhub.cn/plugins/Bainianzzz/dsh-fork-worktree。