Files
obsidian-notes/InBox/Multi-Agent与Multi-Task编排架构.md
2026-06-09 10:48:33 +08:00

45 KiB
Raw Permalink Blame History

Multi-Agent与Multi-Task编排架构

来源:知乎专栏 抓取时间2026-06-03 22:39


Multi-Agent 与 Multi-Task 编排架构

定位Staff/Architect 面试中「多智能体协作」与「多任务并行调度」的 专题深潜。区分 Multi-Agent多个"谁")与 Multi-Task多个"什么"),覆盖拓扑模式、通信协议、任务 DAG、状态共享、成本建模与生产反模式。 不重复:框架选型见 0412 能力域见 13七视图与成熟度 Stage 见 27Buy 领域落地见 18。 DevEx 对照Cursor Subagent / Fork / Resume 与本篇 Coordinator/Supervisor 的映射 → 06。 工业级索引:编排/Token/多任务场景 → 96 §2.6§2.7 · 深读索引MA_* / MT_* / CTX_*)。 风格:沿 L1 概念 → L2 原理 → L3 生产 → L4 Staff 答辩 四层递进;每层有 ⚠ 难点 / 🔥 高频 / 💀 陷阱 标注。

  1. 本篇注意点与核心难点速查

面试前 3 分钟过一遍此表,定位薄弱项。

难点 / 注意点 为什么难 对应章节 🔥频率

1 Multi-Agent vs Multi-Task 概念混淆 面试官常故意混用,需 30s 内澄清 §1 ★★★★★ 2 拓扑选型说不出 trade-off 只知道 Supervisor不知 Hierarchical/Peer/Swarm 差异 §2 ★★★★ 3 Coordinator token 爆炸 N 个 Worker × R 轮 → context 超窗口 → 幻觉 §5, §6 ★★★★★ 4 Fan-out 写操作一致性 并行写 → 重复退款/发货;需 DAG + 幂等 + Saga §3, §7 ★★★★★ 5 何时上 Multi-Agent 的准入判断 很多人跳 Stage 1 直上多 Agent → 成本翻倍、completion 下降 §2.4, §9 ★★★★ 6 A2A vs MCP 分不清 两者都是协议,但层次和解决问题不同 §4 ★★★ 7 跨 Agent 可观测 trace 断裂 每个 Agent 独立 trace → 无法端到端归因 §8 ★★★★ 8 Multi-Agent Memory/Context 共享边界 过度共享 → token 爆炸;过度隔离 → 信息断层 §5 ★★★★ 9 动态 Agent 编排Swarm/OpenAI Agents SDK 新范式 vs 传统 Supervisor何时用 §2.5 ★★★ 10 Multi-Agent 测试与 Eval 单 Agent eval 不够,需协调质量+端到端+收敛性 §9 ★★★★

  1. 概念辨析Multi-Agent vs Multi-Task 1.1 定义对比 🔥 维度 Multi-Agent多智能体 Multi-Task多任务 定义 多个具备独立 Prompt/工具/角色 的 Agent 协作完成目标 多个子任务被分解、调度、并行或依赖执行 关注点 角色设计、通信协议、状态共享、冲突解决 任务分解、依赖图(DAG)、调度策略、结果聚合 独立存在 多 Agent 处理同一任务(辩论式验证) 单 Agent Fan-out 多个 tool calls 交集 多 Agent 各领一个 Task → Multi-Agent Multi-Task Staff 考点 拓扑选型、Coordinator 设计、A2A 协议 DAG 调度、Fan-out/Fan-in、幂等聚合 1.2 四象限模型 ⚠ 单任务 多任务 ┌───────────────┬───────────────┐ 单 Agent │ 标准 Agent │ Fan-out │ │ ReAct 循环 │ 并行 tool │ ├───────────────┼───────────────┤ 多 Agent │ 辩论验证 │ 协作编排 │ │ 红蓝对抗 │ (生产主流) │ └───────────────┴───────────────┘

左上:单 Agent 单任务 → 最简单Stage 1 起点 右上:单 Agent 多任务 → LangGraph Send API / OpenAI parallel tool calls 左下:多 Agent 单任务 → 用于验证、质量提升(如 Generator + Verifier 右下:多 Agent 多任务 → 生产级系统,本篇重点 1.3 💀 常见混淆 错误说法 纠正 “Multi-Agent 就是 Multi-Task” 不对Multi-Agent 是角色维度Multi-Task 是任务维度 “单 Agent 不能做 Multi-Task” 不对,单 Agent 可以 Fan-out 并行调用多个 tool “Multi-Agent 一定更好” 不对Coordinator 开销可能让成本翻倍但质量不升 “Pipeline 不是 Multi-Agent” Pipeline 也是 Multi-Agent 的一种拓扑

一句话Multi-Agent 解决"谁来做"Multi-Task 解决"做什么和怎么排"。生产系统两者通常同时出现。

  1. Multi-Agent 拓扑模式L2 原理) 2.1 六种核心拓扑 2.2 拓扑选型矩阵 🔥 拓扑 适用场景 优势 劣势 典型框架 Supervisor 明确角色分工、可枚举子任务 简单、可控、易审计 单点瓶颈、Supervisor token 开销 LangGraph supervisor node Hierarchical 大规模 Agent 团队、跨域协作 分层管理、局部自治 层间延迟、Manager prompt 复杂 AutoGen GroupChat + nested Peer-to-Peer 辩论/验证、创意头脑风暴 无单点、多视角 难收敛、token 爆炸 CrewAI process off Pipeline 线性流水线(提取→转换→校验) 最低协调开销 无并行、上游阻塞 LangGraph 线性 StateGraph Mixture/Dynamic 请求类型差异大、需动态路由 灵活、按需分配 路由逻辑本身需维护 LangGraph conditional_edges Swarm/Handoff 对话式客服、逐步移交 上下文自然传递、按需升级 回退困难、handoff 条件需精确 OpenAI Swarm / Agents SDK 2.3 Staff 级架构决策树 2.4 准入门槛与 Stage 对齐 ⚠ Stage 拓扑 准入门槛 来源 Stage 1 单 Agent 有 checkpoint + trace 27 §8.1 Stage 2 Supervisor / Pipeline 单 Agent eval ≥ 80% 本篇 §9 Stage 3 Hierarchical / Mixture + Workflow 写操作全 HITL 或 Saga 13 §19 Stage 4 Agent Mesh / Swarm 联邦 AI Gateway + 统一 eval 24

