1. 为什么你的 Claude Code 任务总在跑到一半就“熄火”如果你用 Claude Code 做过稍微大一点的活比如跨十几个文件的重构、批量处理几百条数据、或者对一个模块做多轮排查大概率遇到过这三种情况任务做到一半突然说“已完成”结果一核对发现漏了一大半让它自己检查自己的输出它永远说“没问题”可你一眼就看出有 bug任务跑到后面它开始忘记你最开始定的约束越做越偏。这不是模型不行而是单上下文窗口执行模式的天然短板。所有规划、执行、校验都挤在同一个上下文里任务一长上下文被压缩边缘约束就丢了AI 自己产出的结果自己复核天然带自我偏好多步骤任务里它还会“偷懒”擅自判定完成。Claude Code 的动态工作流就是冲着这三个问题来的。它的核心思路很直接把一个大任务拆开给每个子任务分配独立的子智能体和独立上下文窗口各干各的、互不干扰最后再汇总或对抗校验。配合settings.json把骨架配置定好工作流就能稳定复现而不是每次靠运气。这篇从settings.json配置切入串起多智能体协作和任务编排给你可复制的配置片段和验证动作帮你把 AI 任务失效的问题定位清楚。2. 前置准备TaoToken 接入与 settings.json 骨架2.1 为什么先配 settings.jsonClaude Code 的动态工作流依赖几个关键能力子智能体调度、独立工作树、断点续跑、模型路由。这些能力有一部分是通过settings.json里的配置项控制的。如果你不配默认行为可能不符合你的项目需求比如子智能体共用上下文、模型全走同一个、Token 无上限。我试过在没配settings.json的情况下直接跑多智能体任务结果子智能体之间上下文串了A 的中间结果污染了 B 的判断最后汇总出来的东西逻辑打架。所以骨架配置是第一步。2.2 获取 API Key 并接入Claude Code 需要模型服务支撑这里用 TaoToken 做接入。先去控制台创建 API Key控制台入口https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentconsoleAPI Key 管理https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keys创建好 Key 之后在项目根目录或用户目录下配置 Claude Code 的模型接入。API 基础地址用https://taotoken.net/api不要加 UTM 参数。# 设置环境变量写入 ~/.bashrc 或 ~/.zshrc 持久化 export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEY你的_API_Key如果你用的是 Claude Code 的配置文件方式可以在~/.claude/settings.json里写{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: 你的_API_Key } }配完之后跑一个最小验证确认接入通了claude -p 回复 ok返回ok就说明模型服务通了。这一步没过后面工作流全是白搭。2.3 settings.json 骨架配置下面是一份可以直接复制的settings.json骨架放在项目根目录的.claude/settings.json或用户目录的~/.claude/settings.json{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: 你的_API_Key }, permissions: { allow: [ Read, Write, Edit, Bash(git *), Bash(npm *), Bash(node *) ], deny: [ Bash(rm -rf *), Bash(curl * | sh) ] }, workflow: { maxConcurrentAgents: 4, tokenBudgetPerTask: 50000, isolateWorktree: true, enableCheckpoint: true, modelRouting: { simple: claude-haiku, standard: claude-sonnet, complex: claude-opus } } }逐项说明一下关键参数参数作用建议值maxConcurrentAgents同时运行的子智能体上限4本机资源有限别开太高tokenBudgetPerTask单任务 Token 上限50000防止跑飞isolateWorktree子智能体独立工作树true避免上下文污染enableCheckpoint断点续跑true中断后可恢复modelRouting按复杂度路由模型简单走轻量复杂走高阶permissions里的deny是安全底线把危险命令挡掉。allow按你项目实际需要加别一股脑全放开。3. 可复制的动态工作流配置与多智能体编排3.1 工作流文件的基本结构动态工作流依托 JavaScript 文件运行放在~/.claude/workflows/目录下。一个最小可用的工作流文件长这样// ~/.claude/workflows/refactor-check.js export default { name: refactor-check, description: 模块重构 对抗校验, async run(ctx) { // 1. 分类识别任务类型 const category await ctx.agent({ model: claude-haiku, prompt: 分析以下任务属于哪种类型${ctx.input} }); // 2. 分发拆成独立子任务并行执行 const subtasks await ctx.agent({ model: claude-sonnet, prompt: 将任务拆解为独立子任务列表${ctx.input} }); const results await Promise.all( subtasks.items.map(item ctx.agent({ model: claude-sonnet, prompt: item, isolate: true // 独立工作树 }) ) ); // 3. 对抗校验独立智能体核查每个结果 const verified await Promise.all( results.map(r ctx.agent({ model: claude-opus, prompt: 核查以下结果是否符合要求指出问题${r}, isolate: true }) ) ); // 4. 汇总 return ctx.agent({ model: claude-opus, prompt: 整合以下校验后的结果输出最终答案${JSON.stringify(verified)} }); } };这个骨架覆盖了分类、分发、对抗校验、汇总四个环节对应六大模式里的“分类并执行”和“对抗性验证”。3.2 六大核心模式的配置要点分类并执行先跑一个轻量模型做分类再路由到对应执行智能体。关键是分类智能体和执行智能体用不同模型省 Token。分发并汇总Promise.all并行跑子任务每个isolate: true。汇总智能体只接收结构化结果不接收中间过程。对抗性验证产出智能体和验证智能体必须独立上下文验证智能体的 prompt 里要明确“你的任务是挑错不是确认”。生成并筛选批量生成用同一 prompt 跑多次筛选智能体按标准去重评级。竞赛对比同一任务让多个智能体用不同思路跑评判智能体两两对比打分。循环直到完成用while循环加停止条件比如“无新问题”或“达到 Token 上限”。3.3 触发方式两种触发方式自然语言直接描述任务Claude 会自动判断是否启用工作流或者输入ultracode强制唤醒。# 自然语言触发 claude -p 用动态工作流重构 src/utils 目录拆成独立子任务并行处理最后对抗校验 # 强制触发 claude -p ultracode 批量核查 docs 目录下所有文档的事实准确性4. 验证请求与成功结果4.1 最小验证单任务对抗校验先跑一个最简单的验证确认工作流能正常调度子智能体claude -p 对以下代码做对抗性校验用一个独立智能体挑错function add(a,b){return a-b}预期结果工作流会启动一个验证智能体指出return a-b应该是return ab。如果它只是说“代码没问题”说明对抗校验没生效检查isolateWorktree是否为 true。4.2 多智能体验证批量任务分发claude -p ultracode 将 src 目录下所有 .js 文件拆成独立子任务每个子任务检查是否有 console.log 残留并行执行最后汇总成功结果应该包含每个文件的检查结果、汇总列表、以及被标记的文件清单。如果只返回了部分文件说明maxConcurrentAgents设太低或者子任务没隔离。4.3 断点续跑验证跑一个长任务中途 CtrlC 中断再恢复claude -p ultracode 逐个检查 src 下所有文件的类型注解完整性 # 中途 CtrlC # 再次运行 claude -p 继续上次的工作流如果配置了enableCheckpoint: true恢复后应该从中断处继续而不是从头开始。4.4 模型路由验证claude -p ultracode 解释一下什么是闭包然后重构 src/core 目录观察日志解释闭包这种简单任务应该走轻量模型重构走高阶模型。如果全走同一个模型检查modelRouting配置。5. 本篇常见错误排查5.1 子智能体上下文串了现象A 子任务的中间结果出现在 B 子任务的输出里。原因isolateWorktree没开或者工作流文件里子智能体调用没加isolate: true。解决在settings.json里设isolateWorktree: true并在每个ctx.agent()调用里显式加isolate: true。5.2 任务跑一半停了现象工作流执行到一半没有输出也没有报错。原因tokenBudgetPerTask设太低或者maxConcurrentAgents超过本机承载。解决先把tokenBudgetPerTask调到 100000maxConcurrentAgents降到 2跑通后再逐步调高。5.3 对抗校验没效果现象验证智能体总是说“没问题”。原因验证智能体和产出智能体共用了上下文或者 prompt 里没明确“挑错”指令。解决确保验证智能体isolate: trueprompt 改成“你的唯一任务是找出以下结果中的错误和遗漏不要确认正确性”。5.4 模型路由不生效现象所有任务都走同一个模型。原因modelRouting的 key 和实际调用时传的 model 名不匹配。解决检查工作流文件里ctx.agent({ model: claude-haiku })是否和settings.json里的simple对应。模型名要写全别用简写。5.5 断点续跑失效现象中断后恢复任务从头开始。原因enableCheckpoint没开或者工作流文件没有持久化状态。解决settings.json里设enableCheckpoint: true工作流文件里用ctx.checkpoint()保存关键状态。5.6 API 接入报 401现象claude -p返回 401。原因API Key 没配或配错。解决检查ANTHROPIC_API_KEY环境变量或者settings.json里的env字段。Key 去 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keys 重新生成一个。6. 按场景选对入口把工作流跑稳动态工作流不是万能药。单步骤、低风险、无需校验的任务直接用默认模式跑别硬上工作流否则 Token 烧得快、时间还更长。判断标准很简单多步骤、大批量、高风险、需要校验的才启用。如果你在排查接入问题或者配置报错先去 API Keys 页面确认 Key 状态再对照接入文档检查settings.json字段https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keys 和 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc如果你想先验证模型路由和对抗校验的效果用模型对话快速试几轮https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodel-chat如果你打算把动态工作流长期用在编码和 Agent 任务上Coding Plan 更适合持续跑https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding-plan最后留一个我踩过的坑工作流文件里的ctx.agent()调用模型名一定要和settings.json里的路由配置对齐否则路由不生效全走默认模型Token 消耗直接翻倍。配完之后先用一个小任务验证路由日志确认简单任务走了轻量模型再上大任务。
