Claude Code Coordinator-Worker 并行派 Worker,Base URL 填 TaoToken 的接口地址
1. 长会话里 Worker 一多Token 账单就开始失控Claude Code 2.1.88 的 Coordinator-Worker 架构是我近期翻源码时觉得最值得动手复现的一套多 Agent 编排方案。它把系统拆成两个角色协调器只拿 AgentTool、SendMessageTool、TaskStopTool 三个工具负责理解意图、拆任务、综合结果Worker 由 AgentTool 异步派生独立跑研究、实现、验证通过 task-notification 把结果回传。Fork 子代理更巧所有子代理共享同一条消息前缀只改最后一个 directive 文本块靠字节级一致去命中 prompt cache。问题也出在这里。长会话里你同时开三五个 Worker 并行研究、实现、验证每个 Worker 都是一条独立的请求流Token 消耗成倍上涨。更麻烦的是这些请求散落在不同通道里你没法统一看用量、统一换模型、统一排查哪个 Worker 在偷偷烧钱。我试过在多个 Worker 之间来回切配置最后连哪个 Key 对应哪个任务都记混了。这篇就按 Agent / Harness 的视角把原文那套四阶段工作流Research 并行 → Synthesis 协调器自己写规格 → Implementation → Verification落到一条统一通道上。核心改动只有一步原来直接开跑 Worker 的地方改成先拿到 TaoToken 的 Key 和 Base URL配通之后再走原文的编排流程。Fork 子代理的前缀一致性、递归保护、task-notification 回传这些机制都不受影响缓存收益照拿。适合谁看已经在用 Claude Code 跑多 Agent、被长会话 Token 账单困扰、想要一条统一通道看用量和换模型的开发者。下面从注册拿 Key 开始一步步配到能跑通四阶段工作流。2. 前置准备TaoToken 账号与 Key 的创建这一步是整篇的地基配错了后面所有 Worker 都发不出请求。我把它拆成两个动作注册账号、创建 Key。先打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 完成注册。注册流程不复杂邮箱验证之后就能进控制台。进控制台后找到 API Keys 页面路径是 https://taotoken.net/console/api-keys 点创建新 Key复制出来先存好——这个 Key 只在创建时完整显示一次关掉页面就看不到了。创建 Key 的时候有几个参数值得留意我列个表对照一下配置项建议值说明Key 名称按用途命名如 cc-coordinator多 Worker 场景下方便区分是哪条通道额度上限按项目设长会话多 Worker 容易超支设个上限兜底模型权限按需勾选协调器和 Worker 可能用不同模型提前放开Key 拿到之后Base URL 是 https://taotoken.net/api 。这里有个高频踩坑点结尾不要加 /v1也不要带任何 UTM 参数。我见过有人把带 utm_source 的完整链接直接粘进配置结果请求路径变成 /api?utm_source... 直接 404。Base URL 就是干干净净的 https://taotoken.net/api 多一个字符都不行。如果你还想先确认模型通道是否正常可以打开模型对话页面 https://taotoken.net/models 发一条测试消息确认账号状态和模型可用性再回到 Claude Code 里配。这一步能帮你把「账号问题」和「配置问题」提前分开省得后面排障时两头猜。3. 可复制配置把 Base URL 和 Key 填进 Claude Code配置这一步我按「环境变量」和「配置文件」两种方式都写出来你挑顺手的用。核心就两个值ANTHROPIC_BASE_URL 指向 TaoToken 的接口地址ANTHROPIC_API_KEY 用刚创建的那把 Key。先看环境变量方式适合临时跑或者 CI 场景export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEYsk-你刚创建的那把Key如果你用的是 Claude Code 的配置文件方式找到用户级配置目录写入 settings{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你刚创建的那把Key } }配好之后协调器模式和 Fork 子代理的开关按原文的方式打开。协调器模式由环境变量 CLAUDE_CODE_COORDINATOR_MODE 控制Fork 子代理由 feature(FORK_SUBAGENT) 控制。这两个开关和 Base URL 是正交的配通道不影响编排逻辑export CLAUDE_CODE_COORDINATOR_MODE1这里要强调一个语义TaoToken 在这套架构里扮演的是「统一请求通道」的角色不是替代 Claude Code 的编辑器或编排器。协调器怎么拆任务、Worker 怎么并行、Fork 怎么共享前缀这些逻辑仍然跑在 Claude Code 内部TaoToken 负责的是让这些请求走同一条出口方便你统一看用量、统一换模型。理解这一点后面排障时就不会把「编排问题」和「通道问题」搞混。配完先别急着开 Worker下一节先做一次最小验证请求确认通道通了再上多 Agent。4. 验证请求确认每个 Worker 都从统一通道发出验证分两层先验证单条请求能通再验证多 Worker 场景下 task-notification 里的用量数据确实来自 TaoToken 通道。第一层用 curl 打一条最小请求确认 Base URL 和 Key 都对curl 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-20250514, max_tokens: 64, messages: [{role: user, content: ping}] }注意这里请求路径是 /api/v1/messages而 Base URL 填的是 https://taotoken.net/api 。Claude Code 内部会自动拼接 /v1/messages所以你在配置里只填到 /api 就行千万别自己再加 /v1否则会变成 /api/v1/v1/messages。这个坑我在配置阶段就踩过一次返回 404 排查了半天。第二层跑一个最小的 Coordinator-Worker 场景。让协调器派生两个只读研究 Worker并行调查代码库。Worker 完成后协调器会收到 task-notification格式长这样task-notification task-ida3f9c2e1/task-id statuscompleted/status summaryResearch worker finished/summary result.../result usage total_tokens18432/total_tokens tool_uses7/tool_uses duration_ms9210/duration_ms /usage /task-notification对着 usage 里的 total_tokens、tool_uses、duration_ms 核一遍确认每个 Worker 的请求确实从 TaoToken 通道发出。判断方法在 TaoToken 控制台的用量页面看请求计数如果两个 Worker 并行跑完用量页面应该出现对应的请求记录时间戳和 duration_ms 能对上。对不上就说明有 Worker 走了别的通道回去检查环境变量是不是被某个 shell 会话覆盖了。验证通过后再走原文的四阶段工作流。Research 阶段并行派生多个只读 WorkerSynthesis 阶段由协调器自己写规格——原文系统提示里明确要求协调器不能写「based on your findings」这种话必须自己理解研究结果、写出带文件路径和行号的实现规格Implementation 阶段按规格定向修改Verification 阶段独立验证。Fork 子代理在这一整套流程里依旧只改最后一个 directive 文本块守住前缀一致缓存收益不受影响。被 TaskStopTool 停掉的 Worker 也别急着丢它仍然可以用 SendMessageTool 带着原上下文续跑。原文里「终止」更像「暂停」Worker 的上下文不会被销毁这一点在多轮验证场景里特别省 Token。5. 本篇常见错排查配通过程中我整理了几个高频报错按出现频率排404 Not Found路径里出现重复的 /v1。最常见。原因是 Base URL 填成了 https://taotoken.net/api/v1 Claude Code 又自动拼了一次 /v1/messages。改成 https://taotoken.net/api 即可。带 UTM 参数的链接也会触发类似问题参数会被当成路径的一部分。401 UnauthorizedKey 无效。先确认 Key 复制完整没有首尾空格。再确认环境变量没有被其他 shell 会话覆盖——多 Worker 场景下如果某个 Worker 在独立 shell 里启动可能读不到你 export 的变量。建议写进配置文件而不是只靠 export。Worker 请求没出现在 TaoToken 用量页面。说明该 Worker 走了别的通道。检查顺序环境变量是否生效、配置文件是否被正确加载、有没有残留的旧 Base URL 配置。多 Agent 场景下每个 Worker 继承的是父进程环境父进程配对了子进程一般没问题但如果 Worker 用了 worktree 隔离要确认 worktree 里的配置也指向同一通道。Fork 子代理报「Fork is not available inside a forked worker」。这不是通道问题是原文的递归保护生效了。两层检查querySource 检查抗压缩fork-boilerplate 标签检查兜底。如果你确实需要在子代理里再 Fork说明任务拆分方式需要调整而不是去关掉保护。task-notification 里 usage 数据缺失。检查 Worker 是否正常进入终态。原文的 isTerminalTaskStatus 只认 completed、failed、killed 三种如果 Worker 卡在 running 状态通知不会带完整 usage。用 TaskStopTool 停掉再续跑通常能拿到数据。协调器不写规格直接转发研究结果。这是行为问题不是配置问题。原文系统提示强制要求协调器自己理解、自己写规格禁止「懒惰委托」。如果发现协调器在偷懒检查协调器模式的系统提示是否被正确加载CLAUDE_CODE_COORDINATOR_MODE 是否真的生效。6. 拿到 Key 之后这套编排就能跑在统一通道上回到最开始那个痛点长会话里多个 Worker 并行跑Token 成倍上涨却缺少统一看用量、统一换模型的通道。现在这条通道配好了——从 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 拿到 KeyBase URL 填 https://taotoken.net/api 配通之后原文那套四阶段工作流照跑Fork 子代理的前缀一致性、递归保护、task-notification 回传全都不受影响。如果你主要在做长期编码或 Agent 编排建议顺手看一下 Coding Plan 页面 https://taotoken.net/coding-plan 把多 Worker 场景的额度规划提前做掉避免跑到一半被额度卡住。接入过程中遇到通道层面的问题接入文档在 https://taotoken.net/doc API Keys 管理在 https://taotoken.net/console/api-keys 模型可用性在 https://taotoken.net/models 确认。最后留一个我实测下来觉得最省事的习惯给协调器和不同类型的 Worker 分别建 Key按用途命名。这样在用量页面一眼就能看出是研究 Worker 烧得多还是实现 Worker 烧得多换模型时也能按 Key 粒度切不用动整套编排逻辑。多 Agent 系统的成本控制往往就藏在这种粒度选择里。