跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

Worktree 恢复与退出

按会话存储范围恢复绑定,并理解保留、删除和隔离 agent 的保护规则。

创建 worktree 后,先确认当前分支与路径,再决定是保留、退出还是删除。删除目录和分支会影响其中尚未交付的工作。

显示与恢复

Footer 默认显示 worktree-;ui.hideBuiltinWorktreeIndicator=true 可隐藏,custom statusline 仍收到 worktree.name/path/branch/original_cwd/original_branch,只在活动 worktree 时存在。

绑定保存在 /.worktree.json。普通恢复会检查目录存在,下一条 prompt 给一次路径提醒;目录消失则删除过期 sidecar,不报 worktree 恢复错误。

TUI 显示 INFO 与提醒,headless 还发 worktree_restored JSON system 事件,ACP 在下次 prompt 附带 notice。普通绑定恢复不自动 chdir。

启动 Worktree 的会话范围

--worktree 启动的会话记录位于该 checkout 自己的 chats 目录,恢复时需再次传相同 worktree:

qwen --resume <session-id> --worktree=my-feature

裸 --resume 加新 worktree 名可能看到空选择器,因为主 checkout 会话不在其中。不能用在 first 创建的 ID 加 --worktree=second 跨 slug 恢复;应新会话重启。

官方另写“显式 --worktree 覆盖保存绑定”,只应在会话本身能按存储范围找到后理解;不能用这句话绕过上述查找限制。

保留与移除

exit_worktree 要求 name 和 action(keep/remove)。keep 保留目录与分支;remove 删除两者,脏工作区需 discard_changes:true 才可越过未提交保护。该覆盖需要用户确认,AUTO_EDIT 也不会把删除当普通自动编辑。

删除前有三道检查:创建会话必须匹配;未提交 tracked/untracked 更改需显式丢弃确认;分支存在没有其他本地/远端引用可达的提交则无条件阻止,没有“丢弃提交”开关。先合并、推送或让分支另有保留引用,再处理。

双按退出快捷键时的对话框显示新提交与未提交文件数量,可 Keep、Remove 或 Cancel。若 Git 状态读取失败,数量不可信,应先保留或取消诊断;其 Remove 同样受保护规则约束,不能只凭按钮文本断言可丢弃未合并提交。

subagent 隔离

agent 的 isolation:"worktree" 为非 fork subagent 建 agent-7hex 临时 checkout。完成后无差异自动移除;有差异保留,路径和分支附于结果,供人工检查后整合或删除。

必须设置非 fork subagent_type,fork 不支持该隔离。通常遵循后台行为,run_in_background:false 可等内联结果。调用者自有 working_dir 的匿名启动是另一种生命周期:前台运行,显式后台拒绝,不要把两者参数随意混用。

崩溃后遗留目录另受过期清理规则约束。