Git Worktree Session Target:任务在隔离 Session 中运行,支持 Ready for Review、可撤回的 Local Preview、人工确认交付、环境保留与恢复,以及同一 Session 连续迭代。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-git-worktree
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:wloops/dsh-git-worktree
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
让 Agent 在独立 Git Worktree 中完成任务,你看过修改后再决定是否保存。
dsh-git-worktree 是 DeepSeek Harness 的 Git Worktree 插件:让 Agent 在独立的 Git Worktree 里工作,改动可一键验收、撤回或阶段性保存,Worktree 会话列表自动聚合,归属关系一目了然。只有你发起预览或确认保存时,插件才会把任务改动写回当前项目。
这套 Git Worktree 工作方式最初来自基于 Pi Agent Runtime 的开源桌面 coding 工作台 Domi,本插件是针对 DeepSeek Harness 独立适配的版本,可以单独安装和使用。
为什么使用它?
让 Agent 直接修改当前项目时,它的改动可能与你尚未提交的内容混在一起;同时运行多个任务时,也更容易互相影响。使用本插件后:
- 每个任务都在自己的 Git Worktree(独立工作目录)中修改和测试;
- 多个隔离任务可以同时开发,各自使用独立工作目录;同一项目一次只允许一个任务进入验收写回流程;
- Agent 完成后,你可以先把修改临时显示在当前项目中查看;
- 只有确认后才会保存本轮修改,遇到冲突时不会自动覆盖你的内容。
核心能力
- 独立工作目录:每个任务在自己的 Git Worktree 里修改和测试,互不干扰。
- 多个 Worktree 并行:可以同时开发多个任务;为了避免混入修改,同一项目每次只验收一个任务。
- 提交前预览:先在当前项目中查看真实效果,不会立即创建 Git 提交。
- 不满意可以退回:撤回本次预览,继续让 Agent 修改,不影响其他本地改动。
- 只保存本轮任务:确认后只提交这个任务的修改,不把无关内容一起带入。
- 长任务可分阶段:先保存当前阶段的进度,再继续开发;最终仍合并为一次交付。
- 出错时保护现场:检测到分支变化、内容冲突或中断时停止操作,保留现场供你处理。
- 任务自动归组:同一项目的当前及历史 Worktree 自动聚合到原项目的侧边栏,归属不明确时保留原位置。
- 验收详情集中查看:从验收条打开只读详情,查看文件列表、验证记录与版本信息,不必翻找聊天工具记录。
- 空仓库也能用:没有提交记录的仓库,确认后会先创建一个不含你文件的空提交,再建立隔离 Worktree。
- 携带项目 Skills:首次及下一轮 Worktree 创建时一次性携带
.dsh/skills、.agents/skills和.claude/skills,辅助文件与 Git 交付隔离。 - 原对话继续下一轮:任务交付后,无需新开对话即可继续下一项修改。
当前版本管理单个项目中的 Git Worktree,暂不提供跨项目的全局管理界面。
工作流
flowchart LR
A[当前项目] -->|创建隔离任务| B[独立 Git Worktree]
B --> C[Agent 修改并测试]
C --> D[查看验收结果]
D -->|预览修改| E[在当前项目中查看效果]
E -->|确认并保存| F[创建本轮提交]
F --> G[在原对话继续下一轮]
D -.->|保存阶段进度| H[继续开发]
E -.->|撤回本次预览| I[返回修改]
D -.->|跳过预览| F
怎么选?
| 目标 | 操作 |
|---|---|
| 先在当前项目中查看效果 | 预览修改 |
| 预览结果没有问题 | 确认并保存 |
| 任务很长,先固定当前进度 | 保存阶段并继续 |
| 还要让 Agent 改代码 | 继续修改或撤回本次预览 |
| 不需要先查看效果 | 跳过预览并保存 |
详细的操作、恢复场景和命令见完整使用指南。
快速开始
环境要求
- Node.js
^22.19.0 || >=24.0.0 - DeepSeek Harness Web Client
- Git Workspace
- 与 Harness 版本匹配的插件版本,见下表
版本选择
| DeepSeek Harness | 插件版本 |
|---|---|
0.2.2-rc.1 |
0.12.3(当前版本) |
0.2.1-rc.2(构建基线)、0.2.1-rc.5 |
0.12.3 |
0.2.0-rc.2 |
0.10.0 |
0.1.x |
请参考 0.9.x 的历史兼容记录,不代表所有 0.1.x 版本均已验证 |
插件版本与 Harness 版本需要匹配,不建议在旧版 Harness 上直接安装最新版插件。各版本的验证范围、已知限制与安装策略见兼容性说明。
安装
通过 dsh 的 Web Profile 安装当前版本:
dsh plugin --profile web add dsh-git-worktree@0.12.3
如果使用其他 Harness 版本,请先按上表选择匹配的插件版本。
安装后打开 Git Workspace,在新建 Session 时启用 Worktree;已有 Local Session 也可以让 Agent 调用 worktree_create 创建独立的隔离 Session。
第一次使用建议先完成一次“创建 → 预览修改 → 确认并保存 → 清理 Worktree”的完整流程。
升级与排错
- 升级 Harness 前,请先备份数据并检查版本兼容性;旧版数据迁移要求见升级与回退。
- 出现 Failed to load plugins 时,先确认插件与 Harness 版本匹配,再按使用指南排查。
- 刚发布的版本可能被 Harness 的供应链防护(
minimumReleaseAge)暂时跳过而回退旧版;可显式指定匹配的精确版本,或待防护窗口过后重试。
Git 源安装方式、pnpm build approval 及其他排错步骤见安装与排错。
界面预览
项目聚合与任务状态

