01-ai-agents。多 Agent 协作真正切开的不是“能力”,而是“上下文”——父 Agent 负责规划和汇总,子 Agent 在全新上下文里吃掉局部大材料,最后只把最终结论带回,从而用更干净的桌面换取更稳定的判断。
description 给父模型选人,tools 给权限系统裁剪白名单,正文给子 Agent 自己做 system prompt。task。Claude Code 对多 Agent 的回答,不是把同一个模型硬拆成不同职能,而是把大任务拆成多个干净上下文。
文章最重要的反直觉点是:子 Agent 并不因为“角色名不同”就更强,它之所以值钱,是因为只拿到一段任务描述和有限材料,能在更小上下文里集中注意力。
父 Agent 和子 Agent 的核心分工不是“谁更聪明”,而是“谁负责规划,谁负责执行”。
父 Agent 有 task、只读工具和汇总责任;子 Agent 拥有 bash、write_file 之类副作用工具,但默认不能再派子 Agent。这样既防父线程绕过规划直接动环境,也防子线程无限递归。
Task 是一个很薄的委派接口,真正的复杂度不在“调用方式”,而在“契约设计”。
prompt 是唯一输入,子 Agent 定义文件则决定角色边界和权限。换句话说,多 Agent 的稳定性主要取决于你是否把任务说明、工具白名单和 system prompt 写成了清晰接口。
“只交最后一条消息”是整个设计里最关键的压缩动作。
子 Agent 的中间轨迹、工具详情和试错过程不自动回流父上下文,这个设计直接决定了父线程还能继续保持“桌面干净”,否则多 Agent 只会把多个长轨迹重新塞回同一窗口。
权限与预算的默认策略都是收缩,而不是扩张。
子 Agent 的工具权限来源于交集裁剪,预算是从父线程继承后再向下分配,默认不能无限生长。这说明多 Agent 体系要先设计“怎么收口”,再设计“怎么变强”。
并行并不是框架层写死的 scheduler,而是模型利用 task 原语做出来的运行时选择。
Claude Code 没有专门写一层显式并发调度器,哪些任务该并行、哪些该串行,仍然由模型根据上下文判断;框架真正提供的是安全护栏、权限边界和返回格式。