dsh-worktree:DeepSeek Harness (DSH) 的 Git Worktree 工具

在 DSH 中进行智能体开发时,经常需要在独立分支上并行推进任务,同时保留当前对话的上下文。原生 DSH 没有直接提供这种级别的 git worktree 管理,dsh-worktree 插件填补了这一空白。

插件简介

dsh-worktree 是 Jiazliang 开发的一款 DSH 工作流插件。它的核心价值是提供类似 git fork 的操作:为任意工作区或会话创建隔离的 git worktree(独立分支),并在其中打开一个新会话。

插件提供了「创建 → 使用 → 删除」的完整闭环,支持会话分叉(继承对话历史),能够实现互不干扰的并行开发。

核心功能

1. 创建独立 Worktree

在工作区菜单点击「创建 Worktree」,可以基于当前仓库创建一个独立的 git worktree 和独立分支。

  • 目录隔离:新工作区出现在侧栏,新会话的当前工作目录(cwd)指向仓库外层的 <仓库名>.Worktree/<id> 目录。
  • 自动打开:创建后会自动打开一个新会话,且该会话使用独立分支。
  • 零干扰:主工作区的 .git 目录不被触碰,主仓库的 git status 保持干净。

2. 分叉到 Worktree

在会话菜单点击「分叉到 Worktree」,可以带着当前对话的所有上下文进入新的 worktree。

  • 继承历史:新会话继承当前会话的全部对话历史。
  • 配置继承:继承当前会话使用的 preset 与模型设置,无需重新配置。

3. 删除 Worktree

在插件创建出来的 worktree 工作区上,菜单会多出一行「删除 Worktree」。

  • 强制拆除:强制删除 worktree 目录、对应分支,并移除工作区登记。
  • 安全护栏:该操作只对插件创建的 worktree 工作区显示,普通工作区看不到这一行,防止误删主仓库。
  • 数据保留:注意,此操作会丢弃未提交的更改,但会话日志会保留(与 DSH 原生行为一致)。

4. 兼容性与界面

  • 自动适配:优先使用新版 DSH 的原生菜单插槽,旧版构建自动降级为 DOM 注入适配器。
  • 中文界面:菜单项采用中文命名,与 DSH 内置条目保持对称。

安装与启用

使用官方插件命令进行安装:

dsh plugin --profile web add github:Jiazliang/dsh-worktree

安装完成后,需要重启 dsh web 应用才能生效。

典型用法

场景:从主工作区分出一条独立开发线

  1. 在侧栏的某个工作区(文件夹)上打开菜单,点击「创建 Worktree」;
  2. 侧栏出现新工作区,新会话自动打开,此时工作目录已指向独立的 worktree(独立分支);
  3. 在该会话中进行开发、提交等操作,所有更改只影响该分支;
  4. 如果需要带着当前的对话上下文另起一条线,在会话菜单点「分叉到 Worktree」,子会话将继承全部历史并落在新的 worktree 上;
  5. 任务完成或不再需要该分支时,在该 worktree 工作区的菜单点「删除 Worktree」,目录和分支将被清理。

注意事项

  • 前置条件:创建需要目标工作区是 git 仓库(能从 cwd 解析出仓库根)。
  • 删除行为:「删除 Worktree」是破坏性操作,未提交的更改会随目录删除而丢弃,但会话日志会保留。
  • 路径结构:新会话的 cwd 指向仓库外层的 <仓库名>.Worktree/<id> 目录。

结语

dsh-worktree 通过插件化的方式为 DSH 增加了 Git Worktree 能力,适合需要在同一仓库内并行管理多个分支和会话的开发者。更多细节可查阅插件目录或源码仓库。

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

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

小夜