层级模式:Manager → Worker 树状结构 层级模式Manager → Worker 树状结构概念速查层级模式Hierarchical Agent Pattern将多个 Agent 组织成树状结构。核心角色只有两个Manager Agent接收顶层任务拆解为子任务分配给 Worker汇总结果Worker Agent执行具体子任务可向下递归成为下一级 Manager每个 Manager 管一组 WorkerWorker 可以再拥有自己的 Worker形成递归树。常见的工程实现包括 AutoGen 的GroupChat与Orchestrator模式、CrewAI 的HierarchicalProcess、LangGraph 的StateGraph控制流、以及 Anthropic 提到的 Supervisor 模式。决策规则简单任务可并行 → 分给多个 Worker任务需要分工 → 按角色分配任务超出当前粒度 → Worker 升级为 Manager 递归分解。叶子节点总是执行 Agent内部节点总是协调 Agent。根 Manager 对用户负责。底层原理层级模式的核心机制是任务分解-分配-聚合的三段式循环。Manager 维护一个任务队列和一组 Worker 状态工作流如下PlanManager 将输入任务拆解为更小的子任务单元Assign根据 Worker 的能力标签或角色定义将子任务分配给合适的 WorkerExecuteWorker 执行任务如果子任务仍然复杂则递归进入下一层AggregateManager 收集所有 Worker 的输出做冲突消解和结果合并FeedbackManager 对 Worker 的输出做质量检查不合格则回退重做通信模式有两种变体。同步模式中 Manager 等待所有 Worker 完成后再聚合适合结果需要全局一致性的场景如代码审查合并。异步模式中 Worker 独立推进Manager 通过事件驱动收集部分结果适合流式处理或长尾任务。状态管理上Manager 需要维护一个DAG 依赖图标记哪些子任务可以并行、哪些必须串行。这是层级模式区别于简单扇出的关键——Worker 之间可能有数据依赖Manager 必须按拓扑序调度。Manager AgentWorker AWorker BWorker CWorker B-1Worker B-2Worker B-2-1架构设计原则原则一扇出系数有上限。一个 Manager 直接管理的 Worker 建议 3–7 个。超过这个范围Manager 的上下文窗口会被 Worker 状态占满丧失全局判断能力。超限时应增加中间层而不是扩大扇出。原则二Worker 无状态化。Worker 不应维护跨任务的状态。所有共享状态由 Manager 传递或依赖外部存储数据库、缓存。这使得 Worker 可被复用、替换、水平扩展也简化了重试和回滚。原则三结果聚合必须做冲突消解。当多个 Worker 返回矛盾结果时Manager 需要有明确的消解策略投票、优先级、置信度评分、或回退到更保守的结果。缺少消解策略的层级模式会在聚合层产生不可预测的输出。原则四递归深度不超过 3 层。层级模式的优势在于结构化分解但每深一层就引入一次 Manager 的推理开销和延迟。超过 3 层的树在实践中通信损耗超过收益应通过扁平化或事件总线重构。# Python 3.11fromdataclassesimportdataclass,fieldfromtypingimportAny,CallabledataclassclassAgentContext:role:strcapabilities:list[str]max_workers:int5classWorkerAgent:def__init__(self,context:AgentContext,name:str):self.ctxcontext self.namenameorcontext.roledefexecute(self,task:dict)-dict:return{status:ok,data:fexecuted by{self.name},error:None}classManagerAgent:def__init__(self,context:AgentContext,worker_factory:Callable):self.ctxcontext self.workers:list[WorkerAgent][]defassign(self,task:dict)-list[dict]:subtasksself._decompose(task)self.workers[WorkerAgent(self.ctx)for_insubtasks]results[]forworker,subinzip(self.workers,subtasks):results.append(worker.execute(sub))returnself._aggregate(results)def_decompose(self,task:dict)-list[dict]:returntask.get(subtasks,[task])def_aggregate(self,results:list[dict])-list[dict]:returnresults原则五Manager 与 Worker 通信协议固定。输入输出格式必须在层间保持一致否则每一层都需要做格式转换适配。统一用{status, data, error}包裹叶子层和非叶子层共享同一契约。原则六任务超时和降级。每个子任务必须带上 TTL。Worker 超时后 Manager 执行降级策略重试、跳过、或使用默认值。没有超时机制的层级模式会在一个慢 Worker 上卡死整个树。层级模式适合复杂任务的结构化分解也适合需要角色分工的多步骤工作流。代价是 Manager 成为通信瓶颈和单点故障实践中应配合持久化队列和 Manager 冗余来缓解。