💀 反模式:跳 Stage 1 直上 Multi-Agent → 成本翻倍、completion 下。先 Single Agent 优化到极致再加复杂度。

2.5 Swarm / Handoff 模式详解(新范式) 🔥

OpenAI Agents SDK 和 Swarm 框架引入的 handoff 范式与传统 Supervisor 有本质区别:

维度 Supervisor Swarm/Handoff 控制流 中心化Supervisor 分发 去中心化Agent 间直接移交 上下文传递 通过 Coordinator state 通过 handoff 携带 conversation history 适用 结构化任务拆分 对话式、意图逐步明确 回退 Coordinator 重新分配 需显式 handoff 回源 Agent 典型场景 退款处理分角色 客服从通用→专业→人工层层升级

OpenAI Agents SDK handoff 示例概念

triage_agent = Agent( name="Triage", instructions="判断用户意图,移交给专业 Agent", handoffs=[order_agent, refund_agent, faq_agent] ) refund_agent = Agent( name="Refund", instructions="处理退款相关问题", tools=[check_order, calculate_refund], handoffs=[human_agent] # 复杂case升级人工 )

⚠ 难点Handoff 条件不够精确 → Agent 乒乓跳转A→B→A→B…解法handoff 带 reason + max_handoff_count。

  1. Multi-Task 编排模式L2 原理) 3.1 任务分解策略 策略 描述 适用 风险 LLM Plan LLM 自主将目标拆为子任务列表 开放域、用户意图模糊 Plan 漂移、幻觉任务 Template DAG 预定义任务模板 + 参数填充 已知 SOP、资金操作 灵活性低 Hybrid 固定骨架 + LLM 填充可变节点 生产推荐 需 policy guard 防溢出 3.2 任务依赖 DAG 🔥 3.3 Plan 输出结构化 schema ⚠ { "goal" : "处理用户退款请求" , "tasks" : [ { "id" : "t1" , "action" : "query_order" , "agent" : "order_agent" , "deps" : [ ] , "write" : false } , { "id" : "t2" , "action" : "query_profile" , "agent" : "profile_agent" , "deps" : [ ] , "write" : false } , { "id" : "t3" , "action" : "calc_refund" , "agent" : "refund_calc_agent" , "deps" : [ "t1" , "t2" ] , "write" : false } , { "id" : "t4" , "action" : "create_refund" , "agent" : "refund_exec_agent" , "deps" : [ "t3" ] , "write" : true , "hitl" : true } , { "id" : "t5" , "action" : "send_notification" , "agent" : "notify_agent" , "deps" : [ "t3" ] , "write" : true } ] , "constraints" : { "write_tasks_sequential" : true , "max_parallel" : 3 , "timeout_per_task_s" : 30 } }

💀 陷阱Plan 中 write: true 的任务如果没有标 hitl 且没有幂等键 → 重复执行风险。

3.4 并行调度Fan-out / Fan-in ┌─→ Task A ──┐ User Request → Plan ├─→ Task B ──┼─→ Merge → Respond └─→ Task C ──┘

组件 职责 实现要点 Plan 拆分子任务、声明依赖 输出结构化 JSON见 §3.3 schema Scheduler 按依赖图调度、并行无依赖任务 拓扑排序 + asyncio.gather / thread pool Worker 执行单任务、返回结构化结果 幂等、超时、重试、输出 schema 固定 Merger 聚合结果、冲突解决 reduce 函数;冲突时 escalate 给 Supervisor 3.5 任务状态机 3.6 Replan 策略 ⚠ 触发条件 策略 风险 单 task 失败且 retry exhausted 跳过该 task + 调整下游依赖 信息不完整 多 task 并行结果矛盾 Coordinator 仲裁或增加验证 task 增加轮数 用户中途改变目标 清除未执行 task基于新 goal replan plan 膨胀 Plan 漂移goal 偏移检测) 比对 goal embedding 相似度 < 阈值 → 拒绝 误报

💀 陷阱Replan 不受限 → 无限 replan 循环。必须设 max_replan_count ≤ 3。

  1. Agent 间通信协议L2 原理) 4.1 四种通信范式 范式 描述 延迟 耦合度 适用 Direct Call Agent A 同步调用 Agent B 低 高 同进程、Pipeline Message Bus 通过队列/事件异步通信 中 低 跨服务 Multi-Agent Shared State 通过共享 checkpoint/黑板写读 中 中 LangGraph StateGraph Handoff Agent A 将控制权+context 移交 Agent B 低 中 对话式 Swarm 4.2 A2AAgent-to-Agent协议 🔥

Google 提出的 A2A 协议为跨组织 Agent 互操作提供标准:

概念 说明 Agent Card JSON 描述 Agent 能力、输入输出 schema、认证方式 Task A2A 的原子单位,包含 input/output/status Streaming SSE 流式返回中间结果 Push Notification 长任务异步回调 Artifact 任务产生的文件/数据,可传递给下游 Agent Agent A ──AgentCard 发现──→ Agent B ──Task 请求────→ ←─SSE 流式结果── ←─Artifact 交付── ←─完成回调──────

4.3 MCP 与 A2A 的关系 🔥 维度 MCP A2A 解决问题 Agent ↔ Tool/Data 的标准接口 Agent ↔ Agent 的互操作协议 类比 USB 接口(连接外设) HTTP/gRPC服务间通信 互补 Agent B 可以通过 MCP 暴露自己为 Tool A2A 在上层编排MCP 在下层连接 认证 MCP Server 需独立鉴权 A2A Agent Card 声明认证方式 状态 无状态(每次调用独立) 有状态Task 生命周期管理) 4.4 通信 Schema 版本管理 ⚠ 问题 解法 Worker 输出 schema 变更 并存 2 版 30 天 + Coordinator 适配 Agent Card 能力变更 semver + 发现服务自动刷新 Handoff context 格式不兼容 中间层 adapter + 版本协商 5. 状态共享与隔离L3 生产) 5.1 状态分层模型 🔥 ┌─────────────────────────────────────────┐ │ Global State共享·Coordinator 单写) │ │ → goal, plan, completed_steps, │ │ current_round, error_summary │ ├─────────────────────────────────────────┤ │ Agent-local State隔离·各 Agent 写) │ │ → scratchpad, tool_cache, memory │ ├─────────────────────────────────────────┤ │ Task-local State隔离·单任务写 │ │ → input, output, retry_count, status, │ │ idempotency_key, duration_ms │ └─────────────────────────────────────────┘

