前言¶
DSH(DeepSeek Harness)采用插件化架构,允许用户根据需求扩展功能。在 Web UI 中进行开发时,管理多个 Git 分支或 Worktree 通常需要频繁切换终端或离开浏览器界面。dsh-plugin-worktree 解决了这一痛点,它将 Claude Code 风格的 Git Worktree 支持引入了 dsh Web UI,允许用户在浏览器中直接创建、切换和删除 Worktree。
是什么¶
这是一个由 limoiie 维护的 DSH 插件。它的核心作用是在 dsh Web UI 中提供 Worktree 管理能力,让工作区切换不再依赖命令行。
核心功能¶
插件为 Web UI 增加了以下交互能力:
- New-session hero:在新建会话界面,Workspace 芯片会显示根工作区名称;Worktree 芯片会显示当前 Worktree 名称,并提供列出仓库 Worktree、创建新 Worktree 和切换到其他 Worktree 的入口。
- Sidebar badge:侧边栏的工作区标题会附带
⑂分支徽章,用于区分普通工作区和 Worktree 工作区。 - Delete dialog:删除 Worktree 工作区时,会弹出对话框询问是否同时删除对应的 Git Worktree 目录及其
dsh/<name>分支,或者仅删除 DSH 会话注册。
安装与启用¶
在使用前,请确保环境满足以下要求:
* 已安装并正常运行 dsh。
* 已配置 web profile(即运行 dsh web)。
* 机器上安装了 git。
* Node.js 版本为 18 或更高。
安装命令如下:
dsh plugin --profile web add dsh-plugin-worktree
安装完成后,重启 dsh web 即可生效。
配置¶
插件提供了两个配置项,默认值如下:
| 字段 | 默认值 | 说明 |
|---|---|---|
root |
process.cwd() |
用于 git rev-parse --show-toplevel 的目录 |
worktreesDir |
.dsh/worktrees |
Worktree 根目录;支持绝对路径或相对于仓库根目录的路径 |
用户可以通过在 cordis.patch.yml 中针对 id: worktree 进行覆盖来修改这些值。
使用方法¶
- 创建 Worktree:打开一个新的会话,在 Workspace Picker 中展开 Worktree 芯片,点击 New worktree…,输入名称(如
feat/okta-sso)并确认。 - 切换 Worktree:再次打开新会话,从 Worktree 芯片或侧边栏中选择已有的 Worktree 工作区即可进入。
- 删除 Worktree:在侧边栏找到对应的工作区,使用删除流程。系统会询问是否移除 Git Worktree 目录和分支,根据需要选择保留或删除。
注意事项¶
- 安全性:Worktree 名称会经过验证,以防止路径遍历攻击和无效的 Git 名称(长度限制 64 字符,仅允许字母、数字、点、下划线和连字符)。
- 分支删除限制:删除分支使用
git branch -d命令。如果分支包含未合并的提交,Git 会拒绝删除,此时客户端会提示“branch kept”。 - 目录清理:配置的 Worktrees 目录会尽力添加到
.git/info/exclude,以保持主检出目录的整洁。
总结¶
dsh-plugin-worktree 为 DSH Web 用户提供了原生的 Worktree 管理能力。通过在浏览器中直接操作,开发者可以更方便地管理并行开发环境。该插件地址:https://github.com/limoiie/dsh-plugin-worktree