准备验收

冲突与恢复
检测到冲突或分支变化时,插件只读检查并保留现场,由你决定如何处理:

完整操作步骤见完整使用指南。
安全边界
每次把任务修改写回当前项目之前,插件都会重新确认任务版本、项目位置和文件状态仍与验收时一致。如果你切换了分支、修改发生冲突,或上一次操作意外中断,插件会停止写入并保留现场,而不是猜测后继续覆盖。
Worktree 隔离主要用于避免任务之间误改文件,不是用来运行不受信任代码的系统沙箱。
更详细的状态检查与恢复规则见:
当前限制
- 只有归属关系明确的任务才会聚合到原项目;无法确认时仍保留原位置,避免任务被隐藏。
- 隔离任务可以重命名和归档,暂不支持从任务对话直接复制出新任务(Fork)。
- 子 Agent 与父任务使用同一个工作目录,不会再为每个子 Agent 创建新的 Worktree。
- 已保存的阶段记录暂不支持编辑、删除、调整顺序或回退到任意阶段。
- Domi 中更完整的跨项目管理、直接修复当前项目、依赖复用和协作交接能力不在本插件当前范围内。
本地开发
pnpm install
pnpm run typecheck
pnpm test
pnpm run build
pnpm run check:publish
端到端启动:
pnpm run dev:dsh
文档
许可证
界面语言
插件跟随 DSH 的中英文选择,不提供独立语言开关。请在 DSH 中明确选择 English,以便界面、工具和 /worktree 消息都使用英文;自动浏览器语言尚未写入 DSH 偏好时,工具和命令会回退中文。详见 语言传递与文案贡献说明。
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-git-graph★ 10379
输入框上方提供 Git 分支选择器,并把分支泳道与提交历史画成图谱,沿着时间线找到任意变更。作者已将其退役并改用官方 workspace-changes 插件;已发布的 npm 包仍可安装,但不再开发。
Akimiya-z/codex-guard#dsh★ 132
在 DeepSeek Harness 内做提交前的 Pull Request 卫生检查:扫描当前改动中的 TODO 残留、硬编码密钥与非规范提交信息。
xbzbing/dsh-git-panel★ 50
DSH Web GUI 里的 IDE 风格 Git 面板:常驻标签页含三栏总览(分支/标签列表、可搜索的提交历史图、含变更文件树与提交信息的提交详情)与变更记录页(统计条、带逐文件暂存/取消/丢弃的未提交列表、含 amend 的提交框);并排差异带懒加载 highlight.js 语法高亮、块间上下文按需展开与词级行内高亮,图片文件以变更前/后双图对照;另在输入框提供 zsh 风格分支标记。所有 git 命令以 argv 数组经宿主 subprocess 执行、cwd 锁定仓库根。
Cerbur/clutch-dsh#clutch-dsh-worktree★ 46
为 DSH Web UI 增加按 Git Worktree 组织 Session 的视角,同时继续由 DSH 管理原始 Project 和 Session 数据。
DamonKoy/dsh-web-ui#dsh-git-graph★ 31
dsh web GUI 会话头部栏的 Git 分支选择器与提交图。
Lenonss/DSH_VsCodeMode★ 31
为 DeepSeek Harness 提供类 VSCode 编码体验:基于 Monaco 的中央文件编辑器(文件页签、Ctrl+P 快速打开、状态栏),并对 Agent 的 edit/write 结果进行交互式差异审查(逐处采纳/拒绝、回滚、归档),状态跨重启持久化。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。