如何用 Git worktree 并行运行 Claude Code、Codex 和 OpenCode 会话(在手机上)

一套实用工作流:把任务隔离到不同 worktree,并行运行 Claude Code、Codex、OpenCode 会话,并在手机上安全地审阅和提交,全部在一个地方完成。

基于版本
CLI
0.2.17
预览 ref
a2c45c8

worktree 在这里有用,并不是因为“你可以同时检出两个分支”。

而是因为多代理工作。

在同一个文件夹里运行两个会话,出问题的方式是可以预料的:

  • 代理改到同一批文件
  • diff 纠缠在一起
  • 你分不清哪些改动属于哪个任务

一条简单的规则就能解决大部分问题:

每个任务一个 worktree

这样,如果你想:

  • 用一个 Claude Code 会话做重构
  • 用一个 Codex 会话写测试
  • 用一个 OpenCode 会话写文档

就可以并行进行,互不干扰。

本指南介绍这套工作流。

快速定义:worktree 是什么(以及它为什么对代理有用)

Git 官方文档把 worktree 描述为一种管理同一仓库下多个工作树的方式,让你可以同时检出多个分支。(来源:https://git-scm.com/docs/git-worktree)

对于多代理工作,重点更简单:

  • 每个 worktree 是一个独立的文件夹
  • 每个代理拥有自己的文件夹

于是“这个文件是哪个代理改的?”就变成了看目录就能回答的问题,而不是一场侦探游戏。

常见做法以及它们的问题

  • 一个分支、一个文件夹,按顺序运行代理: 安全,但慢。
  • 一个文件夹,多个代理: 快,但混乱。
  • 在任务之间来回 stash: 可行,但频繁操作时容易出错。

worktree 是第一个让人觉得既快又安全的办法。

一套行之有效的工作流

这套工作流把 Happier 作为控制中心。Happier 是一款开源应用,可以跨设备运行和编排 Claude Code、Codex 等代理。

它在一个地方提供两样东西:

  • 会话: 跨设备启动和监控 Claude Code、Codex 和 OpenCode 会话
  • 每个会话的文件和 Git: 每个会话绑定一个文件夹,所以它的 文件(Files)和 Git 标签页只显示那个文件夹

取舍:你的电脑仍然需要在线。

如果你第一次听说 Happier(它是什么,去哪里获取)

Happier 是一款开源配套应用(移动端、网页、桌面),让你在信任的电脑上运行会话,然后在手机上管理它们。

开始设置:

模式:每个任务一个 worktree

简单的版本:

  1. 为任务 A 创建一个 worktree
  2. 为任务 B 创建一个 worktree
  3. 在每个 worktree 中运行一个会话
  4. 分别审阅和提交每个 worktree

如果这篇指南你只记住一件事,就记住这个。

分步操作

1) 选出你真正想并行的任务

并行是一种工具。

适合并行的任务:

  • 测试和文档
  • 重构和小的 UI 调整
  • 修 bug 和写迁移计划

不适合并行的任务:

  • 两个代理编辑同一组核心文件

2) 创建 worktree

用原生 Git 的话,你会用 git worktree add ... 创建关联的 worktree。(来源:https://git-scm.com/docs/git-worktree)

实际上重要的是结果:

  • 两个文件夹,各自检出自己的分支

3) 每个 worktree 文件夹启动一个会话

在 Happier 中启动一个新的 Claude Code、Codex 或 OpenCode 会话,选择 worktree 文件夹作为工作目录。第二个 worktree 也一样。

因为会话绑定到自己的文件夹,每个会话的 Git 标签页就是一个按 worktree 划分的 diff、提交和推送视图,改动不会混在一起。

保持整洁的习惯:

  • 用 worktree 或任务的名字给会话命名
  • 限定会话的范围(“只修改这个 worktree 中的文件”)

4) 在一个地方监控会话

多个会话运行起来后,目标不是读完每一份转录。

而是:

  • 看哪些会话在运行
  • 处理审批
  • 发一条后续消息

当某件事完成时:

  • 打开那个会话的 Git 标签页
  • 审阅 diff
  • 提交并推送(Git 写操作是实验功能,默认关闭,见 Git 文档)

5) 按 worktree 审阅和提交

安全规则:

  • 永远不要把跨 worktree 的改动放进同一个提交

否则就失去了隔离的好处。

终端(可选)

当内嵌终端可用时,会话中会显示 终端(Terminal)标签页。根据功能矩阵,它是实验功能。

用它执行一次性命令(grep、快速查看 status),不要把它当作主要工作流。

常见问题

为什么不直接用分支而不用 worktree?

因为在同一个文件夹里切换分支,会迫使你依赖 stash 或 WIP 提交。

worktree 让你的工作保持原样。

每个 worktree 都需要一个代理吗?

不一定。

但如果你在并行运行代理,每个 worktree 一个代理是防止冲突的简单办法。

常见的大错误是什么?

创建了 worktree,却仍然在同一个文件夹里运行多个代理。

隔离只有真正使用时才有效。

worktree 和会话该怎么命名?

让名字在手机屏幕上一看就懂。

  • worktree:hotfix-<ticket> / docs-<topic> / tests-<area>
  • 会话:与 worktree 同名,再加上代理名(例如“hotfix-123 (Codex)”)

并行会话多少个算“太多”?

关键不在数量,而在于你是否还能安全地审阅。

比较好的默认是 2 到 3 个并行会话:

  • 一个做主要改动
  • 一个做次要任务(测试或文档)
  • 可选的一个做审阅或检查

怎样防止代理改到错误的 worktree?

两个习惯很有帮助:

  1. 在第一条消息中写明 worktree 名称:“你只在 <worktree-name> 中工作。”
  2. 在前几步之后要求一份阶段性总结。

如果你不在键盘前,明确说清楚更值得。

多个会话运行时,“手机检查循环”是怎样的?

一个简单的循环:

  1. 打开 Happier
  2. 查看哪些会话在运行
  3. 处理审批
  4. 发一条简短的后续消息(或者“停下来总结一下”)
  5. 会话完成后,审阅它所在 worktree 的 diff 并提交

目标是保持掌控,而不是在手机上做深度编码。

怎样安全地审阅每个代理的工作?

把每个 worktree 当作独立的审阅和提交单元。

  • 版本控制(Source control)→ 更改的文件(Changed files)→ ↓ 审阅(Review)
  • 用范围明确的消息提交
  • 只在有把握时推送

如果两个代理需要改同一个文件怎么办?

到这一步,并行的帮助就不大了。

可选做法:

  • 按顺序进行(先代理 A,再代理 B)
  • 拆分任务,让它们修改代码库的不同部分
  • 或者让一个代理做改动,另一个做审阅

这只在手机上有用吗?

不是,但在手机上尤其有用。

worktree 让文件系统保持整洁。

无论你在移动端、桌面还是网页上,Happier 都让你能在同一个地方监控会话并审阅和提交。

相关指南

gitworktreessessionsclaudecodexopencodeworkflows
最后更新: 2026-10-26