简介:本文系统讲解多智能体系统的定义与核心构成,拆解任务分解、子Agent委派、审查链等关键机制,分析一个任务消耗数十亿Token的失控过程,并给出层级限制、状态共享、预算熔断等治理方法,帮助开发者构建Agent应用时兼顾协作效率与运行成本。
多智能体系统(Multi-Agent System,MAS)是指由多个具备自主感知、规划与执行能力的智能体,通过任务分解、委派、协作与审查等机制共同完成复杂任务的软件架构。在大模型落地场景中,它通常表现为:一个根Agent接收用户需求,将需求拆解为若干子任务,再派发给一个或多个子Agent执行;执行结果可能被交给专门的审查Agent校验,最终汇总为完整交付物。
可以从三个视角理解这个概念:
但这个定义还隐藏着另一半:多智能体系统同时也是一套“消耗结构”。每创建一个Agent,就多一份上下文初始化、工具调用与结果回传的开销;每增加一层审查,就多一轮信息复制。Token账单不是线性增长的,而是随委派树的深度与宽度近似指数式膨胀——这正是本文要展开的核心问题。
单Agent循环(一个模型在一个会话里连续思考、调用工具、自我修正)在简单任务上表现良好,但面对复杂任务会遇到三堵墙:
多智能体系统的设计动机正是翻越这三堵墙:拆分子任务可以缩短每个Agent的上下文;分离执行与审查角色可以形成制衡;并行派发可以提升吞吐。此外,“生成者与校验者分离”借鉴了人类工程实践中的四眼原则——写的人不审,审的人不写。
然而价值与风险同源。一套为“分工与制衡”而生的机制,如果没有配套的约束与治理,就会演变为“无限分工与无限制衡”。某开发者公开过一个典型案例:一个任务最终消耗了约54亿Token,其中53个Agent在做审查类工作,同一条单元测试命令被独立执行了13遍,某个审查子树独自膨胀出39个Agent、消耗32.6亿Token。而人工介入后——直接告诉根Agent“不要再创建子Agent,剩余工作在当前会话完成”——剩下的工作在3小时15分钟内干完,新增Token消耗不足此前总量的百分之二。
这个案例说明:多智能体系统要解决的问题是真实的,但它引入的新问题(失控与浪费)同样真实。理解这个系统,一半在理解它如何协作,另一半在理解它如何失控。
一个典型的多智能体系统由五类部件构成:
第五点需要特别强调:共享状态层在多数实现中是最薄弱的一环。上述案例中同一条测试命令被跑13遍,正是因为12个Agent各自独立地判断“我需要确认一下”,而没有任何机制告诉它们“别人已经跑过了”。缺失共享状态的多智能体系统,本质是N个互不知情的独立承包商,而不是一个团队。
委派树的每一次“局部决策”都合理,失控发生在全局层面。过程如下:
任务 → 根Agent拆解 → 子Agent执行 → 触发审查 → 审查Agent觉得不放心 → 拉起二次确认 → 二次确认发现问题 → 触发修复 → 修复完再审查 → 再修复 → ……
把它抽象为伪代码,问题会看得更清楚:
# 失控版本的委派逻辑(示意)def delegate(task):result = execute(task)if not confident(result): # 置信度判据是主观的review = create_review_agent()verdict = review.run(result)if verdict.has_issues:fix = create_fix_agent() # 修复又可能触发新的审查return delegate(fix.run()) # 递归,且无深度上限return result
三个结构性缺陷在代码里一目了然:
于是每个Agent都在“正确地做事”——审查者认真审查、修复者认真修复、确认者认真确认——但没有人负责“把事做对”:没有角色对“这件事是否已经足够好、是否值得再花一轮Token”做最终裁决。局部理性叠加成全局非理性,这正是失控型系统的共同病理。其代价也随之可量化:重复执行(同一命令跑13遍)、链式审查(39个Agent的子树)、上下文复制(每个新Agent都要重新装载任务背景)。
适合使用多智能体系统的场景:
不适合或需谨慎的场景:
一个常见的翻车案例正属于第二种:两个Agent一个写一个审,配置看起来互相制衡,跑完双方都报告完成,审查者还回复了一句“看起来没问题”,实际产物中异常只被打印未处理、数据库连接未设超时、还存在多处合并冲突。换更强的模型、反复修改提示词都难以根治——因为问题不在模型或提示词,而在架构:没有人对“整体正确”负责。
结合上文病理,治理手段应当对症:
示意性的受控委派逻辑如下:
MAX_DEPTH = 1MAX_REVIEW_ROUNDS = 1def delegate(task, depth):if depth >= MAX_DEPTH:return execute_in_current_session(task) # 不再委派,就地执行if budget.exceeded or agent_count >= CAP:return escalate("请求人工裁决或降级为单会话")result = run_with_shared_cache(task) # 先查黑板,避免重复劳动issues = review(result, rounds=MAX_REVIEW_ROUNDS)if issues:result = fix(result, issues)return accept(result) # 独立验收,而非自评
回到定义本身:多智能体系统是用任务分解与角色协作来突破单会话能力边界的架构。它的价值在于并行、专注与制衡;它的风险在于委派树的递归性、状态割裂与审查不收敛。一句话概括其成本规律:多智能体系统中最昂贵的资源不是模型本身,而是“Agent觉得还需要再确认一下”的那一瞬间。
判断该不该用它,可以用一个朴素标准:任务能否拆成边界清晰、彼此独立、验收可量化的子任务。治理它,则记住三条底线——限制层级、共享状态、给每一次“再确认”标价。做到这三条,多智能体系统才是一支团队;做不到,它就是一台以局部理性为燃料的Token焚烧炉。