☰
拒绝等待!用 Git Worktree + TaoToken 让 Claude Code 一边修 Bug、一边重构、一边 review
2026/9/28 6:09:38 网站建设 项目流程

1. 为什么你的 Claude Code 总在排队

用 Claude Code 写代码最让人抓狂的一点,不是它写得不好,而是它一次只能干一件事。你让它重构api/目录下的错误处理,它就在那儿埋头改十几个文件,你只能干等着。这时候产品经理甩过来一个线上 bug 要立刻修,你怎么办?要么打断重构,让 Claude 重新理解上下文;要么新建一个终端再开一个 Claude Code,结果两个实例在同一个工作目录里互相踩脚,Git 状态乱成一锅粥。

这个问题的本质是:一个工作目录同一时间只能处于一个分支的一个状态。Claude Code 读写文件、执行git diff、跑测试,全都基于当前目录。你想让它同时处理三条线——修 bug、重构、review——就必须给它三块互不干扰的地盘。

Git Worktree 正好解决这个事。它允许你在同一个仓库下同时检出多个分支,每个分支有自己独立的目录,但共享同一个.git对象库。换句话说,你不需要git clone三份仓库(那样每份都有完整.git,磁盘直接爆炸),只需要git worktree add三次,就能得到三个独立工作区。每个工作区里跑一个 Claude Code 实例,各自绑定不同分支,互不干扰。

再配合 TaoToken 统一管理 API Key 和请求通道,你就不用给每个实例单独配一遍环境变量,也不用担心某个实例把额度跑超了你还不知道。这篇就按「建工作树 → 配 TaoToken → 起三个 Claude → 验证并行 → 排错」的顺序,把整套流程拆成可以直接复制的命令和配置。适合已经在用 Claude Code、但被串行任务卡住节奏的开发者。

2. TaoToken 前置:一个 Key 管住所有实例

多开 Claude Code 之后,最烦的其实不是 Git,而是配置。三个实例如果各自读不同的settings.json,你得维护三份 Key;如果共用一份,又怕某个实例跑飞了把额度吃光。TaoToken 在这里的作用是提供一个统一的 API 入口,你只需要在它那边生成一个 Key,然后让所有 Claude Code 实例都指向同一个base_url。

先做两件事。第一,去官网注册并拿到 Key:

https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=worktree_claude

第二,进控制台创建 API Key,建议按用途命名,比如claude-worktree-dev,方便后面排查是哪个实例在调用:

https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=worktree_claude&utm_campaign=rewrite

Key 生成后先别关页面,复制出来。接下来配置 Claude Code 的时候会用到两个东西:ANTHROPIC_BASE_URL指向 TaoToken 的 API 地址,ANTHROPIC_API_KEY填你刚生成的 Key。API 地址是:

https://taotoken.net/api

注意这个地址后面不加任何路径,Claude Code 会自己拼接/v1/messages之类的端点。如果你填成https://taotoken.net/api/v1,反而会 404。

提示:TaoToken 的 Key 是统一计费的,多个 Claude Code 实例共用同一个 Key 没问题,但建议在控制台里给这个 Key 设一个每日额度上限,避免某个跑飞的实例把预算吃光。

如果你后面要长期跑多实例、甚至接 Agent 做自动化,可以看一下 Coding Plan,它按周期计费,比按量更适合这种「三个实例挂一整天」的用法:

https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=worktree_claude&utm_campaign=rewrite

3. 可复制配置:Worktree 命令 + settings.json 骨架

3.1 建三个工作树

假设你的主仓库在~/projects/my-app,当前在main分支。先建一个统一的 worktree 根目录,放在仓库外面,避免被 Git 追踪:

cd ~/projects/my-app mkdir -p ../worktrees # 修 bug 的工作树,基于 main 新建分支 git worktree add ../worktrees/fix-pay -b fix/pay-timeout # 重构的工作树 git worktree add ../worktrees/refactor-api -b refactor/api-layer # review 的工作树,直接检出待审分支 git worktree add ../worktrees/review-pr-42 origin/feature/order-export

执行完git worktree list应该看到四个条目:主工作区加三个新工作树。每个目录里都有完整的项目文件,但.git是一个指向主仓库的文本文件,不占额外空间。

3.2 配置 Claude Code 的 settings.json

