Skip to main content
dsh-tauri-worktree 为会话创建独立 Git 工作树,在隔离目录中修改代码,再按你的选择检出回本地分支或放弃。
从主工作区选择 Worktree

开始隔离工作

  • 当前会话位于本地 Git 仓库,宿主可以执行 git。
  • 本地必须存在 main 分支;新工作树以 refs/heads/main 为起点,不以当前分支为起点。
  • 输入区仅在确认是 Git 仓库、且尚未进入 Worktree 时显示模式选择。
1

明确选择 Worktree

在输入区选择 Worktree 后发送请求,或明确要求 Agent 使用 Worktree。create_worktree 只能用于本地会话,不能在已有 Worktree 会话中再次调用。
2

创建工作树与新会话

默认目录为 ~/.dsh/worktrees/[hash]/[dirname];设置 DSH_HOME 后使用其 worktrees 子目录。工具创建后在当前轮次结束时交接上下文;输入区切换会迁移草稿与附件。
3

修改、验证并提交

在新目录继续工作。输入区状态栏提供创建进度、日志、检出与放弃入口。

检出或放弃

checkout_worktree 只能在直接的人类用户明确请求或批准后调用。任务完成、提交代码、PR 合并或 Agent 认为方便,都不是授权;需要时先询问,再等待批准。
检出前必须满足以下条件:
  • 本地主工作区没有未提交改动,且不处于 detached HEAD。
  • 隔离工作树没有未暂存或未跟踪改动;先提交需要保留的内容。
  • 隔离工作树仍有暂存改动时,启用 carry_staged,或先提交;否则检出会被拒绝。
  • 已存在的目标分支不能被其他工作树占用,也不能含有隔离工作树之外的提交;同提交可复用,落后时可快进。

暂存改动与工具参数

carry_staged 默认 false,只处理 Git index 中的改动。已提交内容不依赖这一开关。 携带过程使用 Git 二进制 diff/apply,不使用仓库共享的 stash。界面检出没有 carry_staged 选项,先提交暂存改动,或明确授权 Agent 使用带该参数的工具。

失败处理与边界

创建或检出失败时查看状态栏与日志,按错误提示处理后重试;不要直接删除仍有绑定的工作树目录。检出失败可能保留工作树、绑定和恢复信息,并不表示已经回到本地会话。 Git Worktree 隔离的是工作目录,不是本地执行权限。Harness 和插件仍可执行本地代码;Profile 不是操作系统沙箱。 查看源码