
1. 支付回调挂了你却卡在 git stash pop 的半路上下午 2:30你正趴在feature/smart-recommend分支上写推荐算法model.py里还留着一行# TODO: 循环复杂度太高后面重构。思路刚好走到一半企业微信弹出一条消息“线上支付回调挂了用户付款成功但订单状态不下发快看”你低头扫了一眼改到一半的 5 个文件叹了口气熟练地敲下git add .、git stash -m WIP: 推荐算法开发中切回main再切出一个hotfix/payment-callback。两小时后 Bug 修完你切回feature/smart-recommend执行git stash pop盯着屏幕上冒出来的冲突标记愣了几秒“等等我刚才那几行逻辑到底要接到哪里”这个场景是很多开发者的日常。Git 的分支切换本质不是“切换”而是“中断”你把当前进度打包塞进 stash去处理别的任务再回来时上下文已经断成两截。更麻烦的是当你打算让两个 Claude Code 分头干活时官方 API 额度、多 Key 管理、模型切换这些事再叠加上分支切换整个并行方案就变得没法落地。现在可以用 Git Worktree 把每个任务放进独立目录再让多个 Claude Code 都通过 TaoToken 走同一条兼容通道调模型官方额度不够多开的困境也能一并解决。TaoToken 的 Key 从 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 创建Claude Code 的 Base URL 则填成 https://taotoken.net/api两个工位里的 Agent 就能在同一套配置下互不干扰地同时推进。1.1 先看清 stash 之外的第三选项在决定用哪条路并行之前可以把三个候选方案摆在同一张表里对比一下。对比维度git stashgit clonegit worktree是否支持并行不支持只能串行支持支持磁盘占用低单份文件高完整复制.git和文件低只 checkout 文件.git共享创建速度秒级慢可能几分钟快几秒完成上下文保留容易忘掉 stash 内容各自独立各自独立分支同步不涉及需手动 fetch pull 多个仓库一次 fetch 全局生效stash 冲突风险pop 时可能冲突无冲突无冲突清理成本低高低stash 适合“5 分钟内回来”的临时切换clone 适合彻底独立、永不交互的实验而 worktree 是日常并行开发里更均衡的选择——它像在一个仓库里开出多个“平行宇宙”每个宇宙有自己的工作目录却共享同一份 Git 历史。1.2 中断的代价不只是 5 个文件回到那个下午的场景真正让人崩溃的不是支付回调本身而是第二次上下文断裂修完 Bug 回来你已经忘了model.py里那个 TODO 后面的重构思路。Claude Code 也一样——它处理长任务的上下文窗口是连续性的执行到一半把目录切走、再切回Agent 就要重新读一遍项目结构之前分析的结论可能就丢了。Worktree 让每个任务都有自己固定的工作目录AI 不会“走错片场”TaoToken 则负责解决另一个问题当主工作区、hotfix 工位、A/B 测试工位同时要跑模型一个官方 Key 很容易撞上每分钟请求数上限。2. 开工前先把 Claude Code 的通道切到 TaoToken并行开发的基础是每个工位都有稳定的模型通道。TaoToken 作为一个统一的 API 兼容通道可以让 Claude Code 通过它来调用模型避免多个 worktree 同时抢同一个官方 Key 的额度。配置方法也很直接打开 TaoToken 注册并创建 API Key拿到的是形如YOUR_API_KEY的占位符随后把 Claude Code 的 Base URL 指向 https://taotoken.net/api注意末尾不要加/v1更不要把官网链接当 Base URL 填进工具。2.1 全局配置让每个 worktree 自动继承Claude Code 的配置放在用户主目录的~/.claude/settings.json里它相比项目内.env的优势在于所有通过git worktree add创建的新目录启动时都会自动加载这份用户级配置。你不需要在ecommerce-hotfix、ecommerce-abtest各自再写一遍环境变量。配置文件内容如下{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: 以 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 模型广场为准 } }三个环境变量的含义分别是ANTHROPIC_BASE_URL让 Claude Code 把请求发到 TaoToken 的接口地址这个地址末尾没有/v1ANTHROPIC_AUTH_TOKEN填入从官网创建的YOUR_API_KEYANTHROPIC_MODEL的取值请以模型广场实际列出的模型 ID 为准不同时期开放的模型可能不同写死一个过期 ID 反而会报 400。ANTHROPIC_MODEL里的真实模型名要替换成模型广场上存在的 ID如果暂时不填也可以在每次调用时用claude -m 模型ID临时指定。2.2 用一条命令验证通道是否通了配置完成后可以先在任意目录跑一次一次性命令来确认通道claude -p ping 一下用一句话回答模型通道是否连接正常如果回复正常说明 Claude Code 已经能通过 TaoToken 调用模型。这一步验证的是“通道层面”的通畅不需要创建 worktree 也能测。拿到 Key 之后后续所有 worktree 里的 Claude Code 都会自动沿用这套全局配置不会出现一个工位能调模型、另一个工位报 401 的情况。3. 两个独立工位两个同时运行的 Claude Code通道配好后接下来就是正文的核心动作。还是沿用电商项目的设定你正在main主工作区开发商品详情页重构手里压着两个任务——支付回调验签 Bug 需要紧急修复推荐算法 A/B 测试框架需要搭建。按优先级排Bug 修复交给 Claude Code #1A/B 框架交给 Claude Code #2你自己留在主工作区继续写详情页。3.1 三条命令搭出三个“平行宇宙”在项目根目录依次执行cd ~/projects/ecommerce git worktree add -b hotfix/payment-callback ../ecommerce-hotfix main git worktree add -b experiment/recommend-ab ../ecommerce-abtest main git worktree list第一条命令创建了一个新分支hotfix/payment-callback并把它 checkout 到项目同级目录ecommerce-hotfix/基于main分支开始工作。第二条命令同理建立了专门做 A/B 实验的分支和目录。执行完git worktree list你会看到类似下面的输出/Users/me/projects/ecommerce abc1234 [main] /Users/me/projects/ecommerce-hotfix def5678 [hotfix/payment-callback] /Users/me/projects/ecommerce-abtest ghi9012 [experiment/recommend-ab]这三个字段依次是物理路径、当前 HEAD commit、所在分支。主工作区和两个 worktree 共享.git里的对象数据库但各自有独立的工作文件。你改ecommerce-hotfix下的代码ecommerce/里的内容纹丝不动。3.2 终端 2让 Claude Code 去修支付回调进入 hotfix 工位先装依赖再启动 Claude Code 的一次性任务cd ~/projects/ecommerce-hotfix npm install claude -p 定位并修复支付回调验签失败的 Bug。日志在 logs/payment.log先分析失败原因再修改相关代码跑通测试后提交 commit由于~/.claude/settings.json是全局配置这个 worktree 里的 Claude Code 会自动通过 TaoToken 发请求。Claude Code 会在这个独立目录里搜索回调相关代码路径、分析日志、定位验签失败原因、修改代码并执行验证。整个过程和主工作区完全隔离你在终端 1 继续写详情页不会被 checkout 或依赖变化打扰。3.3 终端 3另一个 Claude Code 搭 A/B 测试框架再开一个终端进入 abtest 工位cd ~/projects/ecommerce-abtest npm install claude -p 基于 feature flag 模式搭建推荐算法的 A/B 测试框架按用户 ID 哈希分流支持配置实验组和对照组两个claude -p命令同时跑起来各自占用一个 worktree互不竞争上下文也互不打断。这里可以看到 Git Worktree 和 TaoToken 配合带来的双赢worktree 提供空间隔离让每个 Agent 的工作目录固定TaoToken 提供通道隔离让两个 Agent 的模型请求不会因为共享一个官方 Key 而撞上限流。4. 验收、合并与收尾把并行结果汇成一条主线并行开发完成后需要把每个 worktree 里的成果收回到主仓库再按优先级合并。4.1 先看一眼各工位的进度git worktree list这一步能看到三个分支分别指向哪个 commit。可以在每个 worktree 里执行git log --oneline -5查看 AI 提交了哪些内容。如果发现提交信息模糊可以直接进入对应目录查看代码改动再决定是否调整。4.2 按优先级依次合并回到主工作区先拉取远程最新代码再按紧急程度合并cd ~/projects/ecommerce git checkout main git pull origin main git merge hotfix/payment-callback git merge experiment/recommend-ab支付回调是线上问题所以排在最前面A/B 框架是长期功能可以等合完 hotfix 再合。如果出现冲突就在主工作区解决后提交再继续下一个 merge。这一步验证了 worktree 的另一个优点分支独立提交合并路径清晰code review 时可以逐条查看每个分支的完整语义。4.3 清理工位并删除已合并分支git worktree remove ../ecommerce-hotfix git worktree remove ../ecommerce-abtest git branch -d hotfix/payment-callback git branch -d experiment/recommend-abgit worktree remove会同时清理目录和.git/worktrees/下的元数据比直接rm -rf安全得多。全部完成后仓库又恢复成最初的单目录结构而你在这一下午里实际完成了三个任务的并行推进。5. 实战细节环境变量隔离、多端口与一键创工位并行方案跑通后有几个实战细节值得单独拿出来讲它们决定了这套流程能否稳定复用于日常开发。5.1 不同工位使用不同的数据库和端口多个 worktree 同时运行时不能共享同一个数据库和端口。推荐在每个 worktree 里创建独立的.env.local文件并确保它们已被加入.gitignore# ecommerce/.env.local —— 主工作区 DB_HOSTlocalhost DB_NAMEecommerce_dev PORT3000 # ecommerce-hotfix/.env.local —— Bug 修复区 DB_HOSTlocalhost DB_NAMEecommerce_test PORT4000 # ecommerce-abtest/.env.local —— A/B 实验区 DB_HOSTlocalhost DB_NAMEecommerce_exp PORT5000这样三个服务可以同时启动在浏览器里分别访问 3000、4000、5000 端口预览各自的效果。5.2 同时跑三个开发服务器cd ~/projects/ecommerce npm run dev -- --port3000 cd ~/projects/ecommerce-hotfix npm run dev -- --port4000 cd ~/projects/ecommerce-abtest npm run dev -- --port5000每个 worktree 都有独立的node_modules依赖互不污染。用 VS Code 的开发者可以给每个 worktree 单独开一个窗口code ~/projects/ecommerce-hotfix窗口标题栏会显示对应目录名一眼就能分辨当前在哪里工作。5.3 把重复动作封装成脚本如果每周都要为多个任务建 worktree可以写一个wt-init.sh脚本#!/bin/bash # 用法: ./wt-init.sh 任务名 分支前缀 [基准分支] # 示例: ./wt-init.sh payment-bug hotfix main TASK_NAME$1 PREFIX$2 BASE${3:-main} PROJECT$(basename $(pwd)) WT_PATH../${PROJECT}-${TASK_NAME} BRANCH${PREFIX}/${TASK_NAME} git worktree add -b $BRANCH $WT_PATH $BASE cd $WT_PATH || exit npm install echo Worktree 就绪: $WT_PATH echo 启动 AI: cd $WT_PATH claude -p 你的任务描述执行./wt-init.sh payment-bug hotfix main脚本自动完成创建分支、建目录、安装依赖三件事省去每次手敲三条命令。6. Worktree 用的六个常见错误实战中容易踩的坑不少这里按出现频率列出六个。6.1 两个 worktree checkout 同一个分支fatal: feature/login is already checked out at /usr/me/projectworktree 不允许同一个分支在两个目录里同时被 checkout。需要共享代码时就 merge别试图共享分支只是想临时查看历史可以用--detach。6.2 在 worktree 活跃时对它的分支执行 rebase如果某个 worktree 正 checkout 在feature/x分支上而你在主仓库执行git rebase main feature/xworktree 里的工作环境可能损坏。操作任何分支前先用git worktree list确认没有活跃 worktree 正在使用它。6.3 跨 worktree 直接编辑文件从主工作区直接修改../ecommerce-hotfix/src/payment.js会让另一个 worktree 里的 Claude Code 陷入“文件被外部改动”的困惑。每个 worktree 的修改严格在自己的目录内完成跨目录操作要彻底避免。6.4 用rm -rf删除目录rm -rf ../project-hotfix删除目录后.git/worktrees/里的元数据仍然残留后续git worktree list会显示异常记录。正确做法是git worktree remove ../project-hotfix真的手滑删了用git worktree prune清理元数据。6.5 新 worktree 忘了装依赖worktree 创建时不复制主工作区的node_modules各自是独立的文件副本。首次进入新工位要先npm install否则npm run dev会报模块不存在。用 pnpm 的话硬链接机制可以让这一步快很多。6.6 忽略磁盘空间累积虽然.git对象是共享的但每个 worktree 的node_modules、构建产物、日志文件是独立的。定期用du -sh ../ecommerce-*检查各工位占用不需要的 worktree 及时 remove保持磁盘整洁。7. 一份能直接抄进团队文档的速查表把上面的核心命令整理成一张表适合直接贴进团队 Wiki。操作命令创建新分支并建 worktreegit worktree add -b hotfix/xxx ../proj-xxx main查看所有 worktreegit worktree list删除 worktreegit worktree remove ../proj-xxx强制删除丢弃未提交修改git worktree remove --force ../proj-xxx清理残留元数据git worktree prune移动 worktree 位置git worktree move ../old ../new锁定 worktree 防误删git worktree lock ../proj-xxx这一整套流程跑下来你手里相当于有了一支“AI 开发小队”Claude Code 在 hotfix 工位处理紧急 Bug另一个 Claude Code 在 abtest 工位搭框架你留在主工作区按自己的节奏推进主要功能。每个任务都有独立目录、独立依赖、独立分支最后统一合并回主线。如果你也经常被“切分支切到上下文断裂”困扰下一步就是复制上面的配置打开 TaoToken 创建一个 Key把~/.claude/settings.json里的ANTHROPIC_BASE_URL指向 https://taotoken.net/api然后随便挑一个手头的任务建个 worktree 试试。跑通一次之后可以登录 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 看看刚才的调用记录确认用量落地到你自己的账号里。从串行苦力到并行指挥差的其实就是这一步。