ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

多 Agent 并行开发实战:Claude Code 原生 Git Worktree 配置与 TaoToken 统一接入

多 Agent 并行开发实战:Claude Code 原生 Git Worktree 配置与 TaoToken 统一接入 1. 多 Agent 并行开发为什么会互相踩脚如果你最近在 Claude Code 里同时开两个 Agent 干活大概率遇到过这种场面Agent A 在重构utils.pyAgent B 同时在读同一个文件补登录页的 bug两边各自保存了一版结果 git index 直接乱掉git status里一堆莫名其妙的改动分不清谁改的。更麻烦的是 HEAD 状态共享两个 Agent 的提交历史混在一条线上回滚都不知道从哪下手。这不是模型能力的问题是 Git 仓库结构本身的限制。一个仓库默认只有一个工作目录、一个暂存区、一个 HEAD你让两个进程同时往里写冲突是必然的。Git Worktree 就是来解决这个的同一个.git数据库挂载出多个独立工作目录每个目录有自己的分支、自己的 HEAD、自己的暂存区互不干扰。Claude Code 的 CLI 现在原生内置了 worktree 支持一个--worktree参数就能让会话跑在隔离工作区里。但真正落地到多 Agent 并行时还有一个容易被忽略的坑每个 worktree 里的 Claude Code 会话API Key 和模型通道怎么统一管理。如果每个 worktree 各自配一份 Key改一次要改 N 个地方还容易漏。这篇就聚焦这个场景给出 Git Worktree 的落地配置以及用 TaoToken 统一接入 API 通道的可复制骨架最后演示两个 worktree 同时跑 Agent 的验证动作。适合谁看已经在用 Claude Code CLI、想开多 Agent 并行、但被 Key 分散和通道不统一卡住的开发者。下面所有配置都可以直接抄。2. TaoToken 前置统一 Key 与 API 通道在讲 worktree 配置之前先把 TaoToken 这层说清楚。TaoToken 在这里扮演的角色是统一的 API 网关你只需要在它那边拿一个 Key配一个 base URL所有 worktree 里的 Claude Code 会话都指向同一个通道。这样无论你开几个 worktree、跑几个 AgentKey 只有一份模型通道只有一条改配置只改一处。具体来说你需要准备两样东西第一是 API Key。到 TaoToken 控制台的 API Keys 页面创建一个复制出来备用。地址是https://taotoken.net/api-keys注意这个链接不带 UTM直接访问即可。第二是 API 端点。TaoToken 的 API base URL 是https://taotoken.net/api这个地址在配置里会作为ANTHROPIC_BASE_URL或者对应的环境变量使用。注意TaoToken 是合规的 API 接入服务不是任何形式的网络中转工具。配置时只涉及标准的 HTTP API 调用不涉及任何网络层操作。拿到 Key 和端点后接下来的思路是把这两个值写进一个所有 worktree 都能读到的位置。Claude Code 的配置优先级是项目级.claude/settings.json 用户级~/.claude/settings.json。多 worktree 场景下我建议把 Key 放在用户级配置里项目级只放 worktree 相关的隔离设置。这样每个 worktree 共享同一份 Key不会出现某个 worktree 漏配的情况。如果你还没创建 Key可以先到模型对话页面体验一下通道是否正常确认能通再往下配。地址是https://taotoken.net/model-chat。3. 可复制配置settings.json 骨架与 worktree 创建这一节给出完整的配置骨架。分三步用户级 settings.json 配 Key 和通道项目级 settings.json 配 worktree 隔离然后用命令创建 worktree。3.1 用户级 settings.json统一 Key 与通道打开~/.claude/settings.json没有就新建写入以下内容{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的TaoToken密钥 }, model: claude-sonnet-4-6, permissions: { allow: [ Bash(git worktree:*), Bash(git status:*), Bash(git diff:*) ] } }这里的关键是env块里的两个变量。ANTHROPIC_BASE_URL指向 TaoToken 的 API 端点ANTHROPIC_API_KEY填你在控制台创建的 Key。所有 worktree 里的 Claude Code 会话启动时都会读这份用户级配置所以 Key 只需要配一次。permissions.allow里我加了git worktree相关的命令白名单这样 Agent 在 worktree 里执行 git 操作时不会频繁弹权限确认。你可以根据自己的安全策略调整。3.2 项目级 settings.jsonworktree 隔离声明在项目根目录的.claude/settings.json里声明 worktree 相关的隔离配置{ worktree: { baseDir: .claude/worktrees, autoCleanup: false }, hooks: { WorktreeCreate: [ { command: echo \worktree created: $(cat /dev/stdin | jq -r .name)\ } ], WorktreeRemove: [ { command: echo \worktree removed: $(cat /dev/stdin | jq -r .worktree_path)\ } ] } }baseDir指定 worktree 的创建位置默认就是.claude/worktrees。autoCleanup设为false是为了保留工作区方便你事后 review 每个 Agent 的产出。hooks 部分是可选的用来在 worktree 创建和删除时打日志方便排查。注意项目级配置里不要再写ANTHROPIC_API_KEY。如果项目级和用户级都配了 Key项目级会覆盖用户级导致每个 worktree 的 Key 可能不一致。Key 只在用户级配一份。3.3 创建 worktree 并启动 Agent配置写好后创建 worktree 有两种方式。第一种是让 Claude Code 自动创建claude --worktree agent-refactor这会在.claude/worktrees/agent-refactor下创建一个新的工作区并自动新建一个分支。整个会话在里面独立运行不影响主分支。第二种是手动用 git 创建再引导 Claude 进去git worktree add .claude/worktrees/agent-bugfix -b fix-login-bug cd .claude/worktrees/agent-bugfix claude手动方式的好处是你可以精确控制分支名和路径。两种方式创建的 worktree 都共享同一个.git数据库但各自有独立的 HEAD 和暂存区。如果你有自定义 Agent 配置文件可以在 frontmatter 里直接声明隔离--- name: worktree-worker model: claude-haiku-4-5 isolation: worktree ---这样这个 Agent 每次运行都会自动使用独立的 worktree不需要每次手动指定--worktree。4. 验证请求两个 worktree 同时跑 Agent配置完成后最关键的一步是验证两个 worktree 能同时跑 Agent 且互不干扰。下面给出完整的验证动作。4.1 准备两个 worktree在项目根目录执行git worktree add .claude/worktrees/agent-a -b task-refactor git worktree add .claude/worktrees/agent-b -b task-bugfix git worktree listgit worktree list应该输出类似/path/to/project abc1234 [main] /path/to/project/.claude/worktrees/agent-a def5678 [task-refactor] /path/to/project/.claude/worktrees/agent-b ghi9012 [task-bugfix]三个工作目录共享同一个.git但分支和 HEAD 各自独立。4.2 在两个 worktree 里分别启动 Agent开两个终端窗口。终端 1cd .claude/worktrees/agent-a claude --print 读取 src/utils.py把里面的同步 IO 调用改成 async改完跑一遍测试终端 2cd .claude/worktrees/agent-b claude --print 检查 src/auth/login.py 的登录逻辑修复 session 过期后未跳转的问题两个 Agent 同时运行。因为它们在各自的 worktree 里src/utils.py的修改只发生在 agent-a 的工作区agent-b 读到的还是主分支的版本不会互相覆盖。4.3 验证隔离效果两个 Agent 跑完后分别检查cd .claude/worktrees/agent-a git status git diff --stat cd .claude/worktrees/agent-b git status git diff --stat你应该看到 agent-a 的改动集中在src/utils.pyagent-b 的改动集中在src/auth/login.py两边互不重叠。再回到主目录cd /path/to/project git status主分支应该是干净的没有任何未提交的改动。这说明两个 Agent 的工作完全隔离在各自的 worktree 里。4.4 验证 API 通道统一在两个 worktree 里分别执行一次简单请求确认都走的是 TaoToken 通道cd .claude/worktrees/agent-a claude --print 回复 OK cd .claude/worktrees/agent-b claude --print 回复 OK如果两边都能正常返回说明用户级 settings.json 里的ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY被正确读取两个 worktree 共享同一条 API 通道。你可以在 TaoToken 控制台的用量页面看到这两次请求的记录确认调用来源一致。5. 本篇常见错排查配置和验证过程中最容易踩的坑集中在这几个地方。报错一ANTHROPIC_API_KEY未设置或 401现象是 Claude Code 启动后请求返回 401。原因通常是用户级 settings.json 没写对或者项目级配置覆盖了用户级但没填 Key。排查步骤cat ~/.claude/settings.json | jq .env确认ANTHROPIC_API_KEY和ANTHROPIC_BASE_URL都在。如果项目级.claude/settings.json里也有env块检查是否误写了 Key。记住原则Key 只在用户级配一份。报错二worktree 创建失败提示分支已存在git worktree add时如果分支名重复会报错。解决方法是换个分支名或者先删掉旧 worktreegit worktree remove .claude/worktrees/agent-a git branch -D task-refactor git worktree add .claude/worktrees/agent-a -b task-refactor报错三两个 worktree 的改动互相可见如果 agent-a 改了文件agent-b 里也能看到说明两个会话其实跑在同一个工作目录里。检查git worktree list的输出确认两个 worktree 的路径不同。另外确认启动 Claude Code 时cd到了正确的 worktree 目录而不是在项目根目录直接跑。报错四worktree 里的 Agent 无法执行 git 命令这是权限问题。在用户级 settings.json 的permissions.allow里加上Bash(git worktree:*)、Bash(git add:*)、Bash(git commit:*)等白名单。或者临时用--dangerously-skip-permissions启动但不建议在生产环境这么做。报错五TaoToken 通道返回模型不存在检查model字段填的模型名是否在 TaoToken 支持的列表里。可以先到模型对话页面手动选一个模型发一条消息确认通道和模型名都正确再写进配置。6. 长期编码与 Agent 场景的接入建议如果你只是偶尔开两个 worktree 跑一下上面的配置够用了。但如果你打算把多 Agent 并行当成日常开发流程有几个点值得提前规划。第一Key 的轮换。TaoToken 控制台支持创建多个 Key建议给不同的项目或不同的 Agent 组分配不同的 Key方便按来源统计用量和单独吊销。地址是https://taotoken.net/api-keys。第二worktree 的清理策略。autoCleanup设为false会保留所有 worktree跑多了磁盘会涨。建议定期用git worktree prune清理已删除的 worktree 记录手动确认产出后再删目录。第三如果你要跑的是长时间编码任务或者多个 Agent 协作的复杂流程可以看一下 Coding Plan 的配置方式它针对持续性的编码会话做了通道优化。地址是https://taotoken.net/coding-plan。第四接入文档里有完整的参数说明和更多配置示例遇到本文没覆盖的场景可以去查。地址是https://taotoken.net/doc。最后说一个我自己的习惯每次开新 worktree 之前先跑一遍git worktree list确认当前状态避免在已有 worktree 上重复创建。跑完 Agent 后先git diff --stat看改动范围确认没有意外文件被改再决定是否合并。worktree 隔离解决的是工作区冲突但合并策略和 review 还是得人来判断。
返回列表