5.2 设计原则 原则 说明 违反后果 Single Writer 同一 state key 只有一个 Agent 可写 写冲突、状态污染 Coordinator 持 Plan 只有 Coordinator 可修改 goal / plan Worker 各改 plan → 发散 Structured Observation Worker 返回 JSON不返回自由文本 Coordinator 解析失败 Checkpoint 租户隔离 tenant_id 行级过滤 跨租户记忆泄漏(见 27 §12 Append-only for Workers Worker 只 append observation不覆盖 历史丢失、审计断裂 5.3 Context Engineering for Multi-Agent ⚠ 难点

多 Agent 的 Context Engineering 比单 Agent 复杂一个数量级。

层级 策略 实现 Coordinator 滑动窗口 + 摘要 只读最近 N 轮 observation + completed_steps 全量 Worker 最小信息原则 只投递该 Worker 需要的 task context不给全局 plan 跨 Agent 摘要传递 Agent A 的输出经 summarizer 压缩后再给 Agent B 长期 外部记忆 共享 checkpoint 存 PG按需检索而非全量加载

Context 压缩示例

def compress_observation(raw_obs: dict) -> dict: """将 Worker 的原始 observation 压缩为摘要""" return { "task_id": raw_obs["task_id"], "status": raw_obs["status"], "key_findings": raw_obs["key_findings"][:3], # 最多3条 "error": raw_obs.get("error"), # 不传递: raw_data, tool_logs, debug_info }

5.4 LangGraph 实现模式 from langgraph.graph import StateGraph from typing import TypedDict, Annotated from operator import add

class MultiAgentState(TypedDict): goal: str # Coordinator 写 plan: list[dict] # Coordinator 写 current_round: int # Coordinator 写 completed_tasks: Annotated[list[str], add] # Workers append-only observations: Annotated[list[dict], add] # Workers append-only压缩后 final_answer: str # Coordinator 写 error_summary: list[dict] # Coordinator 写

graph = StateGraph(MultiAgentState)

Coordinator node: 读 observations → 更新 plan → 分配下一批 task

Worker nodes: 读 plan 中自己的 task → 执行 → append observation压缩

Merge node: 聚合并行结果 → pre-condition 校验 → 交回 Coordinator

5.5 Memory 共享模式 ⚠ 模式 描述 适用 风险 No Sharing 各 Agent 独立 memory Pipeline 信息断层 Blackboard 共享黑板,按 key 读写 Supervisor 写冲突 Event Sourcing 所有 observation 追加到事件流 审计要求高 存储膨胀 Selective Sharing 按 tag 选择性投递 生产推荐 需维护 tag 映射 6. 成本与延迟建模L3 生产) 6.1 Token 开销分析 🔥 组件 Token 消耗 优化手段 Coordinator 每轮读所有 observations → O(N×T) 摘要压缩、滑动窗口 Worker 仅读自身 task context → O(T) 限制 context window Plan 节点 一次性生成 → O(1) 缓存相似请求的 plan Merge 节点 聚合 N 个结果 → O(N×T) 结构化 reduce 而非 LLM 合并 总开销 单 Agent: T ; Multi-Agent: N×T + Coordinator×R轮 + Merge 控制轮数 R≤5 6.2 并行 vs 串行 Trade-off 维度 串行 Pipeline 并行 Fan-out 延迟 所有 Agent 延迟之和 max(各 Agent 延迟) Token 较少(无 Coordinator 较多(+Coordinator+Merge 复杂度 低 高(需 scheduler、超时、部分失败处理 适用 严格顺序依赖 子任务独立可并行 部分失败 上游失败 → 后续全停 单 Worker 失败 → 降级或 replan 6.3 成本公式 Cost_single = tokens_per_turn × turns × price_per_token Cost_multi = Σ(worker_tokens) + coordinator_tokens × rounds + merge_tokens ROI 准入 = (Quality_multi - Quality_single) / (Cost_multi - Cost_single) > threshold

6.4 容量估算Staff 白板必会)⚠ 假设: 峰值 Agent QPS = 100 平均每请求拆分 3 个 Worker 任务 每 Worker 平均 1.5k token输入+输出) Coordinator 每轮 3k token平均 2.5 轮 Token 单价 $3/1M (GPT-4o)

Worker token/s = 100 × 3 × 1500 / avg_task_duration(3s) = 150k token/s Coord token/s = 100 × 3000 × 2.5 / avg_round_duration(5s) = 150k token/s 总 token/s ≈ 300k $/hour = 300k × 3600 × $3 / 1M = $3,240/hour

对比单 Agent2k token × 5 轮): 单 Agent token/s = 100 × 2000 × 5 / 15s ≈ 67k $/hour = 67k × 3600 × $3 / 1M ≈ $720/hour

Multi-Agent 成本约 = 4.5x → 需要 completion 提升 ≥ 15% 才值得

准入规则(来自 27 §11.7):单 Agent eval ≥ 80% 后再上 Multi-Agent否则成本翻倍但质量不升。

  1. 生产反模式与事故L3 生产) 7.1 反模式清单 🔥

反模式 后果 正确做法

