先说结论:
- 据 Conductor 官方公告,Conductor 加入 Meta:11 月 4 日起停止新注册和下载;Conductor Cloud 11 月 13 日只读,11 月 20 日停服并开始删除云端数据;本地 Mac 版继续收到新模型和关键修复,到 2027 年初开始逐步停止。
- 还在用 Conductor Cloud 的,11 月 13 日前右键工作区选「Transfer to local」搬到本地,或在 Settings → Account → Export data 导出全部数据。
- Conductor 的核心机制是 每个工作区一个 git worktree、一个分支(官方文档写明)。这件事不用 Conductor 也能做:
git worktree add建目录,每个目录开一个 Claude Code 或 Codex,做完合并回主分支。 - 我们 11 月 5 日实测:两个 worktree 里同时跑 Claude Code 和 Codex,各自写完功能和测试,总耗时 66.3 秒(Claude Code 27.0 秒、Codex 66.3 秒),合并后 11 个测试全过。Claude Code 的
claude -w和 Codex 的--worktree也能直接帮你建 worktree。 - 想要图形界面,可以看开源的 Orca(MIT)、Emdash(Apache-2.0)和终端版 Claude Squad(AGPL-3.0)。
创建 API Key,在 Claude Code、Codex 里并行跑任务 →
官方时间线
| 日期 | 发生什么 | 你要做什么 |
|---|---|---|
| 11 月 4 日(周三) | Conductor 宣布加入 Meta;停止新注册和下载,老用户不能再升级 Pro,已有 Pro 用户继续用 Pro 功能 | 新用户已经装不了,直接看下面的替代做法 |
| 11 月 13 日(周五) | Conductor Cloud 工作区变为只读:能看旧对话、能导出,不能发新消息;在订阅的用户会退款 | 这天之前把云端工作区「Transfer to local」 |
| 11 月 20 日(周五) | Conductor Cloud 停服,开始删除云端用户数据 | 这天之前 Settings → Account → Export data |
| 2027 年初 | 本地 Conductor 开始逐步停止;在此之前继续更新新模型和关键修复 | 本地版还能用,但建议现在就把流程换成不依赖它的做法 |
以上日期来自 Conductor 公告和 0.93.0 更新日志。据 TechCrunch 报道,Meta 向其确认了收购,但没有透露交易细节;据 Axios 报道,Conductor 由 Charlie Holtz 和 Jackson de Campos 创立,交易细节未披露。X 上也有一条热门新闻聚合。
Conductor 做的事,拆开其实是 4 步
据 Conductor 文档,每新建一个工作区,Conductor 就创建一个 git worktree 并检出一个分支,工作区一般放在 ~/conductor/workspaces/<仓库名>/<工作区名>;Agent 只改这个目录里的文件,测试命令也在这里跑,分支就是你审查、推送、开 PR 的单位。
所以把 Conductor 拿掉,你要自己补的只有 4 步:
- 一任务一目录:
git worktree add给每个任务建独立目录和分支。 - 一目录一会话:在每个目录里各开一个 Claude Code 或 Codex。
- 配好模型:Claude Code 和 Codex 都接上同一个 API Key。
- 合并与验收:每个分支自己跑测试、提交,再合回主分支,删掉 worktree。
git worktree 是 Git 自带的功能:同一个仓库挂多个工作目录,共享提交历史,但文件互不影响,两个 Agent 改同一个文件也不会在磁盘上互相覆盖。
第 0 步:创建 API Key 并接入 Claude Code 和 Codex
- 在 aicodewith.ai 注册并登录,点左侧导航栏的「密钥管理」。
- 点右上方「创建密钥」,在弹窗里起一个好认的名字,比如「并行 Agent - MacBook」。
- 确认后马上复制完整的 Key 存好,窗口关掉就再也看不到完整的 Key,丢了只能删掉重建。详细说明见创建 API Key 文档。
Codex 写在全局 ~/.codex/config.toml,所有 worktree 共用这一份,不用每个目录配一次:
# ~/.codex/config.toml
model = "gpt-6.1-sol"
model_provider = "aicodewith"
[model_providers.aicodewith]
name = "aicodewith"
base_url = "https://api.aicodewith.ai/chatgpt/v1"
wire_api = "responses"
experimental_bearer_token = "你的 API Key"
Claude Code 写在 ~/.claude/settings.json,同样全局生效:
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.aicodewith.ai",
"ANTHROPIC_AUTH_TOKEN": "你的 API Key"
}
}
还没装 Codex 的先看《Codex 安装教程》,config.toml 每一项的含义见《Codex config.toml 配置指南》,Claude Code 的其他配置方式见《Claude Code 如何接入第三方 API》。
第 1 步:一个任务一个 worktree
开始前先把构建产物和 Agent 自建的 worktree 目录加进 .gitignore。我们第一次实测没加,合并时被 __pycache__ 挡住了(见第 4 步):
# 在主目录先忽略构建产物和 Agent 自建的 worktree
cat >> .gitignore <<'EOF'
__pycache__/
node_modules/
.claude/worktrees/
EOF
git add .gitignore && git commit -m "ignore build output and agent worktrees"
然后给每个任务建一个 worktree:
cd ~/code/demo # 你的仓库
git switch main && git pull
git worktree add ../demo-wt/slugify -b feat/slugify
git worktree add ../demo-wt/truncate -b feat/truncate
git worktree list
输出:
~/code/demo a97cf41 [main]
~/code/demo-wt/slugify a97cf41 [feat/slugify]
~/code/demo-wt/truncate a97cf41 [feat/truncate]
任务一多,可以用一个小脚本,名字传进去就建好目录和 agent/<名字> 分支,并打印路径:
#!/usr/bin/env bash
# new-task.sh <name> [base] 新建一个任务目录并打印路径
set -euo pipefail
name="${1:?usage: new-task.sh <name> [base]}"
base="${2:-main}"
repo="$(git rev-parse --show-toplevel)"
wt="$(dirname "$repo")/$(basename "$repo")-wt/$name"
git -C "$repo" worktree add -q "$wt" -b "agent/$name" "$base"
echo "$wt"
用法:
cd "$(./new-task.sh fix-login)" && claude
cd "$(./new-task.sh add-export)" && codex
注意:worktree 只包含 Git 跟踪的文件。.env、node_modules 这类没提交的东西不会出现在新目录里,要自己复制或重新安装依赖。Conductor 文档里的「Configure your project」做的就是这件事。
第 2 步:每个目录开一个 Claude Code 或 Codex
交互式:开两个终端标签,各自 cd 进一个 worktree 后运行 claude 或 codex。用 tmux 可以一屏看两个:
# 左边 Claude Code,右边 Codex
tmux new-session -d -s agents -c ../demo-wt/slugify "claude"
tmux split-window -h -t agents -c ../demo-wt/truncate "codex"
tmux attach -t agents
我们实测时,Claude Code 和 Codex 第一次进每个 worktree 都会问一次是否信任这个目录,因为对它们来说这是新路径。
无人值守:任务描述清楚、只想拿结果时,用 claude -p 和 codex exec 在后台同时跑:
PA="Add textkit/slug.py with slugify(s) ... Add tests/test_slug.py ... Only create these two files. Then run: python3 -m unittest discover -s tests -v"
PB="Add textkit/truncate.py with truncate(s, width, suffix='...') ... Add tests/test_truncate.py ... Only create these two files. Then run the tests."
(cd ../demo-wt/slugify && claude -p "$PA" --allowedTools "Write,Edit,Read,Bash(python3:*)") &
(cd ../demo-wt/truncate && codex exec -s workspace-write "$PB") &
wait
Prompt 里写明「只创建这两个文件」,把两个任务的文件边界分开,后面合并就不会冲突。拆任务的更多方法见《Codex Subagents 怎么拆任务》。
第 3 步:实测结果
测试环境:2026 年 11 月 5 日 06:16–06:30(北京时间),Linux,Claude Code 2.1.318,codex-cli 0.166.0(模型 gpt-6.1-sol),本站 Key;HOME 和 CODEX_HOME 指向隔离目录,测试仓库是一个只有一个函数的小 Python 包 textkit。
两个任务同时启动:Claude Code 在 feat/slugify 里写 slugify(),Codex 在 feat/truncate 里写 truncate(),都要求带单元测试并自己跑测试。
[Claude Code 2.1.318 · ~/code/demo-wt/slugify · feat/slugify]
All 7 tests pass. I added `textkit/slug.py` and `tests/test_slug.py`,
and those are the only files I created.
[exit 0, 27.0 s]
[Codex 0.166.0 · ~/code/demo-wt/truncate · feat/truncate]
workdir: ~/code/demo-wt/truncate
model: gpt-6.1-sol
provider: aicodewith
sandbox: workspace-write
...
Ran 5 tests in 0.000s
OK
[exit 0, 66.3 s]
| 项目 | 结果 | 耗时 |
|---|---|---|
| Claude Code(worktree feat/slugify) | 新建 2 个文件,7 个测试通过 | 27.0 秒 |
| Codex(worktree feat/truncate) | 新建 2 个文件,5 个测试通过 | 66.3 秒 |
| 两个同时跑的总耗时 | 以较慢的一个为准 | 66.3 秒 |
| 合并两个分支 | 无冲突,主分支 11 个测试通过 | 不到 1 秒 |
| claude -w + codex exec --worktree 同时跑 | 各加一个函数和测试,各自测试通过 | 16.7 秒 / 24.4 秒 |
| 用 Claude Code 解决合并冲突 | 保留两边改动,13 个测试通过 | 17.5 秒 |
两个任务互不等待,总耗时就是慢的那个;如果排队一个一个做,就是两段时间相加。
第 4 步:合并与验收
每个 worktree 先自己跑测试,再提交;全部提交完回到主目录按顺序合并:
# 在每个 worktree 里:先跑测试,再提交
cd ../demo-wt/slugify
git status --short
python3 -m unittest discover -s tests
git add -A && git commit -m "feat: slugify"
# 回到主目录合并
cd ~/code/demo
git merge --no-ff feat/slugify
git merge --no-ff feat/truncate
python3 -m unittest discover -s tests -v
我们的合并结果:
* 9765c15 merge truncate
|\
| * 55ce497 feat: truncate
* | b7b9d4c merge slugify
|\ \
| |/
|/|
| * c5c0b99 feat: slugify
|/
* a97cf41 init textkit
Ran 11 tests in 0.000s
OK
第一次合并时我们遇到了这个报错:
$ git merge --no-ff feat/slugify
error: The following untracked working tree files would be overwritten by merge:
tests/__pycache__/test_core.cpython-313.pyc
textkit/__pycache__/__init__.cpython-313.pyc
textkit/__pycache__/core.cpython-313.pyc
Please move or remove them before you merge.
Aborting
原因是测试运行生成了 __pycache__,被提交进了分支,而主目录里同名的未跟踪文件挡住了合并。Claude Code 在任务结束时也提醒了这一点。解决办法就是第 1 步的 .gitignore;已经提交了的,在分支里 git rm -r --cached 掉再合并。
验收清单:
- 每个分支
git status --short只有你预期的文件; - 每个分支自己的测试通过,合并后主分支整体测试再跑一遍;
- 两个分支改了同一个文件,就按下一节处理冲突。
做完删掉 worktree 和分支:
git worktree remove ../demo-wt/slugify
git worktree remove ../demo-wt/truncate
git branch -d feat/slugify feat/truncate
git worktree prune
git worktree list
不想手敲 git:用 claude -w 和 codex --worktree
两家 CLI 现在都能自己建 worktree。我们实测的版本里,claude --help 有 -w, --worktree [name],codex --help 和 codex exec --help 都有 --worktree(Run the session in a new managed Git worktree)。官方说明见 Claude Code 文档和 Codex worktree 文档。
# Claude Code: 在仓库根目录运行
claude -w words # = claude --worktree words
# Codex: 交互式或无人值守都行
codex --worktree
codex exec --worktree -s workspace-write "Add title_case() to textkit/core.py ..."
两个会话同时跑完后,git worktree list 是这样的:
$ git worktree list
~/code/demo 987a3ea [main]
~/code/demo/.claude/worktrees/words 987a3ea [worktree-words] locked
~/.codex/worktrees/f0c2/demo 987a3ea (detached HEAD)
实测下来要注意三点:
- 位置不同:Claude Code 建在仓库里的
.claude/worktrees/<名字>,分支叫worktree-<名字>;Codex 建在~/.codex/worktrees/下,是 detached HEAD,没有分支。所以要把.claude/worktrees/加进.gitignore,Codex 那边合并前先建分支。 - Claude Code 的 worktree 会加锁:会话结束后锁还在,直接
git worktree remove会报错,要先git worktree unlock。 - 两个任务改同一个文件就会冲突:这次我们故意让两边都往
textkit/core.py加函数。
提交和合并:
# Claude Code 的 worktree 已经在分支 worktree-words 上
cd ~/code/demo/.claude/worktrees/words
git add -A && git commit -m "feat: count_words"
# Codex 的 worktree 是 detached HEAD,先建分支
cd ~/.codex/worktrees/f0c2/demo
git switch -c feat/title-case
git add -A && git commit -m "feat: title_case"
cd ~/code/demo
git merge --no-ff worktree-words
git merge --no-ff feat/title-case
第二个合并冲突了:
Auto-merging tests/test_core.py
CONFLICT (content): Merge conflict in tests/test_core.py
Auto-merging textkit/core.py
CONFLICT (content): Merge conflict in textkit/core.py
Automatic merge failed; fix conflicts and then commit the result.
可以让 Agent 来解决冲突。注意 claude -p 要加 --permission-mode acceptEdits,我们第一次只给了 --allowedTools,Claude Code 想写文件时被拦下,冲突原样没动:
claude -p "This repo is in the middle of a git merge with conflicts in textkit/core.py and tests/test_core.py. Keep both sides, remove the conflict markers, run python3 -m unittest discover -s tests, and report the result. Do not commit." \
--permission-mode acceptEdits \
--allowedTools "Edit,Read,Bash(python3:*),Bash(git status:*),Bash(git diff:*)"
# 确认没有冲突标记后再提交
grep -rn '<<<<<<<' textkit tests
git add textkit/core.py tests/test_core.py && git commit -m "merge title_case"
python3 -m unittest discover -s tests -v
输出:
A grep found no conflict markers left in `textkit/` or `tests/`.
I didn't stage or commit anything, so git still lists both files as unmerged (`UU`).
[exit 0, 17.5 s]
Ran 13 tests in 0.001s
OK
清理时遇到的锁:
$ git worktree remove .claude/worktrees/words
fatal: cannot remove a locked working tree, lock reason: claude session words (pid ...)
use 'remove -f -f' to override or unlock first
$ git worktree unlock .claude/worktrees/words && git worktree remove .claude/worktrees/words
$ git worktree remove ~/.codex/worktrees/f0c2/demo
$ git branch -d worktree-words feat/title-case
想要图形界面:可替代 Conductor 的工具
下面只列我们在 GitHub 上核对过许可证和说明的项目:
| 工具 | 是什么 | 隔离方式 | 平台 | 许可证 |
|---|---|---|---|---|
| Orca | 桌面应用,同时管理多个 CLI Agent,支持 Claude Code、Codex、OpenCode 等 | 每个任务一个 git worktree | macOS、Windows、Linux,另有手机端 | MIT |
| Emdash | 桌面应用,并行跑多个编码 Agent,自带 diff 审查和 PR | 每个 Agent 一个 worktree 和分支 | macOS、Windows、Linux | Apache-2.0 |
| Claude Squad | 终端应用,管理 Claude Code、Codex、OpenCode、Amp 等多个会话 | tmux 会话 + git worktree | 终端(需要 tmux) | AGPL-3.0 |
| claude -w | Claude Code 自带 | 每个会话一个 worktree | 跟随 Claude Code | — |
| codex --worktree | Codex CLI 自带;Codex App 也有 worktree 功能 | 每个会话一个 worktree | 跟随 Codex | — |
这些工具底层都是 git worktree,上面四步的思路通用:Key 配在 Claude Code、Codex 的全局配置里,任何一个外壳都能直接用。
并行之前,先想好要不要并行
并行不是越多越好。任务之间文件有重叠,就会像上面一样冲突;同一个任务里的子步骤,用子 Agent 往往更合适:
- Claude Code 里让轻量模型跑子任务,见《Claude Code 如何配置 Haiku 5.5 子 Agent》;
- 流程固定的活,与其堆子 Agent,不如收成 Skill,见《别急着堆子 Agent:把流程收成 Claude Code Skill》;
- Codex 里拆任务、定文件边界和验收方式,见《Codex Subagents 怎么拆任务》。
一个简单的判断:互不相干的功能、修复,用 worktree 并行;同一个功能里的调研、写代码、写测试,用子 Agent。
创建 API Key,接入 Claude Code、Codex →
常见问题
Conductor 本地版还能用多久?
据官方公告,本地 Conductor 照常工作,继续获得新模型和关键修复,到 2027 年初开始逐步停止。停止新下载后,没装过的人已经装不上了。
Conductor Cloud 的数据怎么导出?
在工作区上右键选「Transfer to local」,可以把工作区和对话搬到 Mac;导出全部数据在 Settings → Account → Export data。11 月 13 日只读后仍可导出,11 月 20 日开始删除。
git worktree 和直接 clone 两份有什么区别?
worktree 共享同一个 .git:提交、分支、远程配置都是同一份,一个目录里提交的东西另一个马上能看到,也不用重复下载仓库。限制是同一个分支不能同时在两个 worktree 里检出。
同时开几个 Agent 合适?
看你审得过来几个 diff。我们建议从 2–3 个开始,每个任务文件边界分清楚。所有会话共用一个 Key 也可以,在控制台的调用记录里能看到每次请求。
Windows 能用吗?
git worktree、Claude Code、Codex 都支持 Windows;tmux 需要 WSL。Orca 和 Emdash 都提供 Windows 版本。



