多智能体调试为什么这么难:先从可观测性下手

2026-07-28

数据截至 2026-07,价格与限额以各官网为准。

多智能体系统难调,根子不在模型不够聪明,而在于运行过程默认是不可见的:一次任务里有多少次模型调用、每次拿到了什么输入、状态在哪一步被改写、错误从哪个 agent 开始扩散,这些信息如果没有被主动记录下来,事后就再也拿不回来。所以调试多智能体的第一步不是改 prompt,而是先把可观测性建起来——让每一次运行都留下可回看的痕迹。

常见的误解是:既然单个 agent 我调得挺顺,那多接几个 agent 无非是多写点编排代码。实际情况恰恰相反——单 agent 出错时,你至少能一眼看到”输入是什么、输出是什么”;多 agent 出错时,你看到的往往只是最后一个 agent 吐出来的一段离谱结论,中间三四轮传递过什么、谁把话说歪了,全在框架内部消化掉了。难度不是线性叠加,而是因为可见度骤降而变陡。

一、调试难的四个具体来源

先把”难”拆开。这里列四条,都是能对应到具体动作的:

第一,非确定性让复现失效。 同样的输入跑两次,模型的措辞、工具调用顺序、甚至是否触发某个分支都可能不一样。传统软件调试的地基是”稳定复现”,这块地基在多智能体里直接塌了。你必须把单次运行的完整痕迹留下来,因为那一次很可能再也复现不了。

第二,状态藏在框架内部。 多智能体系统的核心是”谁在什么时候拿到了什么上下文”。但这份上下文通常由框架代管——拼接、裁剪、摘要都在你看不见的地方发生。等你怀疑”是不是它没看到那份资料”时,已经没有证据可查了。

第三,错误会跨 agent 传播并被改写。 上游 agent 编了一个不存在的字段,下游 agent 不会报错,它会礼貌地接着往下推理,甚至把这个错误包装得更像模像样。最终失败点和最初错误点之间常常隔着好几跳,只看终点定位不到起点。

第四,成本与延迟没有归因。 账单涨了、响应变慢了,你却说不出是哪个 agent、哪一轮循环吃掉的。没有分摊口径,优化就变成了瞎猜。

这四条里,前三条决定”能不能查清楚”,第四条决定”能不能优化”。它们共同指向同一件事:先有观测,再谈调试。

二、动手之前先确认:你真的需要多智能体吗

这一条值得放在所有技术方案之前。多份 2026 年的第三方实战对比里都提到一个反直觉但很实在的提醒:当单个 agent 只需要调用一两个工具时,直接用 OpenAI Agents SDK 或 Anthropic Claude Agent SDK 往往是更快的路径——你可能根本不需要一个多智能体框架。

很多”调试地狱”是自找的:任务本身只是”检索一下再总结一下”,却被拆成研究员、分析师、审稿人三个角色互相传话,于是凭空多出两跳不可见的中间过程和两份额外的 token 开销。判断标准很朴素:如果你说不清多出来的那个 agent 具体消除了什么风险、承担了什么单独的职责,那它大概率只是在增加故障面。

想搞清楚 agent 内部那圈”想—做—看”的循环是怎么转的,可以先看 ReAct 是什么?AI Agent 的「思考-行动-观察」循环;框架层面的横向选型可以参考 主流 AI Agent 框架对比

三、三种架构,三种调试手感

确实需要多智能体之后,架构选择会直接决定你后面调试时的体感。三个常被拿来对比的框架,抽象模型各不相同(以下架构描述来自多篇第三方对比整理,具体能力以各项目官方文档当前版本为准):

  • LangGraph 用有向图建模:节点是函数或模型调用,边定义控制流,状态以带类型的字典在节点之间传递。它的好处对调试很关键——状态是一等公民,你有明确的位置去打印、断言、落盘。
  • CrewAI 用角色队建模:一队有明确分工的 agent(比如研究员→写手→审稿),可以串行也可以并行。流程线性时读起来非常直观,调试主要是看”这一棒交给下一棒时带了什么”。
  • AutoGen / AG2 用对话建模:agent 之间互相交谈达成结论,对话模式最丰富,在多方辩论、达成共识以及代码生成与调研类任务上有其长处。代价是,调试对象变成了一段多方对话记录,需要读的东西天然更多。

某次公开的实测对比给出的排序是:学习曲线上 CrewAI 最平缓、LangGraph 最陡;控制力和生产成熟度上 LangGraph 最强;token 效率上 LangGraph 最好、AutoGen 开销最大;生态规模上 LangGraph 最大。这是第三方单次评测的口径,不是官方结论,你可以拿它当参考坐标,但别当成板上钉钉的排名。

对调试影响最直接的是循环:带反馈环的循环任务上 LangGraph 更占优;CrewAI 技术上支持循环,但调试起来比较痛苦。 如果你的流程里有”审稿人打回去重写、最多重试三次”这类结构,选型时要格外重视这一点。

四、可观测性最小三件套

不管用哪个框架,下面三样东西是通用的、也是最低配置。三件套齐了,多数问题从”查不动”变成”能查”。

第一件:完整执行轨迹(trace)。 每一次模型调用、每一次工具调用,都记一条结构化日志。至少包含:运行 ID、所属 agent、步骤序号、时间戳、输入摘要、输出摘要、耗时、token 用量、是否报错。关键是同一次任务共享一个 run_id,否则日志散在各处,拼不出因果链。

