Conductor 停服怎么办?不用 Conductor 也能并行跑多个 Claude Code / Codex:git worktree 实测教程

Meta 收购 Conductor,据官方公告 Conductor Cloud 11 月 13 日只读、11 月 20 日停服并开始删除云端数据,本地 Mac 版更新到 2027 年初。本文先讲清时间线和要导出的东西,再给出不用 Conductor 的替代做法:git worktree 一个任务一个目录,各开一个 Claude Code / Codex 会话,配好 API Key,最后合并、验收、清理;附 claude --worktree、codex --worktree 原生用法、合并冲突处理实测,以及 Orca、Emdash、Claude Squad 等可替代工具。

9 分钟阅读
Conductor 停服怎么办?不用 Conductor 也能并行跑多个 Claude Code / Codex:git worktree 实测教程

先说结论:

  • 据 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 步:

  1. 一任务一目录:git worktree add 给每个任务建独立目录和分支。
  2. 一目录一会话:在每个目录里各开一个 Claude Code 或 Codex。
  3. 配好模型:Claude Code 和 Codex 都接上同一个 API Key。
  4. 合并与验收:每个分支自己跑测试、提交,再合回主分支,删掉 worktree。

git worktree 是 Git 自带的功能:同一个仓库挂多个工作目录,共享提交历史,但文件互不影响,两个 Agent 改同一个文件也不会在磁盘上互相覆盖。

第 0 步:创建 API Key 并接入 Claude Code 和 Codex

  1. 在 aicodewith.ai 注册并登录,点左侧导航栏的「密钥管理」。
  2. 点右上方「创建密钥」,在弹窗里起一个好认的名字,比如「并行 Agent - MacBook」。
  3. 确认后马上复制完整的 Key 存好,窗口关掉就再也看不到完整的 Key,丢了只能删掉重建。详细说明见创建 API Key 文档。

创建 API Key →

Codex 写在全局 ~/.codex/config.toml,所有 worktree 共用这一份,不用每个目录配一次:

toml
# ~/.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,同样全局生效:

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 步):

bash
# 在主目录先忽略构建产物和 Agent 自建的 worktree
cat >> .gitignore <<'EOF'
__pycache__/
node_modules/
.claude/worktrees/
EOF
git add .gitignore && git commit -m "ignore build output and agent worktrees"

然后给每个任务建一个 worktree:

bash
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

输出:

text
~/code/demo              a97cf41 [main]
~/code/demo-wt/slugify   a97cf41 [feat/slugify]
~/code/demo-wt/truncate  a97cf41 [feat/truncate]

任务一多,可以用一个小脚本,名字传进去就建好目录和 agent/<名字> 分支,并打印路径:

bash
#!/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"

用法:

bash
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 可以一屏看两个:

bash
# 左边 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 在后台同时跑:

bash
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(),都要求带单元测试并自己跑测试。

text
[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 先自己跑测试,再提交;全部提交完回到主目录按顺序合并:

bash
# 在每个 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

我们的合并结果:

text
*   9765c15 merge truncate
|\
| * 55ce497 feat: truncate
* |   b7b9d4c merge slugify
|\ \
| |/
|/|
| * c5c0b99 feat: slugify
|/
* a97cf41 init textkit

Ran 11 tests in 0.000s
OK

第一次合并时我们遇到了这个报错:

text
$ 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 和分支:

bash
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 文档。

bash
# 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 是这样的:

text
$ 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 加函数。

提交和合并:

bash
# 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

第二个合并冲突了:

text
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 想写文件时被拦下,冲突原样没动:

bash
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

输出:

text
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

清理时遇到的锁:

text
$ 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 worktreemacOS、Windows、Linux,另有手机端MIT
Emdash桌面应用,并行跑多个编码 Agent,自带 diff 审查和 PR每个 Agent 一个 worktree 和分支macOS、Windows、LinuxApache-2.0
Claude Squad终端应用,管理 Claude Code、Codex、OpenCode、Amp 等多个会话tmux 会话 + git worktree终端(需要 tmux)AGPL-3.0
claude -wClaude Code 自带每个会话一个 worktree跟随 Claude Code—
codex --worktreeCodex CLI 自带;Codex App 也有 worktree 功能每个会话一个 worktree跟随 Codex—

这些工具底层都是 git worktree,上面四步的思路通用:Key 配在 Claude Code、Codex 的全局配置里,任何一个外壳都能直接用。

并行之前,先想好要不要并行

并行不是越多越好。任务之间文件有重叠,就会像上面一样冲突;同一个任务里的子步骤,用子 Agent 往往更合适:

一个简单的判断:互不相干的功能、修复,用 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 版本。

来源

相关文章

Claude Code 后台子 Agent 更省额度了:2.1.316 状态行改由 Haiku 5.5 写,怎么升级、怎么确认、子 Agent 模型怎么配

Claude Code 后台子 Agent 更省额度了:2.1.316 状态行改由 Haiku 5.5 写,怎么升级、怎么确认、子 Agent 模型怎么配

据 Anthropic 官方 @ClaudeDevs,Claude Code 后台子 Agent 每 30 秒刷新一次的状态行,以前每次都要重读子 Agent 的整段对话,现在改由 Haiku 5.5 根据简短笔记来写,每次刷新消耗约降 99%,用到后台子 Agent 的会话约少用 5% 额度、同样额度约多 6% 提示,需要 v2.1.316+。本文讲清这条改动对谁生效、怎么升级和确认版本,附用 API Key 接 Claude Code 2.1.318 跑后台子 Agent 的实测,以及 CLAUDE_CODE_SUBAGENT_MODEL、agents 文件、/tasks 的子 Agent 模型配置方法。

Postman 偷偷给 Claude Code / Codex 装插件?3 步自查与删除(plugins、hooks、MCP、config.toml)

Postman 偷偷给 Claude Code / Codex 装插件?3 步自查与删除(plugins、hooks、MCP、config.toml)

据 GitHub issue #14370 和 The New Stack 报道,Postman 桌面版(macOS 12.33.4、12.35.1)在老用户升级时自动给 Claude Code 和 Codex 装了 Postman 插件,还在 ~/.codex/config.toml 里写了一条 trusted_hash,让自家的 SessionStart hook 直接生效。本文讲清事情经过和 Postman 的回应,给出 Claude Code、Codex、Cursor 的 3 步自查命令、官方删除命令和删不干净的残留,并附我们用 Postman 官方安装器在隔离目录里复现、删除、再跑通任务的实测。

DeepSeek Harness Creator Mode 怎么用?安装、接入第三方 API 和写第一个插件实测

DeepSeek Harness Creator Mode 怎么用?安装、接入第三方 API 和写第一个插件实测

DeepSeek Harness 官方 11 月 2 日推出 Creator Mode 演示:用一句话描述需求,智能体就写好插件、装进 Harness 并验证。本文讲清 Creator Mode 是什么、怎么用 npx 安装 Harness、怎么把 OpenAI 兼容的第三方 API(aicodewith Base URL + Key)接进来用 Claude、GPT 和 DeepSeek 模型,再用 Creator Mode 实际做一个 todo_scan 插件,附实测输出、常见报错和 Claude Code / Codex 的对应做法。