Claude Code 读取配置的优先级是:项目级.claude/settings.json> 用户级~/.claude/settings.json。多实例场景下,我建议把 TaoToken 的接入信息放在用户级配置里,这样三个工作树自动共享,不用每个目录都放一份。

编辑~/.claude/settings.json:

{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoToken密钥", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514", "CLAUDE_CODE_MAX_OUTPUT_TOKENS": "8192" }, "permissions": { "allow": [ "Bash(git status)", "Bash(git diff:*)", "Bash(git log:*)", "Read", "Edit", "Write" ], "deny": [ "Bash(git push:*)", "Bash(rm -rf:*)" ] } }

这里有几个点值得说清楚。ANTHROPIC_BASE_URL必须精确到/api,多一个斜杠都可能让 SDK 拼出错误路径。ANTHROPIC_MODEL填你实际要用的模型 ID,如果 TaoToken 控制台里列出的模型名和这个不一致,以控制台为准。permissions.deny里禁掉git push是故意的——三个实例并行时,谁都不该自动推代码,推送应该由你手动确认。

如果你用的是 config.toml 形式的配置(部分 CLI 工具链会读这个),骨架长这样:

[api] base_url = "https://taotoken.net/api" api_key = "sk-你的TaoToken密钥" model = "claude-sonnet-4-20250514" timeout_seconds = 120 [behavior] max_output_tokens = 8192 auto_approve_reads = true auto_approve_writes = false

auto_approve_writes = false在多实例场景下很重要。三个 Claude 同时改文件,如果每个写操作都自动放行,你根本来不及看它们改了什么。保持写操作需要确认,你至少能在每个实例里过一眼 diff。

3.3 封装一个启动函数

每次手敲cd加claude太啰嗦,在~/.zshrc里加一个函数:

cw() { local name=$1 local dir="../worktrees/$name" if [[ -z "$name" ]]; then echo "用法: cw <worktree名>" return 1 fi if [[ ! -d "$dir" ]]; then echo "工作树 $dir 不存在,请先 git worktree add" return 1 fi cd "$dir" || return 1 claude }

之后开新终端,cw fix-pay就直接进对应工作树并启动 Claude Code。三个终端分别执行cw fix-pay、cw refactor-api、cw review-pr-42,三条线就并行跑起来了。

4. 验证请求:确认三个实例真的在并行

配置写完不能直接信,得验证。分两步:先确认 TaoToken 通道通,再确认三个实例互不干扰。

4.1 单实例连通性测试

在任意一个工作树里启动 Claude Code,输入一句最简单的指令:

请只回复 "pong",不要做任何其他操作。

如果返回pong,说明ANTHROPIC_BASE_URL和 Key 都生效了。如果报 401,检查 Key 有没有复制全;如果报 404,检查 base_url 是不是多写了/v1;如果超时,去 TaoToken 控制台看这个 Key 的调用记录,确认请求有没有到达。

4.2 并行隔离验证

这一步是关键。在三个终端里分别让 Claude 做一件会留下痕迹的事:

终端 A(fix-pay 工作树):

在当前目录创建一个文件 FIX_NOTES.md,内容写 "fixing pay timeout"。

终端 B(refactor-api 工作树):

在当前目录创建一个文件 REFACTOR_NOTES.md,内容写 "refactoring api layer"。

终端 C(review-pr-42 工作树):

列出当前目录下所有 .md 文件,并告诉我当前分支名。

预期结果:终端 A 和 B 各自创建了文件,终端 C 列出的文件里不应该出现FIX_NOTES.md或REFACTOR_NOTES.md,而且它报告的分支名应该是feature/order-export。如果终端 C 看到了 A 或 B 创建的文件,说明三个实例跑在了同一个目录里,检查你的cw函数是不是cd失败了。

再验证 Git 隔离:

# 在 fix-pay 工作树 git status # 应该只显示 FIX_NOTES.md 未追踪 # 在 refactor-api 工作树 git status # 应该只显示 REFACTOR_NOTES.md 未追踪

两个工作树的git status互不影响,就说明 Worktree 隔离生效了。

4.3 确认请求都走了 TaoToken