{
  "run_id": "r-20260728-0031",
  "step": 4,
  "agent": "researcher",
  "action": "tool_call",
  "tool": "search_docs",
  "input_digest": "查询:季度退货率口径",
  "output_digest": "命中3条,首条相关度偏低",
  "latency_ms": 1840,
  "tokens_in": 2180,
  "tokens_out": 260,
  "error": null
}

不用一上来就上专门的观测平台,先把这份结构化日志写进文件或数据库,已经能解决大半问题。

第二件:关键节点的状态快照。 在每个 agent 交接的位置,把当时传下去的完整上下文原样落盘一份(注意脱敏)。这一步很多人嫌重,但它是回答”它到底看见了没有”的唯一证据。当你怀疑下游 agent 没读到某份资料时,快照能一秒钟给出答案,否则只能靠反复重跑碰运气。

第三件:token 与成本按 agent 归因。 把每一条 trace 的 token 数按 agent、按步骤类型聚合起来,你会很快看到钱花在哪儿——常见的发现是某个角色的系统提示词太长、每轮都重复送一遍,或者某个循环没设上限空转了好几圈。这块的具体做法可以配合 Token 用量统计怎么做Token 成本优化 一起看。

补充一个实操建议:给每次运行的输入也留一份存档。前面说过非确定性让复现失效,但至少要保证”输入是可复现的”,否则连重跑的起点都对不齐。

五、能借的框架原生能力先借

自建三件套是底线,但框架自带的能力能省不少事。

LangGraph 侧,它提供 checkpointing、streaming、human-in-the-loop 这几类原语,并支持持久化的长时运行工作流。这三样对调试的意义分别是:checkpointing 让你能从中间某一步恢复,而不是每次从头跑一遍烧钱;streaming 让你在运行过程中就看到中间输出,不用干等最终结果;human-in-the-loop 让你能在关键岔路口人工介入并观察后续走向。这些能力本来是为生产可靠性设计的,实际上顺手解决了很大一块调试成本。

CrewAI 侧,有一个更新常被旧文章漏掉:CrewAI 在 2025 年加入了 Flows,一种事件驱动的 pipeline 模式,面向更可预测的生产型负载。 多数较早的对比文章没有覆盖这一点,所以别沿用”CrewAI 只适合做原型”的旧结论。从调试角度看,事件驱动意味着流转边界更明确,比一团角色自由发挥更容易插桩观察。

AutoGen 侧,有一条选型时必须知道的现状:根据多篇第三方实战文章的说法,微软已把重心转向更大的 Agent Framework,AutoGen 的主要新功能开发已经停止,进入维护模式——仍有 bug 修复和安全补丁,社区也在寻找替代方案。有实践者据此认为,2026 年不适合把它作为新项目的起点。需要说清楚的是:这不等于它不能用了,存量项目不必恐慌迁移;但如果你正在为一个新系统的长期可观测性做打算,工具链后续会不会继续演进,是要算进去的一项。这些说法来自第三方对比文章,各项目的实际维护状态请以官方仓库与文档当前公告为准。

六、跨系统边界上的观测

多智能体很少只在一个进程里打转,它常常要连外部工具和别人家的 agent,而边界正是最容易丢失可见度的地方。

工具接入这一侧,MCP 已经是比较通行的做法,把工具调用的入参出参统一记录下来,比每个工具各写一套日志省事得多,相关背景可以看 MCP 协议是什么。agent 之间互相调用这一侧,A2A 是另一条线:CrewAI 已加入 A2A 支持;另有 OpenAgents 声称自己是唯一原生同时支持 MCP 与 A2A 的框架——“声称”两个字要保留,这条说法未经独立核实,别拿它当采购依据。协议层的生态对比可以参考 Agent 协议生态对比

实操上,跨边界时要盯住两件事:一是把 run_id 透传下去,让外部调用的日志能和本地轨迹对上;二是对外部返回值做结构校验并记录校验结果,别等错误数据流进下游 agent 才发现。

七、诚实说说局限

有几点不该被夸大。

可观测性解决的是”看得见”,不直接解决”做得对”。轨迹全了,你依然要自己判断某一步的推理是不是合理,这部分目前没有自动化捷径。

日志和快照本身有成本:存储要钱,脱敏要人工,全量落盘还可能拖慢链路。合理做法是分级——出错的运行留全量,成功的运行只留摘要和采样。

还有一点,非确定性只能被”记录”,不能被”消除”。降低温度、固定随机种子、给流程加约束,都只是缩小波动范围,不要指望调到某个配置之后系统就完全稳定了。

最后,各框架的能力在持续变化。本文引用的排序和特性描述来自 2026 年的第三方实战对比,写作时点之后可能已有更新,做正式选型前请以各项目官方文档当前版本为准。

小结

多智能体调试难,本质是可见度问题,不是智力问题。动手之前先确认任务是否真的需要多个 agent,能用单 agent 加一两个工具解决的,别硬拆。真要上多智能体,先把轨迹、状态快照、token 归因这三件事做起来,它们比任何 prompt 技巧都更能缩短定位时间。框架自带的 checkpointing、streaming、human-in-the-loop 与事件驱动 pipeline 能省下不少自研工作,选型时把”调试友好度”和”维护活跃度”一起算进去。剩下的,交给耐心和一份能回看的日志。

接下来看什么

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。