1 无 Coordinator 的 Peer-to-Peer 循环对话、token 爆炸、不收敛 设 max_rounds + Coordinator 裁决 2 Worker 私自修改 Plan 目标漂移、任务重复 Coordinator 单写 plan 3 跳 Stage 1 直上 Multi-Agent Completion 低 + 成本高 单 Agent eval ≥ 80% 准入 4 全 Agent 共享完整 context token 爆炸、O(N²) 按需投递、摘要压缩 5 并行 Worker 无超时 一个慢 Worker 阻塞全局 超时 → 降级/跳过 + Coordinator replan 6 无幂等的写操作 Fan-out 重复退款、重复发货 写操作单线程 + 幂等键 7 Multi-Task 无依赖声明 并行本应串行的任务 → 数据不一致 显式 DAG + 拓扑排序 8 Agent 间自由文本通信 解析失败率高 结构化 JSON schema 9 Handoff 无 max_count Agent 乒乓跳转 A→B→A→B… handoff 带 reason + max_handoff ≤ 3 10 Replan 无上限 无限 replan 循环 max_replan_count ≤ 3 11 Coordinator 无进度检测 连续空转消耗 token 连续 2 轮无新 completed_task → 强制终止 12 Multi-Agent 无独立 eval 不知道 Multi-Agent 是否真的优于单 Agent 对照实验 + eval gate 7.2 STAR-M-P 事故案例 1Multi-Agent 退款协调失败 🔥 字段 内容 S 电商客服 Multi-Agent 上线Planner 拆分为"查单→算退款→执行"三个 Worker无依赖声明三者并行启动。 T “执行退款” Worker 在"查单"完成前就调用了 create_refund传入 null 订单 → 退款金额为 0 → 用户投诉。 A ① 补充 DAG 依赖声明;② 写操作 Worker 强制等待前置 task Success③ 写操作增加 pre-condition 校验(订单非 null④ 添加 dry-run 阶段。 R 事故率归零;延迟增加 200ms可接受后续推广到所有写操作 Worker。 M 方法论Multi-Task 必须显式声明依赖;写操作 禁止无条件并行。 P 推动平台级 Task Scheduler 支持 DAG 拓扑排序 + pre-condition guard。 7.3 STAR-M-P 事故案例 2Coordinator Token 爆炸 🔥 字段 内容 S 5 个 Worker 每轮返回 2k token observationCoordinator 每轮读全量 → 第 4 轮 context 超 128k 被截断 → Plan 丢失关键信息 → 幻觉。 T 在不降低 completion 的前提下控制 Coordinator 上下文。 A ① Worker observation 压缩为结构化摘要≤200 token② Coordinator 只读最近 2 轮 + 全局 completed_steps③ 历史 observation 存 checkpoint按需检索。 R Coordinator token 从 40k/轮 降至 8k/轮completion 不降反升(噪声减少)。 M Multi-Agent 的 Context Engineering 是成本和质量的关键杠杆。 P 沉淀 ObservationCompressor 组件,强制 Worker 输出 ≤ schema 上限。 7.4 STAR-M-P 事故案例 3Handoff 乒乓风暴 字段 内容 S 对话式客服 Swarm 架构Triage → Order → Refund → Triage → Order… 用户问"退款后重新下单"触发 Agent 间无限 handoff。 T 24h 内止血,防止 token 消耗失控。 A ① 加 max_handoff_count = 5② handoff 带 reason 字段,重复 reason 触发熔断;③ 超限后自动转人工。 R 乒乓事件从日均 200 次降至 0用户体验评分持平转人工后处理。 M Swarm/Handoff 的收敛性不如 Supervisor必须有硬上限。 P 平台级 handoff 中间件:全局 count + reason dedup + 熔断。 7.5 STAR-M-P 事故案例 4Multi-Agent 跨租户状态污染 字段 内容 S 多租户 Agent 平台,两个租户的 Worker 共享了同一个 checkpoint namespace → 租户 A 的 observation 出现在租户 B 的 Coordinator context 中。 T 隔离修复 + 影响面评估 + 合规报告。 A ① Checkpoint 表增加 tenant_id + 行级安全策略RLS② 全量扫描历史 checkpoint 删除越权数据;③ Worker observation 增加 tenant_id 校验中间件。 R 影响 12 个会话无资金损失。7 天内修复。 M Multi-Agent 的 checkpoint 隔离比单 Agent 更易出问题(多写入源)。 P 平台级 checkpoint 写入层强制 tenant_id新租户上线前自动化隔离测试。 8. Multi-Agent 可观测性L3 生产) ⚠ 难点 8.1 跨 Agent Trace 关联 ┌─ trace_id: abc-123 ────────────────────────────────────────┐ │ span: coordinator │ │ ├─ span: fan-out-scheduler │ │ │ ├─ span: worker-order (agent_id: order, task_id: t1) │ │ │ ├─ span: worker-profile (agent_id: profile, task_id: t2)│ │ │ └─ span: worker-risk (agent_id: risk, task_id: t3) │ │ ├─ span: merge │ │ └─ span: worker-refund (agent_id: refund, task_id: t4) │ └─────────────────────────────────────────────────────────────┘

必须的 trace 属性 说明 trace_id 用户请求级,贯穿所有 Agent agent_id 哪个 Agent task_id 哪个 Task round 第几轮 tokens_in / tokens_out 每个 span 的 token 统计 tool_calls 该 span 调用了哪些工具 decision Coordinator 的路由/分配决策 8.2 成本归因 总请求成本 → 按 agent_id 归因 → 按 task_id 归因 → Coordinator 占比 (通常 30-50%) → Worker A 占比 → Worker B 占比 → Merge 占比

8.3 告警规则 指标 阈值 动作 rounds_per_request > 5 收敛不良 降级到单 Agent coordinator_tokens > 50k context 即将溢出 触发压缩 handoff_count > 3 乒乓风险 熔断转人工 task_timeout_rate > 10% Worker 性能问题 扩容或降级 cost_per_completion > budget 超预算 切换小模型