去 TaoToken 控制台的调用日志页面,刷新一下。你应该能看到刚才三个实例发出的请求,每条记录里有时间戳、模型名、token 消耗量。如果只看到一条,说明另外两个实例可能读到了别的配置(比如系统环境变量里有个旧的ANTHROPIC_API_KEY覆盖了 settings.json)。用echo $ANTHROPIC_API_KEY检查一下当前 shell 有没有残留变量。

5. 本篇常见错排查

5.1fatal: 'xxx' is already checked out

Git 不允许同一个分支在两个工作树里同时检出。如果你执行git worktree add ../worktrees/fix-pay -b fix/pay-timeout时报这个错,说明fix/pay-timeout已经在别的地方被检出了。先git worktree list看看,要么换个分支名,要么把旧工作树删掉。

5.2 Claude Code 报Connection error或一直转圈

先排除网络问题,再检查 base_url。最常见的坑是把https://taotoken.net/api写成了https://taotoken.net/api/(末尾多斜杠),或者写成了https://taotoken.net(少了/api)。用 curl 直接测一下:

curl -s -o /dev/null -w "%{http_code}" https://taotoken.net/api

返回 401 或 405 都算正常(说明端点存在,只是没带认证),返回 404 就是路径错了。

5.3 三个实例共用了同一个 Key,怎么知道谁在烧额度

TaoToken 控制台的调用日志里,每条请求会带user-agent和来源 IP。如果你在三个不同的终端里启动,来源 IP 是一样的(都是你本机),但时间戳和模型名可以帮你区分。更稳妥的做法是给每个工作树配不同的 Key——在项目级.claude/settings.json里覆盖用户级的ANTHROPIC_API_KEY,这样每个实例的消耗独立可查。

5.4 工作树里的node_modules是空的

Worktree 共享.git,但不共享.gitignore里忽略的目录。node_modules、venv、.next这些在每个工作树里都是独立的。进新工作树后先跑一遍npm install或pip install -r requirements.txt。如果你在某个工作树里装了新依赖,记得主工作区也要装,否则合并后主工作区跑不起来。

5.5 合并时冲突比预期多

这是并行开发的固有代价。两个工作树如果改了同一批文件,合并时必然冲突。缓解办法是每天从 main 同步一次:

cd ../worktrees/refactor-api git fetch origin git merge origin/main

早同步、勤同步,冲突会小很多。另外,任务拆分时尽量让三条线碰不同的目录——修 bug 碰pay/,重构碰api/,review 只读不写,这样冲突概率最低。

5.6 忘记清理工作树,分支越堆越多

跑完一个任务后,合并完就清理:

cd ~/projects/my-app git worktree remove ../worktrees/fix-pay git branch -d fix/pay-timeout

如果工作树里有未提交的改动,git worktree remove会拒绝执行,加--force可以强制删(但改动会丢,慎用)。定期跑git worktree prune清理已经手动删掉目录但 Git 还记着的失效引用。

6. 把三条线真正跑起来

配置和验证都过了之后,实际工作流是这样的。早上到工位,开三个终端:终端 A 进fix-pay让 Claude 定位支付超时的根因并给出修复方案;终端 B 进refactor-api让 Claude 按你定的规范重构错误处理;终端 C 进review-pr-42让 Claude 逐文件 review 同事的 PR,把可疑点列出来。三个实例同时跑,你在主工作区继续写自己的代码,偶尔切过去看一眼进度。

需要模型对话来快速验证某个 API 行为时,可以直接用 TaoToken 的对话页面,不用起完整 Claude Code:

https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=worktree_claude&utm_campaign=rewrite

接入文档在这里,遇到 base_url 或认证问题时对照排查:

https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=worktree_claude&utm_campaign=rewrite

API Key 管理页面,用来给不同工作树分配独立 Key 或查消耗:

https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=worktree_claude&utm_campaign=rewrite

如果你主要用 Claude Code 做长期编码和 Agent 任务,Coding Plan 比按量计费更划算,也省得天天盯额度:

https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=worktree_claude&utm_campaign=rewrite

最后说一个我踩过的坑:三个实例并行时,最容易出问题的不是 Git,而是你的注意力。Claude 在 A 里问你要不要批准一个写操作,你正在 B 里看 diff,等回过头来 A 已经超时了。解决办法是给每个终端设不同的背景色,或者用 tmux 分屏,让三个实例的状态一眼可见。工具是为人服务的,别让人变成工具的调度器。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询