Skip to content

Worktrees 让 Codex App 在同一个 Git 仓库里同时运行多个独立任务而不互相干扰——每个 Worktree 有自己的文件副本,共享同一个 .git 元数据。你可以在前台(Local)工作的同时,让 Codex 在后台 Worktree 里处理其他任务。完成后通过 Handoff 把工作切回 Local 继续。本文覆盖 Worktree 的核心概念、创建流程、Handoff 机制和磁盘清理策略。

Codex App Worktrees:并行隔离工作环境

Worktrees 让你可以在同一个 Git 仓库里并行运行多个 Codex 任务,彼此完全隔离。它基于 Git 内置的 git worktree 机制,要求项目必须是 Git 仓库。


核心概念

术语含义
Local你正常工作的主 checkout
Worktree由 Codex 创建的独立副本,有自己的文件,但共享 .git 元数据
Handoff在 Local 和 Worktree 之间移动线程(含代码)的操作,Codex 自动处理 Git 操作

适合在 Worktree 里做的事

  1. 后台长任务不阻塞前台
  2. Automations 的隔离运行
  3. 多功能并行开发
  4. 随时把工作切回 Local 做最终检查

快速开始

  1. 新建线程时,在输入框下方选择 Worktree(而不是 Local)
  2. 可选:选择一个本地环境(setup 脚本)
  3. 在下方选择基础分支(可以是 main、功能分支,或带未暂存改动的当前分支)
  4. 发送任务,Codex 在 detached HEAD 状态的 Worktree 里工作
  5. 完成后选择:
    • Create branch here:把 Worktree 变成一个分支,推送 PR
    • Hand off:把线程移到 Local 继续检查

Local 和 Worktree 之间的切换

选项 1:在 Worktree 上完成工作

点击线程头部的 Create branch here,给 Worktree 创建一个 Git 分支,然后:

bash
# Codex App 里直接操作,或者用内置终端
git push origin feature/my-branch
# 然后在 GitHub/GitLab 提 PR

也可以用线程头部的 Open 按钮在 IDE 里打开 Worktree 目录。

注意:一个分支同一时间只能在一个地方 checkout。Worktree 里创建了 feature/a 分支后,你就不能在本地 checkout 这个分支了。

选项 2:Handoff 到 Local

点击线程头部的 Hand off,选择 Local,Codex 自动处理 Git 操作,把代码和线程上下文移到你的主 checkout。

适合:

  • 想在常用 IDE 里检查改动
  • 要运行本地开发服务器
  • 需要在同一环境里做最终验证

反向也支持:从 Local Handoff 到 Worktree,让 Codex 继续在后台工作,你切回前台做别的事。

.gitignore 里的文件不会随 Handoff 移动。


Worktree 类型

Codex 管理的 Worktree(默认)

轻量、临时,通常一个线程对应一个 Worktree。Handoff 回 Worktree 时会回到同一个环境继续工作。

永久 Worktree

在侧边栏项目的三点菜单里选择 创建永久 Worktree。永久 Worktree 作为独立项目出现,不会被自动删除,可以从同一个 Worktree 启动多个线程。


自动清理

Worktree 会占用大量磁盘空间(每个都有自己的文件副本、依赖和构建缓存)。

默认保留最近 15 个 Codex 管理的 Worktree,可以在 Settings 里修改这个限制。

不会自动删除的 Worktree

  • 有 Pin 的对话关联
  • 线程仍在进行中
  • 永久 Worktree

会自动删除的条件

  • 你归档了关联的线程
  • 超出数量限制时删除最旧的

删除前,Codex 会保存工作快照。重新打开已被删除 Worktree 的对话时,会提示你是否恢复。


常见问题

Q: 提示 fatal: 'feature/a' is already used by worktree 怎么办?

A: Git 限制同一个分支同时只能在一个地方 checkout。解决方法:在 Worktree 里先切换到另一个分支,或者用 Handoff 把线程移到 Local,而不是尝试在两个地方 checkout 同一个分支。

Q: Worktree 里没有安装好的依赖,Codex 运行会失败吗?

A: 可能会。解决方法:配置一个本地环境(Local Environment),在 Worktree 启动时自动运行 setup 脚本安装依赖。详见 本地环境配置

Q: 我能指定 Worktree 的存储位置吗?

A: 目前不行。Codex 统一把 Worktree 创建在 $CODEX_HOME/worktrees 下以便统一管理,这个路径不可自定义。