→ 详见 25 AI 可观测性。

  1. Multi-Agent Eval 体系L3 生产) 9.1 四层 Eval 🔥 层级 评估什么 指标 工具 单 Agent 每个 Worker 的任务完成质量 accuracy, latency, tool_call_success LangSmith / Braintrust 协调质量 Coordinator 的任务拆分和分配 plan_precision, plan_recall, routing_accuracy 自建 eval dataset 端到端 用户目标是否达成 completion_rate, user_satisfaction A/B test 成本效率 同质量下的 token 消耗 cost_per_completion LiteLLM 统计 收敛性 多少轮达成目标 avg_rounds, timeout_rate, handoff_count trace 分析 9.2 准入 Gate ⚠ ┌─ Stage 1 → Stage 2 准入 ─────────────────────────────┐ │ 单 Agent eval ≥ 80% │ │ 有 checkpoint + trace + 至少 30 条 eval case │ ├─ Stage 2 留存条件 ─────────────────────────────────────┤ │ Multi-Agent eval ≥ 单 Agent + 5% │ │ Multi-Agent cost ≤ 单 Agent × 2 │ │ avg_rounds ≤ 5 │ │ timeout_rate ≤ 5% │ ├─ 不达标 → 自动回退 ────────────────────────────────────┤ │ eval 连续 3 天低于阈值 → 灰度缩量 → 回退单 Agent │ └─────────────────────────────────────────────────────────┘

9.3 Multi-Agent 专属 Eval Case ⚠ 用例类别 测什么 通过标准 Plan 拆分正确性 给定 goal → plan 包含必需 task F1 ≥ 0.9 依赖排序正确性 写操作在前置读操作之后 100% 部分失败降级 1 个 Worker 超时 → 系统仍可返回有意义结果 ≥ 80% Coordinator 收敛 不出现空转(连续 2 轮无新完成) timeout_rate ≤ 5% 跨 Agent 一致性 Worker A 和 B 的 observation 不矛盾 矛盾率 ≤ 2% Handoff 合理性 handoff reason 与用户意图匹配 accuracy ≥ 90% 重复写操作 Fan-out 后无重复 side effect duplicate_write = 0 Replan 正确性 replan 后 goal 不偏移 goal_drift = 0 10. 框架实战对比L3 生产) 10.1 LangGraph Multi-Agent from langgraph.graph import StateGraph, START, END from langgraph.constants import Send

Supervisor 拓扑

graph = StateGraph(MultiAgentState) graph.add_node("coordinator", coordinator_node) graph.add_node("researcher", researcher_node) graph.add_node("writer", writer_node) graph.add_node("reviewer", reviewer_node)

graph.add_edge(START, "coordinator") graph.add_conditional_edges("coordinator", route_to_worker, {"research": "researcher", "write": "writer", "review": "reviewer", "done": END}) graph.add_edge("researcher", "coordinator") graph.add_edge("writer", "coordinator") graph.add_edge("reviewer", "coordinator")

Fan-out 多任务并行:用 Send API

def fan_out(state): return [Send("worker", {"task": t}) for t in state["plan"] if t["status"] == "pending" and all_deps_met(t, state)]

graph.add_conditional_edges("coordinator", fan_out)

10.2 AutoGen Multi-Agent from autogen import AssistantAgent, GroupChat, GroupChatManager

planner = AssistantAgent("planner", system_message="你负责拆解任务...") researcher = AssistantAgent("researcher", system_message="你负责查询...") coder = AssistantAgent("coder", system_message="你负责实现...")

group_chat = GroupChat( agents=[planner, researcher, coder], messages=[], max_round=10, speaker_selection_method="auto" # 或 "round_robin" ) manager = GroupChatManager(groupchat=group_chat)

10.3 CrewAI Multi-Task from crewai import Agent, Task, Crew, Process

researcher = Agent(role="Researcher", goal="...", tools=[search_tool]) writer = Agent(role="Writer", goal="...", tools=[])

task1 = Task(description="调研竞品", agent=researcher, expected_output="报告") task2 = Task(description="撰写文章", agent=writer, expected_output="文章", context=[task1]) # 显式依赖

crew = Crew(agents=[researcher, writer], tasks=[task1, task2], process=Process.sequential) # 或 Process.hierarchical

10.4 生产选型决策 🔥 场景 推荐 理由 资金写操作 LangGraph checkpoint + interrupt + 幂等 + 显式边 研发探索/Code Review AutoGen 多角色对话自然、快速迭代 内容生产(无写操作) CrewAI Task 依赖声明直观、上手快 对话式客服升级 OpenAI Agents SDK / Swarm handoff 自然、上下文传递好 企业级 Java 栈 Spring AI + 自建 Coordinator 与 Spring 生态集成、事务管理 跨组织 Agent 互操作 A2A 协议 + 任一框架 标准化发现与通信 11. Staff 面试高频题与满分答L4 答辩)

格式:结论先行 → 原理展开 → 边界/陷阱 → 落地经验 → 反问引导。答题时间标注在题目后。

11.1 Multi-Agent vs Multi-Task 区别?🔥🔥🔥🔥🔥

QMulti-Agent 和 Multi-Task 有什么区别?

30sMulti-Agent 是"多个谁"——多个具备独立角色/提示/工具的 Agent 协作Multi-Task 是"多个什么"——多个子任务被分解调度执行。单 Agent 可以 Multi-TaskFan-out tool calls多 Agent 也可以只处理单一任务辩论验证。生产中两者通常同时出现Coordinator 拆任务Multi-Task分给不同 WorkerMulti-Agent去并行执行。

追问预判:→ 那什么时候用单 Agent Multi-Task 就够了?→ 当 角色 skill 无差异 时,加 Agent 只加成本不加质量。

11.2 什么时候上 Multi-Agent🔥🔥🔥🔥🔥

Q什么时候值得用 Multi-Agent

60s三个条件同时满足① 子任务可并行且上下文可隔离——否则共享 context 反而浪费 token② 角色 skill 差异大——不同 system prompt + 工具集能显著提升各子任务质量;③ 单 Agent completion < 目标——先证明单 Agent 不够再加复杂度。准入门槛:单 Agent eval ≥ 80%Multi-Agent 必须比单 Agent 至少高 5 个点且成本 ≤ 2 倍。

追问预判:→ 如果 eval 高了但成本超 2x 怎么办?→ 看 completion vs cost 曲线的边际收益,有的场景(资金)可以接受 3x 成本换 5% completion。

11.3 拓扑怎么选?🔥🔥🔥🔥

QMulti-Agent 有哪些拓扑模式?怎么选?

60s六种核心拓扑——Supervisor中心分发、Hierarchical分层管理、Peer-to-Peer去中心辩论、Pipeline线性流水线、Mixture/Dynamic按类型路由、Swarm/Handoff对话式移交。决策点子任务可枚举 → SupervisorDAG 依赖+角色<5 → Pipeline 子图;角色>5 跨域 → Hierarchical对话逐步升级 → Swarm需验证 → Peer。核心原则Supervisor 够用就不上 HierarchicalPipeline 够用就不上 Fan-out复杂度是成本。

