1. 多 Agent 系统面试的底层逻辑拆解
1.1 为什么面试官总爱问多 Agent 架构
面到多 Agent 系统这道题,基本可以判断你面的岗位跟 AI 应用落地强相关,要么是平台工程,要么是算法工程,要么是偏架构的应用开发。面试官问这个,不是想听你把某个开源框架的 API 背一遍,而是想确认三件事:你知不知道单 Agent 的天花板在哪、你能不能根据业务场景选对协作模式、你有没有真正踩过协作带来的坑。
单 Agent 的问题很直观。一个模型加一段提示词,处理简单问答没问题,但一旦任务需要多步推理、跨领域知识、长链路工具调用,它就开始顾此失彼。上下文窗口被塞满、工具选择混乱、中间结果无法校验,最后输出质量断崖式下跌。多 Agent 的本质,是把一个"全能但容易过载"的大脑,拆成几个"专精且可协作"的角色,用分工换稳定性。
这里有个关键认知:多 Agent 不是让系统变聪明,而是让系统变可控。每个 Agent 只负责一小块,职责边界清晰,出错时能定位到具体环节,而不是面对一个黑盒输出干瞪眼。面试时如果你能把这个"可控性优先"的观点讲出来,比堆砌名词强得多。
1.2 面试官真正在考察的三个维度
第一个维度是架构选型能力。同样是多 Agent,顺序流水线、层级调度、对等协商、黑板共享,这四种模式的适用场景完全不同。面试官会通过你的描述判断你是不是"手里只有一把锤子"。
第二个维度是工程落地能力。多 Agent 系统最容易被低估的是通信成本和状态管理。Agent 之间怎么传消息、消息格式怎么定、失败了怎么重试、上下文怎么裁剪,这些细节才是区分"做过 Demo"和"上过生产"的分水岭。
第三个维度是权衡意识。多 Agent 一定比单 Agent 好吗?不一定。协作轮次越多,延迟越高、成本越大、出错点越多。能说清楚"什么情况下我不选多 Agent",反而是加分项。
2. 四种经典架构的深度解析
2.1 顺序流水线架构:最朴素也最稳的起点
顺序流水线,英文里常叫 Sequential Pipeline 或 Chain。它的结构非常简单:Agent A 处理完把结果交给 Agent B,B 处理完交给 C,像工厂流水线一样一环扣一环。典型场景是内容生产,比如"需求分析 Agent → 大纲生成 Agent → 正文撰写 Agent → 审核润色 Agent"。
这种架构最大的优势是可预测。每一步的输入输出都是确定的,调试时你可以单独把某个 Agent 拎出来测试,不用管其他环节。对于刚接触多 Agent 的团队,我一般建议从这里起步,因为它的心智负担最低。
但它的问题也很明显。第一,串行执行导致延迟叠加,四个 Agent 每个跑 3 秒,端到端就是 12 秒起步。第二,错误会沿着链路传播,前面 Agent 理解偏了,后面全跟着错,而且越往后越难纠正。第三,它本质上没有"协作",只是"接力",Agent 之间没有反馈回路。
实操中我会在流水线的关键节点加"校验 Agent"。比如大纲生成后插一个校验环节,判断大纲是否覆盖了需求要点,不通过就打回重做。这样虽然多了一次调用,但能挡住大部分错误传播。
注意:流水线架构里,每个 Agent 的输出格式必须严格约定。我见过太多项目因为上游输出了一段自然语言、下游解析不出来而卡住。建议统一用结构化格式传递,字段名和类型提前定死。
2.2 层级调度架构:一个主管带一队专家
层级调度,也叫 Supervisor 模式或 Orchestrator-Worker 模式。结构上有一个"主管 Agent"负责拆解任务、分配工作、汇总结果,下面挂若干个"专家 Agent"各司其职。这可能是目前生产环境里最常见的一种。
它的核心价值在于动态路由。主管根据任务内容决定调用哪个专家,而不是像流水线那样固定顺序。比如一个客服系统,主管先判断用户问题是退款、物流还是产品咨询,再分发给对应的专家 Agent。这种"先分类再处理"的模式,比让一个 Agent 硬扛所有问题要稳得多。
主管 Agent 的设计是难点。它需要具备三个能力:任务拆解、专家选择、结果整合。任务拆解要拆到"每个子任务都能被单个专家独立完成"的粒度;专家选择要基于清晰的描述,所以每个专家 Agent 的能力说明必须写得像招聘 JD 一样明确;结果整合则要处理专家之间的输出冲突。
我踩过的一个坑是主管 Agent 的上下文膨胀。当专家数量多、任务复杂时,主管要维护所有专家的状态和中间结果,上下文很快就爆了。解决办法是给主管做"摘要记忆",只保留每个专家的结论和关键依据,中间过程丢弃。
| 对比项 | 顺序流水线 | 层级调度 |
|---|---|---|
| 执行方式 | 串行接力 | 主管分发,可并行 |
| 灵活性 | 低,顺序固定 | 高,动态路由 |
| 调试难度 | 低 | 中 |
| 适用场景 | 步骤固定的生产流程 | 任务类型多样的分发场景 |
| 主要风险 | 错误传播 | 主管成为瓶颈 |
2.3 对等协商架构:Agent 之间互相辩论
对等协商,英文常叫 Peer-to-Peer 或 Debate 模式。多个 Agent 地位平等,针对同一个问题各自给出方案,然后互相评审、辩论,最终收敛出一个结论。这种模式在需要高质量决策的场景里很有价值,比如方案评审、风险评估、复杂推理。
它的原理其实借鉴了"集成学习"的思路:多个独立视角的碰撞,能抵消单个视角的偏差。一个 Agent 可能忽略的边界条件,另一个 Agent 恰好能指出来。实测下来,在开放性推理任务上,两到三个 Agent 辩论一轮,输出质量确实比单 Agent 高出一截。
但它的成本也是最高的。N 个 Agent 辩论 R 轮,调用次数是 N×R 起步,token 消耗成倍增长。而且辩论不一定会收敛,有时候两个 Agent 会陷入"你说得对但我还是坚持"的死循环。所以必须设置终止条件,比如最大轮次限制,或者引入一个"裁判 Agent"来拍板。
实操建议是控制辩论规模。我试过五个 Agent 辩论,效果并没有比三个好,反而因为观点太分散导致收敛更慢。三个是比较舒服的数字:一个提方案,一个挑毛病,一个做平衡。
2.4 黑板共享架构:用共享状态解耦协作
黑板模式源自经典的 AI 架构,核心思想是有一个共享的"黑板"(可以是数据库、消息队列或共享内存),所有 Agent 都能读写黑板上的内容,通过黑板间接协作,而不是直接点对点通信。
这种架构最大的好处是解耦。Agent 之间不需要知道彼此的存在,只需要关心黑板上有哪些信息、自己能贡献什么。新增一个 Agent 时,只要它能读写黑板,就能无缝接入,不用改动其他 Agent。对于需要长期演进、Agent 数量会持续增加的系统,这个特性非常关键。
典型应用是复杂的数据分析流程。数据清洗 Agent 把结果写到黑板,特征工程 Agent 从黑板读取并写入新特征,建模 Agent 再读取特征。每个 Agent 独立触发,互不阻塞。
黑板模式的难点在于"触发机制"和"状态一致性"。谁来决定某个 Agent 该在什么时候运行?如果两个 Agent 同时修改同一条数据怎么办?我的做法是给黑板上的每条数据加版本号和状态标记,Agent 只在状态满足条件时才处理,处理时用乐观锁防止冲突。
提示:黑板模式听起来很美,但如果你团队规模小、Agent 数量少,用它反而增加复杂度。它适合的是"多团队协作、Agent 独立演进"的场景,不是所有项目都需要。
3. 架构选型的实操决策路径
3.1 从任务特征反推架构
选架构不要从"哪个高级"出发,要从"任务长什么样"出发。我总结了一个简单的判断路径。
如果任务步骤固定、顺序明确,选顺序流水线。比如文档翻译流程、数据 ETL 流程,步骤不会变,用流水线最省心。
如果任务类型多样、需要先分类再处理,选层级调度。比如一个综合助手要处理问答、查询、操作三类请求,主管先分类再分发。
如果任务需要高质量决策、容错要求高,选对等协商。比如方案评审、风险研判,多个视角碰撞能提升可靠性。
如果系统需要长期演进、Agent 会不断增加,选黑板共享。比如企业级的知识处理平台,各个团队往里加 Agent。
3.2 混合架构才是生产常态
真实项目里,纯某一种架构很少见,更多是混合。我做过的一个项目就是"层级调度 + 顺序流水线":主管 Agent 负责分类,分到某个专家后,该专家内部又走一条小流水线。这种嵌套结构很常见,面试时能讲出混合思路,说明你有实战经验。
混合的关键是"边界清晰"。每一层用什么模式、层与层之间怎么衔接,要提前画清楚。我习惯先画一张 Agent 拓扑图,标出每个 Agent 的职责、输入、输出、触发条件,再动手写代码。这张图能省掉后面大量的返工。
3.3 成本与延迟的量化权衡
面试时如果能给出量化的权衡,会非常加分。举个我实际测算过的例子。
假设单次 Agent 调用平均耗时 2 秒、成本 0.01 元。一个四步流水线,端到端 8 秒、成本 0.04 元。同样任务用层级调度,主管 1 次加专家 1 次,端到端 4 秒、成本 0.02 元,但前提是任务能被准确分类。如果分类错了,重试一次就变成 6 秒、0.03 元。
对等协商三个 Agent 辩论两轮,调用 6 次以上,端到端 12 秒、成本 0.06 元起。所以协商模式只用在"错误代价远高于调用成本"的场景,比如医疗建议、法律文书这类不能出错的领域。
把这些数字摆出来,面试官立刻知道你是在真实约束下做决策的人,而不是纸上谈兵。
4. 落地过程中的常见问题与排查技巧
4.1 Agent 之间通信失败的排查
多 Agent 系统最高频的问题就是通信失败。表现是上游明明输出了内容,下游却报解析错误。排查顺序我一般是这样的。
先看格式。上游输出的是不是约定的结构化格式?很多时候是模型"自由发挥"了,多加了句解释性文字,导致 JSON 解析失败。解决办法是在提示词里强制要求"只输出 JSON,不要任何额外文字",并在解析层做容错,比如用正则提取 JSON 片段。
再看字段。字段名拼写、类型是否一致?我遇到过上游输出user_id下游读userId的情况,排查了半天。建议把字段定义抽成一个共享的 schema 文件,所有 Agent 引用同一份。
最后看编码。中文、特殊字符、换行符都可能出问题。统一用 UTF-8,传输前做一次转义,能避免大部分诡异问题。
4.2 上下文膨胀与记忆管理
Agent 跑久了上下文越来越长,最后要么超限报错,要么响应变慢、质量下降。这是多 Agent 系统的通病。
我的处理策略是分层记忆。短期记忆保留最近几轮对话,中期记忆存关键结论,长期记忆落到外部存储按需检索。每个 Agent 只加载跟自己相关的记忆,不加载全局历史。
还有一个技巧是"结论压缩"。让每个 Agent 在完成任务后,输出一段不超过 100 字的结论摘要,后续 Agent 只读摘要不读全过程。这样上下文能控制在很小的规模。
4.3 死循环与无限重试
协商模式最容易死循环,流水线模式则容易无限重试。共同点是缺少终止条件。
我的做法是给每个环节设置"最大尝试次数"和"超时时间"双保险。重试超过 3 次就跳过或降级,超时超过 30 秒就中断。同时记录每次重试的原因,方便事后分析是提示词问题还是模型能力问题。
| 常见问题 | 典型表现 | 排查方向 | 解决手段 |
|---|---|---|---|
| 通信失败 | 下游解析报错 | 格式、字段、编码 | 强制结构化输出、共享 schema |
| 上下文膨胀 | 响应变慢、超限 | 记忆未裁剪 | 分层记忆、结论压缩 |
| 死循环 | 反复重试不收敛 | 缺终止条件 | 最大轮次、超时、降级 |
| 错误传播 | 越往后越离谱 | 缺校验节点 | 关键节点插校验 Agent |
| 成本失控 | 账单异常增长 | 调用次数过多 | 缓存、并行、精简 Agent 数 |
4.4 独家避坑经验
第一个经验:先跑通两个 Agent 的最小闭环,再往上加。我见过太多人一上来就设计七八个 Agent 的复杂系统,结果调试到崩溃。两个 Agent 能稳定协作,再加第三个,逐步演进。
第二个经验:给每个 Agent 写"单元测试"。准备一批固定输入,看输出是否符合预期。这样改提示词或换模型时,能快速回归验证,不至于改一处崩一片。
第三个经验:日志要记全。每次 Agent 调用的输入、输出、耗时、token 数都要落盘。出问题时这些日志就是你的救命稻草,没有日志的多 Agent 系统基本没法维护。
第四个经验:别迷信框架。很多多 Agent 框架封装得很厚,出问题时你根本不知道底层发生了什么。我倾向于先用最朴素的方式手写编排逻辑,把通信和状态管理搞明白,再考虑要不要引入框架。
5. 面试表达的结构化建议
5.1 用"场景-选型-权衡"三段式回答
面试被问到多 Agent 架构,别一上来就背定义。用三段式:先说一个具体场景,再说你选了什么架构,最后说为什么这么选、放弃了什么。
比如:"我之前做过一个内容审核系统,任务分初审、复审、终审三个阶段,步骤固定,所以我选了顺序流水线。它的好处是每步可独立测试,坏处是延迟叠加,为了缓解我在初审后加了快速过滤,把明显合规的内容直接放行,只有疑似内容才走完整流程。"
这样回答,面试官能同时看到你的场景理解、选型逻辑和优化意识。
5.2 主动暴露踩过的坑
面试里主动讲踩坑经历,比只讲成功经验更能建立信任。比如你可以说:"我一开始用对等协商做客服,结果两个 Agent 经常互相推诿,后来改成层级调度,主管直接拍板,效率高了很多。"
这种"试错-调整"的叙述,传递的是你有真实判断力,而不是只会照搬方案。
5.3 把架构图和调用链讲清楚
如果面试允许画图,一定要画。一张清晰的 Agent 拓扑图,胜过千言万语。画的时候标清楚:每个 Agent 的职责、数据流向、触发条件、异常处理路径。讲的时候沿着数据流走一遍,面试官跟着你的思路就能理解整个系统。
不画图的话,就用语言把调用链描述清楚:"用户请求进来,先到主管 Agent,主管判断类型后分发给专家 A,专家 A 调用工具拿到数据,返回给主管,主管整合后输出。"这种线性叙述,比抽象描述好懂得多。
多 Agent 系统这道题,考的不是你记住了几种架构的名字,而是你有没有在真实约束下做过取舍。把这四种架构的适用边界、成本特征、踩坑经验讲透,基本就能拿下这类面试题。我个人的体会是,面试官最看重的往往不是你知道多少,而是你对自己不知道的部分有多清醒。