dsh-plugin-worktree:在 DSH Web UI 中管理 Git Worktree

前言

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 进行覆盖来修改这些值。

使用方法

  1. 创建 Worktree:打开一个新的会话,在 Workspace Picker 中展开 Worktree 芯片,点击 New worktree…,输入名称(如 feat/okta-sso)并确认。
  2. 切换 Worktree:再次打开新会话,从 Worktree 芯片或侧边栏中选择已有的 Worktree 工作区即可进入。
  3. 删除 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

羽毛球分组比赛记分
小程序二维码

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

小夜