追问预判:→ Swarm 和 Supervisor 本质区别?→ Supervisor 控制流中心化Swarm 控制流去中心化Supervisor 更可控但单点瓶颈Swarm 更自然但收敛难保证。

11.4 Coordinator 设计的关键原则?🔥🔥🔥🔥🔥

QMulti-Agent 系统中 Coordinator 怎么设计?

60s五个原则① Single Writer——只有 Coordinator 可写 goal/plan/completed_stepsWorker 只 append observation② 结构化通信——Worker 返回固定 JSON schema不返回自由文本③ 摘要压缩——每轮只读最近 N 轮 observation + 全局 completed 列表,防 token 爆炸;④ 收敛保证——设 max_rounds + 进度检测,连续 2 轮无进展 → 强制汇总或 escalate⑤ 最小信息投递——Worker 只拿自己 task 的 context不拿全局 plan。

追问预判:→ Coordinator 本身 context 溢出怎么办?→ 三招observation 压缩到 ≤200 token、滑动窗口只保留最近 2 轮、历史存 checkpoint 按需检索。

11.5 并行任务的一致性怎么保证?🔥🔥🔥🔥🔥

QFan-out 多任务并行时怎么保证一致性?

60s三层保障① 显式 DAG 依赖——写操作的前置任务必须 Success 才启动,拓扑排序强制执行;② 写操作禁止无条件并行——多个写操作走 Saga 不走 Fan-out补偿逻辑明确③ Merge pre-condition——聚合前校验所有必需 task 已完成,缺失则 replan 而非用 null 值拼接。额外:写操作必须有 幂等键(业务键如 order_id + refund_type防止重试导致重复写。

11.6 A2A 与 MCP 的关系?🔥🔥🔥

QA2A 协议和 MCP 有什么关系?

30sMCP 解决 Agent 到 Tool/Data 的标准连接,类比 USB 接口A2A 解决 Agent 到 Agent 的互操作协议,类比 HTTP。两者互补A2A 在上层编排 Agent 协作MCP 在下层让每个 Agent 接入工具。一个 Agent 也可以通过 MCP 把自己暴露为另一个 Agent 的 Tool。关键区别MCP 无状态A2A 有 Task 生命周期管理。

11.7 画一个 Multi-Agent 退款系统的架构?🔥🔥🔥🔥

Q白板画一个 Multi-Agent 退款架构。

90s

User → API Gateway → Coordinator Agent │ ┌──────────┼──────────┐ ← Fan-out (读操作, 可并行) ▼ ▼ ▼ Order Agent Policy Agent Risk Agent (查订单) (查退款政策) (风控评估) │ │ │ └──────────┼──────────┘ ↓ Coordinator Merge ← pre-condition: 3个全 Success │ ▼ (全部通过) Refund Agent ← 串行 + HITL 人审 + 幂等键 (执行退款) │ ▼ Notify Agent ← 异步, 允许失败重试 (发通知)

关键点:① 前三个 Agent 可并行Fan-out因为互不依赖② Refund Agent 必须等前三个全部 SuccessDAG 依赖);③ 写操作(退款)走 HITL + 幂等;④ 每个 Agent 的 observation 是结构化 JSON⑤ Coordinator 负责 merge 和决策;⑥ 全链路统一 trace_id。

11.8 Multi-Agent 的 Context Engineering 怎么做?🔥🔥🔥🔥

Q多个 Agent 协作时,上下文怎么管理?

60s三层策略——Global State目标/计划/完成列表Coordinator 单写、Agent-local各 Agent 的 scratchpad 和工具缓存互不可见、Task-local单任务的 input/output/重试计数)。核心技巧:① Worker observation 强制压缩到 ≤200 token 的结构化摘要;② Coordinator 用滑动窗口只读最近 N 轮;③ 跨 Agent 传递用 summarizer 压缩;④ 长期 context 存 checkpoint PG按需检索。过度共享 → token 爆炸,过度隔离 → 信息断层,所以用 tag-based selective sharing。

11.9 Multi-Agent 怎么做可观测?🔥🔥🔥

Q多 Agent 系统的可观测性怎么建?

60s三个维度——Trace统一 trace_id 贯穿所有 Agent每个 Agent/Task 一个 spanspan 上打 agent_id/task_id/round/tokens/decision 标签Cost按 agent_id 归因 token 消耗Coordinator 通常占 30-50%据此优化Quality告警 5 个阈值——rounds>5收敛差、coordinator_tokens>50kcontext 溢出、handoff>3乒乓、task_timeout>10%性能、cost>budget超预算

11.10 Swarm/Handoff 和 Supervisor 怎么选?🔥🔥🔥

QOpenAI 的 Swarm/Handoff 模式什么时候用?和 Supervisor 区别是什么?

45sSupervisor 是 中心化控制——一个 Coordinator 决定分给谁、什么时候收Swarm 是 去中心化移交——每个 Agent 自己决定何时 handoff 给谁。Supervisor 适合 结构化任务拆分退款流程Swarm 适合 对话式逐步升级客服从通用→专业→人工。关键风险Swarm 的收敛性不如 Supervisor必须加 max_handoff + reason dedup 防乒乓。生产建议:资金路径用 Supervisor对话路径用 Swarm。

11.11 Multi-Agent 部分失败怎么处理?🔥🔥🔥🔥

QFan-out 后有 Worker 失败了怎么办?

45s分三级——① 可忽略(如通知 Agent 失败):标记 skipped继续后续步骤异步重试② 可降级(如风控 Agent 超时):用默认策略(如拒绝高风险),降级完成;③ 必需(如查单 Agent 失败阻塞后续retry × 3exhausted 后整体 replan 或转人工。Coordinator 的 merge pre-condition 定义了哪些 task 是 required vs optional。配合 超时 :每 task 30s hard timeout10s soft timeout 触发降级路径。

11.12 给我讲一个 Multi-Agent 的生产事故?🔥🔥🔥🔥🔥

Q你在生产中遇到过什么 Multi-Agent 的问题?

90s用 §7.2-7.5 任一案例STAR-M-P 格式):

