先说结论Claude Code 的单代理模式已经够强了但真正让它从“高级 autocomplete”进化成“团队”的是多代理协作与任务委托Agent delegation。这篇文章不聊概念直接讲我在实际项目中怎么拆任务、怎么把子代理派出去干活、怎么让它们把结果交回来以及这一路踩过的坑。1. 多代理协作整体设计与核心思路1.1 为什么不能靠“一个 Agent 干到底”很多人第一次接触 Claude Code 时习惯把一个大需求直接丢给主代理Main Agent去执行。比如“把现有 Python 项目的代码全部重构一遍顺便补上单元测试再生成一份 CHANGELOG”。听起来很爽但实际跑起来你会发现三个问题第一上下文窗口是有限的。Claude Code 的主代理每轮都需要把相关代码片段、文件结构、历史对话放到上下文里项目一大很快就把窗口撑爆。要么它开始“忘记”前面的需求要么回答质量明显下降。第二任务之间的状态会互相污染。重构和写测试是两件互相依赖但不应该共享中间状态的事。如果让同一个代理又改代码又写测试它很容易把临时变量、未完成的函数定义当成最终结果测试也跟着写错。第三单点故障明显。任何一个环节出错主代理的整个执行链路就断掉。没有隔离机制你很难定位问题到底是“需求理解错了”还是“某个文件改崩了”。多代理协作的核心思路其实就是把“一个人的工作”拆成“一个项目经理 多个执行者”的团队模式。项目经理主代理负责理解需求、拆分任务、分配资源、汇总结果执行者子代理只负责干好自己那一摊活。每个子代理有独立的上下文窗口互不干扰出错就地重试。1.2 核心价值隔离、并行与可追溯我做了几个项目之后觉得多代理模式真正解决的是三件事上下文隔离。子代理只加载自己需要的文件和指令比如“你只负责src/parser.py这个文件的重构不要碰其他文件”。它的上下文窗口天然比主代理清晰得多执行效率和质量都高。任务并行。某些场景下 Claude Code 支持同时派出多个子代理处理互不依赖的任务。比如一个去读 API 文档一个去整理数据库 schema一个去统计代码里 TODO。它们之间没有先后顺序就能省下一大截时间。责任可追溯。每个子代理的输出都有独立的记录和日志出了问题直接找到对应的子代理复盘而不是在主代理那一长串历史里翻来翻去。这对团队协作、代码审查和问题排查帮助特别大。有了这个思路打底下面来看实际怎么配置和使用。2. 环境准备与基础配置2.1 Claude Code 安装与命令行入口Claude Code 本质上是一个命令行工具官方提供了 npm 安装包。安装前确认 Node.js 版本不低于 18然后执行npm install -g anthropic-ai/claude-code安装完成后在终端输入claude会进入交互式命令行界面。首次启动需要完成账号认证这个按提示操作即可。我建议同时安装 Claude Code 的 VS Code 扩展在编辑器里开一个终端窗口直接敲claude和普通命令行体验完全一致但能顺便预览文件 diff。验证安装是否成功以及当前版本信息claude --version如果看到版本号输出说明安装没问题。日常我习惯用claude -p 你的指令这种非交互模式来跑一次性任务因为它非常适合脚本化调用和自动化流程多代理场景里给子代理派活时经常配合这种方式。注意主代理和子代理共用同一份配置和认证信息不需要为子代理单独安装额外的东西。2.2 关键配置项权限、模型与输出偏好Claude Code 的配置通过settings.json完成所有权限相关的配置都可以通过命令行交互或直接编辑配置文件实现。这里分享几个我一直在用的关键配置{ permissions: { allow: [ Read, Glob, Edit, Bash, WebFetch ], deny: [] }, model: claude-sonnet-4-20250514, enableAllProjectMcpServers: true }permissions.allow这块是核心。默认情况下 Claude Code 对文件读写、命令执行都有权限管控当你派一个子代理去改代码时如果没给它Edit权限它就只能读不能写任务直接卡死。我一般把Read、Edit、Glob文件搜索、Bash执行命令这四个基础权限放开然后视场景再放WebFetch抓取网页。model参数可以选择主代理使用的模型版本。我建议日常开发选标准模型遇到复杂推理任务时再临时切换。另外有个重要的环境变量MAX_THINKING_TOKENS它控制思考预算多代理协同解决复杂问题时建议调大给子代理更多推理空间。2.3 验证子代理可用的“体检清单”配置完之后可以先跑一个最简单的委托测试确认整个链路是通的。我会这样做claude -p 使用Task工具创建一个子代理要求它读取当前目录下的README.md并输出前三行内容然后返回给我如果这条命令能正常返回子代理的输出说明配置没问题。如果卡住或报错优先检查两件事第一permissions里是否给了子代理足够的读权限第二当前工作目录是不是项目根目录子代理的工作目录继承自主代理目录不对会直接找不到文件。3. 核心机制主代理与子代理的委托链路3.1 Task 工具才是多代理的“发动机”Claude Code 的多代理功能底层靠的是一个叫Task任务的工具。它允许主代理在对话过程中动态创建一个子代理给子代理分配独立的上下文窗口和专属指令。打个比方主代理就像一个包工头Task 工具就是他手里的对讲机——“喂小王你去把 3 号楼的墙刷了漆和刷子都给你准备好了刷完拍张照片发给我”。小王子代理只负责刷墙不需要知道 3 号楼旁边还有几栋楼要盖也不用关心楼里的水电怎么走。在主代理的工作流中你不需要手动写任何 JSON 或代码去调用 Task。你只需要在对话里告诉 Claude Code“这个任务你拆一下让子代理去处理”它就会自主判断什么时候该派子代理、派几个、怎么分配任务。这是 Claude Code 和很多强行做“多智能体编排”的框架最大的区别——它不需要你是工程师你只需要会“派活”剩下的编排逻辑工具自动完成。3.2 怎样写一份子代理能听懂的委托指令既然主代理负责理解你的自然语言那么子代理的执行质量就完全取决于主代理发出的任务描述够不够清晰。我把 Claude Code 里常见的委托描述梳理了几类按复杂度和使用频率排列任务粒度描述示例适用场景原子任务“读取文件src/main.py中parse_config函数提取其函数签名”信息提取、单点查询文件级任务“在src/目录下新建utils.py实现generate_report函数接收 DataFrame 并输出 Markdown 格式报告”新增模块跨文件重构任务“把src/下所有import requests改为import httpx仅保留必要的兼容层”全局替换、技术升级完整功能开发“实现用户注册登录接口包含 JWT 签发、密码哈希和错误处理测试文件放在tests/下”独立功能交付大多数情况下建议把任务拆到“文件级”和“跨文件重构”这个粒径太细会增加主代理的调度开销太粗又会让子代理上下文负担过重。3.3 通过 CLAUDE.md 给全局设定“工作章程”CLAUDE.md是 Claude Code 的项目级指令文件它会被所有代理包括主代理和子代理在启动时加载。这里非常适合放“公司规章制度”# 工作准则 - 修改任何代码前先运行 pytest tests/ 确认现有测试通过 - 所有新函数必须包含 docstring 和基本类型注解 - 私密信息API Key、Token严禁硬编码统一从环境变量读取 - 代码风格遵循 PEP8字符串统一使用双引号把这类规则写进CLAUDE.md后无论主代理还是子代理在创建子代理并派活时都会继承这套规则。等于每一个新员工入职时你直接把《员工手册》甩给他不用每次重复叮嘱。我强烈建议每个人都维护一份CLAUDE.md尤其是多代理协作场景下这它能避免不少“子代理干活风格和团队不一致”的问题。4. 实操过程把任务成功委托出去的完整演练4.1 场景设定一个稍显复杂的开发任务这里我用一个实际做过的任务做示范任务描述是“为这个 Python 项目新增一个数据清洗模块data_cleaner.py它需要支持三件事去掉 DataFrame 中的重复行、填充缺失值数值列用均值文本列用众数、对日期列做统一格式化。同时请我补充对应的单元测试文件test_data_cleaner.py测试覆盖率达到 90% 以上并更新README.md的使用说明。”如果单靠主代理一股脑做完它能做但中间要频繁切换上下文写逻辑、写测试、改文档还容易遗漏细节。所以我在指令里引导 Claude Code 按“主代理拆解 → 派子代理并行处理”的方式来做。4.2 主代理如何自动派发子代理我把任务原文粘给主代理并额外加了一句“请自行拆分为多个子任务交给子代理并行执行”。接下来主代理Claude Code 自动会做得非常漂亮第一步它调用 Task 工具创建了三个子代理分别是Writer数据清洗模块实现者指令类似于“创建data_cleaner.py实现三个函数remove_duplicates(df)、fill_missing_values(df)、format_date_column(df, column)。只需关注这个文件的实现不需要写测试。”Tester测试工程师指令类似于“为data_cleaner.py编写单元测试要覆盖重复行、缺失值和日期格式化的边界情况保证覆盖率 90% 以上。先读取源文件再写test_data_cleaner.py。”Documenter文档维护者指令类似于“更新README.md新增章节介绍data_cleaner的安装方式、三个函数的用法和示例代码。不要修改代码文件。”第二步三个子代理并行开始工作它们彼此的上下文互相独立。Writer 只关心实现逻辑Tester 先读 Writer 产出的代码再写测试Documenter 根据需求描述撰写文档。第三步主代理进行结果审查和合并。它要求 Tester 通过pytest跑一遍全部测试用例然后检查 Writer 的代码风格是否符合CLAUDE.md里的约定最后汇总三份结果输出一个总结。4.3 如何精确控制子代理行为权限、工具与模型参数当你不满足于让主代理“自动判断”时也可以在指令里直接给子代理圈定边界。以下命令格式可帮助你精确控制claude -p 创建子代理让它只读取 src/data_loader.py 并总结其中的数据加载逻辑。实际上你还能在对话中要求“给子代理的权限限制为只读”“不要执行代码”等。在复杂项目中我常用这些约束按目录隔离“子代理只允许修改src/data_processing/目录下的文件其他文件一律只读。”按工具隔离“子代理只能使用 Read 和 Glob 工具禁止使用 Bash 和 Write它只负责分析不负责修改”。按上下文隔离“子代理专注在这 3 个文件上不要参考整个代码库”。这些约束能让子代理更加专注也更安全防止某个子代理因为上下文膨胀或权限过大搞出“意外破坏”。4.4 尝试手动控制委托链路Claude Code 允许你在 CLI 中直接发指令主代理虽然能自动派活但撸起袖子手动控制链路往往效果更佳。比如很多项目里有这样一个习惯做法先让主代理生成任务描述再自己开一个claude会话把任务描述粘贴给一个全新的子代理去执行。claude -p 读取当前目录下的 src/auth.py重构其中 handle_login 函数目标是去掉重复代码并将重构后的代码直接输出到 stdout这就是一个很经典的单子代理委派你不需要启动一个完整的主代理对话直接一条指令让 Claude Code 作为子代理去完成一个边界清晰的任务。这种方式特别适合在 CI/CD 脚本里调用也适合在编辑器里快速选中一段代码丢过去处理。4.5 解析主代理汇总的步骤子代理干完活之后主代理通常不会直接把它生成的原始文件扔给你就完事了。好的做法是让它做三件收尾的事验证。运行测试、检查语法、确认没有破坏已有功能。这一步我会明确要求主代理执行一遍 “Run tests and report the results”而不是让它“认为”没问题。差分展示。让主代理按文件列出改动摘要比如“新增了src/data_cleaner.py包含 3 个函数修改了README.md新增 2 个小节”。这样代码审查时一眼就能看清影响面。风险提示。让主代理主动指出没覆盖到的地方比如“测试没有覆盖到format_date_column传入非法字符串的异常路径建议补充”。这个阶段是主代理的校验闭环建议你在实际项目中一定留给主代理做而不要跳过去直接看代码。因为它能把“子代理交上来的活”拉通到“需求本身”做一次匹配防止子代理各自为政产出互相矛盾的东西。5. 进阶技巧上下文管理、嵌套委托与本地技能扩展5.1 不要让子代理变成“脱离指挥的野马”很多人在多代理协作中会遇到一个情况子代理接手任务后主代理就“甩手”不管了。结果发现子代理干到一半要做一个重要决策比如采用哪种异常处理方式它会凭自己的理解做而它理解的和项目整体架构往往有偏差。我的经验是——每个子代理的任务窗口和范围必须严格锁死。在委派任务时把“遇到决定性问题时列出选项并暂停等待主代理裁决”写进指令。虽然这会牺牲一点一次性跑完的速度但换来的是更高的正确率。尤其是涉及架构选型、公共接口设计这类任务子代理没有全局视野强行做主会留下不小的隐患。5.2 上下文窗口优化的三个实用策略上面提到过子代理的上下文相对干净但如果任务本身就大到必须读很多文件那么单个子代理也会很快撞上上下文限制。我有三个策略来解决策略一用“索引型”导读。主代理先把项目结构和关键文件列出来通过 Glob 和 Read 的部分摘取做成“导读目录”再让子代理去读具体文件。这样子代理不需要遍历整个代码库就知道该往哪个方向行动。策略二让子代理先输出“执行计划”再动手。收到任务后要求子代理先用 2~3 行描述它准备怎么执行主代理确认后再实际操作。这一步能提前拦住不少理解偏差相当于“先对齐方案再开工”。策略三大任务拆成“链式委托”。如果一个子代理的任务还是太大就让它再创建下一代子代理去处理更细的子任务形成链式结构。Claude Code 支持多级嵌套委托子代理还可以再派子代理每一级的上下文独立任务粒度层层细化这是多代理协作里最接近“组织管理”的行为模式。5.3 通过自定义 Skills 让每个代理都拥有“装备库”Skills技能是 Claude Code 近期的重点更新方向。你可以把它理解成给代理预装的一组“能力插件”代理会在合适的时机调用来增强自己的作业能力。最常见的做法是在项目目录下建.claude/skills文件夹里面放结构化的 Skill 描述。比如我有一个专门用来做 Python 项目结构分析的 Skill--- name: analyze-python-structure description: Given a Python project root directory, identify all modules, functions, and public APIs, then output a structured map. --- Read all .py files under the specified root directory. Extract function definitions, class definitions, module-level variables. Output a structured markdown report with module names and their public interfaces.当子代理收到“分析这个项目的导出接口”这类任务时它就会主动调用analyze-python-structure这个 Skill输出格式统一比让代理自己发挥稳定得多。这就好比同一个外包团队你对每个子代理说“干活前先看公司的标准流程文档”它做出来的结果自然就更规范。5.4 权限最小化原则子代理不是“万能钥匙”多代理协作中安全边界特别容易被忽略。子代理的工作越独立被可能存在的恶意数据或意外代码夹带的风险就越大。给子代理的权限遵循最小够用原则需要读取文件的任务只给Read、Glob。需要修改文件的任务给Edit和必要的Bash比如运行测试。尽量不要让子代理直接修改项目根目录的配置文件除非这次任务就是干这个。对“清理性”批量操作比如全局搜索替换先把影响范围明确到具体目录和具体文件类型。另外如果你在公司项目中使用 Claude Code记得检查claude是否会在你的团队协作工具中自动生成总结信息避免泄露内部代码细节。6. 常见问题与排查技巧实录多代理协作不是万能银弹实际使用中会遇到不少具体问题。我按高频出现的场景整理了一份排查速查表现象可能原因排查与解决方案子代理迟迟不返回结果子代理卡在一个超长任务里或权限不足无法继续检查permissions配置如果是超长任务试着拆小并明确“分阶段汇报”子代理生成的代码和项目风格不一致子代理没有完整读取CLAUDE.md或项目规范文档在CLAUDE.md明确“所有代理每次执行前必须先加载项目导则”并让主代理在派活时附上关键规范摘要主代理没有自动拆分子任务而是一个人全干完了当前模型或配置没有开启/触发多代理模式或指令不够明确主动在指令里加“请用 Task 工具将任务拆分为多个子代理执行并行处理互相独立的子任务”子代理修改了本不该动的文件任务描述里的边界不够清晰委派时按目录和文件锁死改动范围“只修改 src/xx 目录其他文件只读”多个子代理之间产出了冲突的接口定义缺少统一的接口契约文件让主代理先定义一个精简的接口约定函数名、参数类型、返回值再把约定随任务一并下发给所有子代理子代理在等待用户输入指令里存在二义性子代理无法自行裁决给子代理补上“如果遇到不确定项优先选择 A 方案并在最终报告里说明”这类兜底决策指令6.1 疑难杂症一子代理跑飞了怎么“掐断”它如果你发现子代理执行的方向不对想中断它不要直接关闭整个终端。因为关闭终端会连同主代理一起杀掉前面拆解好的任务链路就全没了。正确做法是回到主代理对话里输入/stop中断当前子任务再重新派发修正后的指令。这个操作对单独的claude -p任务同样有效可以直接按 CtrlC 中断。6.2 疑难杂症二如何复盘子代理的执行日志在复杂项目里子代理跑了什么命令、读了多少文件这些审计线索很关键。Claude Code 会在本地留存对话记录和操作日志。你可以用claude-resume重新打开某次会话或者去 Claude Code 的日志目录里翻当时的输出记录。每次子代理拿到的原始指令和返回内容都能从会话记录里找出来——这也是多代理模式相比单代理模式“可追溯”这个优势的最直接体现。6.3 疑难杂症三预算控制与 token 消耗子代理每次创建都会重新计算一部分 token多代理协作的 token 消耗通常比单代理直接干高出一截这是正常的因为上下文隔离的总开销天然更大。我的经验是原子级小任务没必要动用子代理直接主代理处理只有跨文件、需要独立验证或占用大量上下文的场景才值得派子代理。同时在指令里让子代理“避免输出无关文件全文只汇报摘要”能省下不少 token。7. 多代理协作在真实项目中的扩展方向当你能熟练使用主代理派活、子代理干活、并做好上下文管理和权限边界之后这个模式的应用范围会拓宽不少。一个很典型的场景是代码审查自动化。让一个子代理只负责检查安全漏洞另一个只负责检查代码风格第三个只负责检查测试覆盖度。它们从不同角度读同一份代码互不干扰最后合并意见比让单个代理“又要写代码又要审代码”客观得多。另一个场景是技术调研与文档生成。主代理接到“研究某库并输出接入方案”的任务后可以派一个子代理去抓 API 文档一个去读现有项目代码里类似功能的实现一个去写接入 Demo。三者并行速度非常可观。再比如做存量大型项目的技术债清理多代理也很适合。让子代理按目录分片建立“待优化清单”主代理统一汇总排序优先级比单代理遍历整个代码库再整理效率和准确率都会好很多。我自己用下来的最大感受是多代理模式不是“多个工具”而是一套组织方法论。它把你在团队协作里积累的管理经验和专业判断力原样复制到了编程代理的工作流里。好的代理协作不是让 AI 把任务一口气干完而是让它学会“怎么安排别人干活、怎么汇总结果、怎么做质量把关”。这种思维的转变可能比学会几行配置命令重要得多。最后再分享一个小心得刚开始尝试的时候不要追求“一次派五个子代理”的噱头效果。先从“主代理 两个子代理”的小团队开始跑顺一个完整任务链路感受一下上下文隔离带来的质量提升再逐步加大任务粒度和并行数量。多代理协作和其他工程能力一样先把地基打牢再谈规模。
