
1. 为什么单个 Claude Code 会话跑不动复杂任务我最近在重构一个中型 Node.js 项目需求拆下来有七八条用户模块要拆 service 层、登录接口有并发 bug、还要补一套集成测试。一开始我图省事把所有需求一股脑丢给一个 Claude Code 会话。前二十分钟还行到后面就开始出问题——上下文越滚越长它开始忘记前面改过哪些文件同一个utils/date.ts被反复重写最后一次覆盖直接把之前修好的时区逻辑冲掉了。这不是模型不行是单实例架构的天然瓶颈。一个 Claude 会话只有一个上下文窗口所有任务的中间状态、文件内容、报错信息都挤在里面。任务一多注意力就被稀释响应变慢只是表象真正要命的是任务之间互相污染。Claude Code 并行任务这套机制本质上是把「一个全能选手」拆成「一个协调者 多个专注执行者」。它给了三层能力复杂度从低到高机制适用场景协作方式复杂度Subagents专注型任务只需关注结果单向汇报结果返回主代理低Agent Teams需要讨论与协作的复杂工作多向通信队友直接互发消息中Git Worktree多个任务需要隔离的代码环境完全独立各自工作目录中选择逻辑很直白子任务相互独立、只要结果用 Subagents需要多个 Agent 互相讨论、协调用 Agent Teams多个任务要操作同一仓库的不同分支用 Git Worktree。实际项目里这三者经常组合使用比如用 Subagents 拆分角色每个 Subagent 再跑在独立的 Worktree 里。这篇文章我会带你从零跑通一套多任务协作流程先配好 Subagents 拆分角色再用 Git Worktree 隔离分支最后并行跑两个子任务验证各自分支产出和主分支合并结果互不干扰。全程可复制踩过的坑我也会标出来。2. TaoToken 前置准备与 Claude Code 接入配置在折腾并行任务之前得先把 Claude Code 的模型通道打通。Claude Code 本身是个 CLI 工具它需要一个能响应 Anthropic 格式请求的 API 端点。我这边用的是 TaoToken 的接入方案它兼容 Anthropic 的 Messages API 协议配置起来比较直接。先说清楚要准备的三件套这是后面所有配置的基础Base URLhttps://taotoken.net/apiAPI Key在控制台创建格式类似sk-开头的一串字符Model ID比如claude-sonnet-4-5-20250929这类具体模型标识API Key 的获取入口在控制台的 API Keys 页面登录后新建一个就行。这里不展开注册流程重点讲配置。Claude Code 读取配置有两个位置全局的~/.claude/settings.json和项目级的.claude/settings.json。并行任务场景我建议用项目级配置因为不同项目可能要用不同模型。配置文件长这样{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的实际Key, ANTHROPIC_MODEL: claude-sonnet-4-5-20250929, ANTHROPIC_SMALL_FAST_MODEL: claude-haiku-4-5-20251001 } }这里有个细节值得说ANTHROPIC_SMALL_FAST_MODEL是给那些轻量任务用的比如文件搜索、状态行更新。Claude Code 内置的 Explore 子代理默认就走 Haiku配好这个能省不少成本。如果你只配了主模型那些小任务也会走 Sonnet钱包会疼。配好之后验证一下通道是否通claude --version claude -p 回复 OK 两个字母即可第二条命令会发起一次真实请求。如果返回OK说明 Base URL、Key、Model ID 三件套都对上了。如果报 401八成是 Key 写错或者带了多余空格如果报 model not found检查 Model ID 拼写。注意ANTHROPIC_AUTH_TOKEN和ANTHROPIC_API_KEY是两个不同的环境变量Claude Code 优先读前者。有些教程让你配ANTHROPIC_API_KEY在部分版本上会不生效建议统一用ANTHROPIC_AUTH_TOKEN。通道打通后Claude Code 才能正常调用模型后面的 Subagents 和 Worktree 才有意义。这一步别跳过我见过太多人卡在 401 上以为是并行配置的问题。3. Subagents 配置片段与 Git Worktree 初始化命令这一节是核心给你可以直接复制的配置。先讲 Subagents 怎么定义角色再讲 Worktree 怎么隔离分支。3.1 Subagent 文件结构与 YAML frontmatterSubagent 本质是一个 Markdown 文件放在.claude/agents/目录下文件名就是代理名。文件开头用 YAML frontmatter 声明元信息下面是系统提示词。我建了三个角色代码审查、测试生成、文档编写。先看代码审查这个文件路径.claude/agents/code-reviewer.md--- name: code-reviewer description: Reviews code for quality, security and best practices. Use when you need a focused review of changed files. tools: Read, Glob, Grep model: sonnet --- You are a senior code reviewer. When invoked: 1. Read the files mentioned in the task. 2. Check for security issues, error handling gaps, and naming problems. 3. Return a concise list of findings with file path and line number. 4. Do not modify any files. Only report.测试生成角色.claude/agents/test-writer.md--- name: test-writer description: Generates unit tests for given modules. Use when new code needs test coverage. tools: Read, Write, Edit, Bash model: sonnet isolation: worktree --- You are a test engineer. When invoked: 1. Read the target module and its existing tests. 2. Write tests covering happy path, edge cases, and error branches. 3. Run the test command and report pass/fail counts. 4. Keep each test file under 200 lines.注意isolation: worktree这一行它让这个 Subagent 每次运行都在一个临时 git worktree 里不会污染主工作区。这是 Subagent 和 Worktree 结合的关键配置。文档编写角色.claude/agents/doc-writer.md--- name: doc-writer description: Writes and updates markdown documentation. Use when code changes need doc sync. tools: Read, Write, Glob model: haiku --- You are a technical writer. When invoked: 1. Read the source files and existing docs. 2. Update or create markdown docs matching the code behavior. 3. Use concise language, no marketing fluff.三个角色的模型选择有讲究审查和测试用 Sonnet 保证质量文档用 Haiku 省钱。工具限制也很重要——审查角色只给只读工具它就不可能误改代码。3.2 Git Worktree 初始化命令Worktree 的作用是让多个任务在不同分支上并行各自有独立的工作目录但共享同一个.git数据库。Claude Code 提供了-w参数直接创建# 创建 feature-auth 分支的 worktree 并启动 Claude claude -w feature-auth # 同时创建 tmux 会话方便多窗口切换 claude -w feature-auth --tmux # 用传统 tmux 模式 claude -w feature-auth --tmuxclassicWorktree 的创建位置固定在repo/.claude/worktrees/name。如果你想手动管理也可以用原生 git 命令git worktree add .claude/worktrees/feature-auth -b feature-auth git worktree add .claude/worktrees/bugfix-login -b bugfix-login git worktree listgit worktree list会列出所有挂载的工作目录确认两个分支都挂上了。每个 worktree 有自己的 HEAD 和暂存区在feature-auth里 commit 不会影响bugfix-login。3.3 组合配置让 Subagent 跑在 Worktree 里把上面两块拼起来就是完整的并行任务配置。项目结构大概是这样my-project/ ├── .claude/ │ ├── settings.json # Base URL Key Model │ ├── agents/ │ │ ├── code-reviewer.md │ │ ├── test-writer.md │ │ └── doc-writer.md │ └── worktrees/ │ ├── feature-auth/ │ └── bugfix-login/ ├── src/ └── package.jsonsettings.json里除了三件套还可以加上 Agent Teams 的开关后面会讲{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的实际Key, ANTHROPIC_MODEL: claude-sonnet-4-5-20250929, ANTHROPIC_SMALL_FAST_MODEL: claude-haiku-4-5-20251001, CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS: 1 }, teammateMode: in-process }配置写完用/agents命令可以列出所有已注册的 Subagent确认三个角色都被识别到。如果某个角色没出现检查 frontmatter 的name字段和文件名是否一致YAML 缩进有没有用空格不能用 Tab。4. 并行跑两个子任务并验证分支产出配置就绪现在跑一个真实场景主分支上有个src/utils/date.ts需要重构同时src/auth/login.ts有个并发 bug 要修。两个任务都碰不到同一个文件适合并行。4.1 启动两个 Worktree 会话开两个终端分别启动# 终端 1重构日期工具 claude -w feature/date-refactor # 终端 2修复登录并发 claude -w bugfix/login-race每个终端里Claude Code 会自动切到对应 worktree 目录。你可以用pwd确认路径是.claude/worktrees/feature/date-refactor这种。4.2 分发任务给 Subagent在终端 1 里用自然语言调用 SubagentUse the test-writer subagent to add unit tests for src/utils/date.ts, then use the code-reviewer subagent to review the changes.在终端 2 里Use the code-reviewer subagent to inspect src/auth/login.ts for race conditions, then fix the issue and run the existing test suite.这里体现了 Subagent 的单向汇报特性主代理负责协调Subagent 干完活把结果返回。终端 1 的test-writer因为配了isolation: worktree它会在一个临时 worktree 里写测试写完再合并回feature/date-refactor分支。4.3 验证分支产出两个任务跑完后回到主仓库检查git worktree list git log --oneline feature/date-refactor -3 git log --oneline bugfix/login-race -3 git diff main..feature/date-refactor --stat git diff main..bugfix/login-race --stat预期结果feature/date-refactor的提交里只有date.ts和对应的测试文件bugfix/login-race的提交里只有login.ts。两个分支的 diff 文件集完全不重叠这就是隔离生效的证据。4.4 合并回主分支确认无误后合并git checkout main git merge feature/date-refactor git merge bugfix/login-race因为两个分支改的文件不重叠合并不会冲突。如果冲突了说明任务拆分有问题——要么两个任务碰了同一个文件要么 Worktree 没隔离干净。4.5 用 Agent Teams 做需要讨论的任务如果任务之间需要互相讨论比如「设计一个 CLI 工具从 UX、架构、反方视角分别评估」Subagents 就不够了得上 Agent Teams。启用后前面 settings.json 已经开了开关用自然语言描述团队结构Create an agent team to review PR #142. Spawn three reviewers: one focused on security, one on performance, one validating test coverage. Have them each review and report findings.Agent Teams 和 Subagents 的区别在于通信方式Subagent 只向主代理汇报Agent Teams 的队友之间可以直接互发消息。代价是 Token 成本更高因为每个队友都是独立的 Claude 实例。团队规模建议从 3-5 人起步每个队友分 5-6 个任务太多会失控。5. 常见报错排查401、local proxy failed 与 OAuth并行任务跑起来后报错基本集中在通道和权限两块。我把踩过的坑列出来对照着查。401 Unauthorized最常见。原因通常是 Key 无效或环境变量没生效。排查步骤echo $ANTHROPIC_AUTH_TOKEN cat .claude/settings.json | grep AUTH如果环境变量为空说明 settings.json 没被读取检查文件路径是不是项目根目录下的.claude/settings.json。如果 Key 有值但还是 401可能是 Key 被撤销了去控制台重新生成一个。local proxy failed / connection refused这个报错说明 Claude Code 尝试连本地代理但失败了。检查ANTHROPIC_BASE_URL是不是被设成了http://localhost:xxxx之类的本地地址。正确值应该是https://taotoken.net/api。另外检查有没有残留的HTTP_PROXY/HTTPS_PROXY环境变量指向不存在的端口env | grep -i proxy unset HTTP_PROXY HTTPS_PROXYreading choices / unexpected response shape这个报错通常出现在模型返回格式不符合预期时。可能是 Model ID 写错了或者 Base URL 指向了一个不兼容 Anthropic 协议的端点。确认三件套curl -s https://taotoken.net/api/v1/messages \ -H x-api-key: sk-你的Key \ -H anthropic-version: 2023-06-01 \ -H content-type: application/json \ -d {model:claude-sonnet-4-5-20250929,max_tokens:16,messages:[{role:user,content:hi}]}返回里有content字段就说明通道正常。如果返回error看错误信息对症下药。OAuth token expiredClaude Code 某些版本会尝试 OAuth 登录流程。如果你用的是 API Key 模式确保没有残留的 OAuth 凭证rm -rf ~/.claude/credentials.json然后重启 Claude Code它会重新读 settings.json 里的 Key。Subagent 没被识别/agents列表里看不到你建的 Subagent检查三点文件是否在.claude/agents/目录frontmatter 的name是否和文件名一致YAML 缩进是否用了空格。YAML 对 Tab 零容忍一个 Tab 就能让整个 frontmatter 解析失败。Worktree 创建失败报fatal: branch is already checked out说明这个分支已经在另一个 worktree 里了。用git worktree list找到占用它的目录先git worktree remove path再重建。或者换个分支名。Agent Teams 队友不出现先确认版本claude --version要 ≥ 2.1.32。再确认CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS1已设置。如果用了 split-pane 模式检查 tmux 是否安装tmux -V。没装的话切回in-process模式。排查完这些通道和权限问题基本能覆盖。剩下的就是任务拆分本身的技巧了。6. 把并行任务接入你的日常开发流跑通一次不代表能长期用。我自己的做法是把这套流程固化下来几个实用技巧分享给你。第一Subagent 保持单一职责。一个 Subagent 只干一件事审查的就只审查别让它又审又改。工具限制是硬约束审查角色只给Read, Glob, Grep它想改也改不了。第二Worktree 一个任务一个。别在同一个 worktree 里塞多个不相关的任务那样隔离就白做了。任务完成后及时清理git worktree remove .claude/worktrees/xxx不然目录越堆越多。第三模型分级。简单任务用 Haiku复杂任务用 Sonnet 或 Opus。Subagent 的model字段单独控制不用跟主对话一致。文档、搜索这类活交给 Haiku成本能降一大截。第四Agent Teams 从研究和审查类任务起步。这类任务不需要写代码冲突风险低适合先熟悉多 Agent 协作的节奏。等摸清了再上需要改代码的复杂任务。如果你还没配好通道先去控制台拿一个 API Key然后按第 2 节的 settings.json 配好三件套。通道通了Subagents 和 Worktree 才有发挥空间。接入文档里有更详细的参数说明遇到协议层面的问题可以对照查。想先验证模型响应是否正常可以直接在模型对话页面发一条测试消息确认返回格式没问题再回到 CLI 里跑并行任务。长期做编码和 Agent 协作的话Coding Plan 的额度模型更适合高频调用场景不用每次担心单次请求的成本。