选择最贴近你经历的案例背诵。推荐 §7.2(退款协调失败)或 §7.3Coordinator token 爆炸),因为最高频。

  1. 面试前 30 分钟 ChecklistStaff / Architect

只勾不看内容,发现 立即翻对应章节。

能 30s 内说清 Multi-Agent vs Multi-Task 区别§1、Q11.1 能说出 6 种拓扑 + 各自 trade-off§2.2 能画 Supervisor + Fan-out 退款架构白板Q11.7 能说出 Coordinator 5 个设计原则Q11.4 能说出 Fan-out 一致性三层保障Q11.5 能区分 A2A vs MCPQ11.6 能说出 Multi-Agent 准入门槛数字eval≥80%, +5%, cost≤2x 能讲 1 个 STAR-M-P 事故§7.27.5 选一) 能说出 Context Engineering 三层策略Q11.8 能说出 5 个告警阈值§8.3 知道 Swarm vs Supervisor 区别和选型Q11.10 能说出部分失败的三级处理Q11.11 准备好 1 个成本估算例子§6.4 替换数字) 能对照 06 讲 Subagent/Fork/Coordinator§15 能说明 LangGraph Send 与 Cursor 并行 Task 的异同§15.2 13. 全知识点 Checklist逐项自测 13.1 概念层L1— 8 项 KC-01 能定义 Multi-Agent多个独立角色/提示/工具的 Agent 协作 KC-02 能定义 Multi-Task多个子任务分解、调度、并行/依赖执行 KC-03 能画四象限单Agent单Task / 单Agent多Task / 多Agent单Task / 多Agent多Task KC-04 知道单 Agent 也能 Multi-TaskFan-out tool calls KC-05 知道多 Agent 可以处理单任务(辩论验证) KC-06 能区分 Coordinator / Worker / Scheduler / Merger 四角色 KC-07 能说出 Stage 1→4 成熟度与拓扑对应 KC-08 知道 Multi-Agent 不一定优于单 Agent 13.2 拓扑与编排层L2— 16 项 KC-09 Supervisor 拓扑优势可控、劣势单点、token 开销) KC-10 Hierarchical 拓扑:优势(分层自治)、劣势(层间延迟) KC-11 Peer-to-Peer 拓扑:优势(多视角)、劣势(难收敛) KC-12 Pipeline 拓扑:优势(最低开销)、劣势(无并行) KC-13 Mixture/Dynamic 拓扑:优势(灵活)、劣势(路由维护) KC-14 Swarm/Handoff 拓扑:优势(自然传递)、劣势(回退困难) KC-15 能画拓扑选型决策树 KC-16 任务分解三策略LLM Plan / Template DAG / Hybrid KC-17 Plan 输出结构化 schemaid, deps, agent, write, hitl KC-18 DAG 拓扑排序调度 KC-19 Fan-out / Fan-in 模式 KC-20 任务状态机Pending→Running→Success/Failed→Retrying/Escalated含 HITL KC-21 Replan 策略与 max_replan_count ≤ 3 KC-22 四种通信范式Direct / Message Bus / Shared State / Handoff KC-23 A2A 协议核心概念Agent Card / Task / Streaming / Artifact KC-24 MCP vs A2A 区别与互补关系 13.3 状态与 ContextL2-L3— 12 项 KC-25 状态分层Global / Agent-local / Task-local KC-26 Single Writer 原则 KC-27 Coordinator 持 Plan 原则 KC-28 Structured Observation 原则 KC-29 Append-only for Workers 原则 KC-30 Checkpoint 租户隔离tenant_id RLS KC-31 Context EngineeringCoordinator 滑动窗口 + 摘要压缩 KC-32 Worker 最小信息原则 KC-33 跨 Agent 摘要传递 KC-34 ObservationCompressor 组件≤200 token KC-35 Memory 共享模式No Sharing / Blackboard / Event Sourcing / Selective KC-36 LangGraph MultiAgentState 实现模式 13.4 生产工程层L3— 18 项 KC-37 Token 开销公式N×T + Coordinator×R + Merge KC-38 并行 vs 串行 trade-off KC-39 容量估算:能口算 $/hour KC-40 准入门槛数字eval≥80%, +5%, cost≤2x KC-41 回退机制eval 不达标 → 灰度缩量 → 回退单 Agent KC-42 12 个反模式§7.1)能说出 ≥ 5 个 KC-43 能讲 ≥ 2 个 STAR-M-P 事故案例 KC-44 跨 Agent trace 关联:统一 trace_id + agent_id/task_id span KC-45 成本归因:按 agent_id 维度 KC-46 5 个告警阈值 KC-47 四层 Eval单Agent / 协调 / 端到端 / 成本 / 收敛) KC-48 Eval Gate 准入流程 KC-49 8 类 Multi-Agent 专属 eval case KC-50 部分失败三级处理(可忽略 / 可降级 / 必需) KC-51 超时机制soft timeout降级+ hard timeout终止 KC-52 写操作一致性DAG 依赖 + Saga + 幂等键 + pre-condition KC-53 Handoff 防乒乓max_handoff + reason dedup + 熔断 KC-54 通信 Schema 版本管理 13.5 框架选型层L3— 6 项 KC-55 LangGraph Multi-AgentStateGraph + Send API + conditional_edges KC-56 AutoGenGroupChat + GroupChatManager + speaker_selection KC-57 CrewAIAgent + Task(context) + Crew(process) KC-58 OpenAI Agents SDK / SwarmAgent + handoffs KC-59 Spring AI + 自建 Coordinator KC-60 场景→框架映射表资金→LangGraph, 对话→Swarm, 内容→CrewAI 13.6 Staff 答辩层L4— 12 项 KC-61 能白板画 Multi-Agent 退款架构 KC-62 能 30s 说清 Multi-Agent vs Multi-Task KC-63 能说出 Coordinator 5 原则 KC-64 能说出 Fan-out 一致性三层保障 KC-65 能说出 Swarm vs Supervisor 选型逻辑 KC-66 能讲 STAR-M-P 事故 KC-67 能口算 Multi-Agent 成本估算 KC-68 能说出 A2A vs MCP 区别 KC-69 能说出 Context Engineering 三层策略 KC-70 能画跨 Agent trace span 结构 KC-71 能说出部分失败三级处理 KC-72 能回答"什么时候不该用 Multi-Agent" KC-73 能区分 Cursor Subagent vs 生产 Worker06 KC-74 能说明 IDE 会话 Fork 不等于业务 checkpoint KC-75 能口述 LangGraph Send Fan-out 与写操作互斥 15. DevEx Subagent 与生产 Coordinator 闭环2026 增补)

专章06-Coding-Agent运行时对照 · Catalog96 DEVEX_* + MA_*

15.1 同一问题,两套答案 面试问法 先答运行面 再答生产不变式 「Subagent 是什么?」 Cursor独立 context 的 Worker Coordinator 单写 planWorker append observation 「Coordinator 在哪?」 父 Agent 隐式协调 MultiAgentState + checkpoint 显式节点 「并行会不会更快?」 探索只读可并行 写操作 Fan-out 禁止Saga 串行 「断了怎么续?」 Resume agent ID / Fork 实验分支 thread_id + 幂等键;禁全量 replan 15.2 LangGraph Send API生产 Fan-out 标准写法

依据LangGraph 动态扇出。

from langgraph.types import Send

def coordinator_fanout(state): """Coordinator 选出可并行 task → Send 到对应 worker 节点""" pending = [t for t in state["plan"] if t["status"] == "pending" and deps_met(t, state)] # 写操作:同一 round 最多 1 个 writes = [t for t in pending if t.get("write")] if len(writes) > 1: pending = [writes[0]] return [Send(worker_node(t["agent"]), {"task": t, "goal": state["goal"]}) for t in pending]

def worker_node(agent_name: str, payload: dict) -> dict: obs = run_worker(agent_name, payload["task"], minimal_context(payload)) return {"observations": [compress_observation(obs)]}

DevEx 对照 LangGraph 父 Agent 发多个 Task Send[] explore/bash/browser 专用 worker 节点 + 工具白名单 background subagent 异步节点 + 轮询 merge readonly subagent worker 图内只读 tool 边 15.3 与 Cursor Subagent 的边界Staff 必背) 允许:用 subagent 做 explore / verifier / test-runner06 §3。 禁止IDE 并行 subagent 直接写 生产库Fork 会话当业务 checkpointDEVEX_FORK_NO_AUDIT。 迁移Orchestrator 三角色Planner→Implementer→Verifier→ Pipeline + 验证节点06 §22。 15.4 Multi-Agent Eval 门禁(与 06 §25 成本账本校准) Gate 阈值(示意) 失败动作 单 Agent baseline success ≥ 80% 不准上 Multi-Agent Multi vs Single completion +5pt 且 cost ≤2x 缩 Worker 或改拓扑 Coordinator token < 50k/run 压缩 observation Convergence rounds ≤ 5 降级单 Agent Trajectory golden 匹配 ≥ 95% 阻断发布19 15.5 追加面试题(与 06 §99 交叉) 11.13 Subagent 与 Multi-Agent Worker 一样吗?🔥🔥🔥🔥

40s角色同、治理不同。Subagent 缺业务 checkpoint/租户/幂等;生产 Worker 必须在 Coordinator 下 结构化 JSON 回传。IDE 父 Agent≈Coordinator但须 显式化 到图与 DB。

11.14 Fork 会话能否代替 checkpoint🔥🔥🔥

30s不能。Fork/Resume 解决 研发实验与续聊checkpoint 解决 写操作可审计续跑。见 96 DEVEX_* vs RUN_*。

11.15 三个 readonly subagent 并行改同一模块?🔥🔥🔥🔥

40s探索可并行实现必须单写者。否则 Git 冲突与局部最优06 §11 STAR。生产同理Fan-out 只给 读 Worker。

11.16 Java 侧如何落地 Supervisor🔥🔥🔥

45sSpring AI ChatClient 做 intent → Scripted/LLM Supervisor 路由 → 多 Worker Bean → summarize轨迹见 multi-agent-supervisor demo。演进LangGraph4j 或 Plan-Execute 自研,不变式同 §5。

11.17 Peer 辩论为何生产慎用?🔥🔥🔥

35s无 Coordinator 时 token 与轮次易失控MA_PEER_NO_CONVERGE。仅用于 离线评审/红队;资金路径用 Supervisor + HITL。

  1. 总结金句

Multi-Agent 解决"谁来做"Multi-Task 解决"做什么和怎么排"。Coordinator 是唯一写 plan 的人Worker 只反馈结构化 observation。写操作永远串行 + 幂等 + HITL只有读操作才值得 Fan-out。上 Multi-Agent 前先证明单 Agent 不够——eval ≥ 80% 是准入门槛,成本 ≤ 2x 是留存条件。

拓扑选型不是技术品味是架构决策——Supervisor 够用就不上 HierarchicalPipeline 够用就不上 Fan-out。复杂度是成本简单是竞争力。

Context Engineering 是 Multi-Agent 的隐藏 boss——过度共享 token 爆炸,过度隔离信息断层。三层分离 + 摘要压缩 + 按需检索是生产正解。

每个 Multi-Agent 系统都需要三个安全网max_rounds 防空转、max_handoff 防乒乓、max_replan 防无限重做。没有硬上限的 Agent 系统迟早会在凌晨三点叫你起床。

DevEx Subagent 与生产 Coordinator 是同一套编排的两层皮肤——IDE 省 context生产保幂等与审计详见 06 与 §15。

官方文档与源码(一级依据)

AI Engineering · 正文机制应来自下方 官方文档L1 与 官方源码仓库L2 禁止用教程站/博客充当机制依据。本章 QPS/延迟/STAR 为面试示意。 写作规范docs/official-sources-registry.md §0

L1 · 官方文档

Spring AI Reference LangGraph Interrupts LangChain4j Docs

L2 · 官方源码

spring-projects/spring-ai langchain-ai/langgraph langchain4j/langchain4j

L3 · 论文 / 开放规范

L3 MCP Specification


笔记由 Hermes Agent 自动抓取保存