说实话,近年来多Agent框架确实热度高涨,各大厂商纷纷推出自家解决方案。蚂蚁集团CodeFuse团队推出的muAgent[1],核心设计思路十分清晰——其目标在于将Agent的SOP(标准操作程序)编排过程变得简单、高效,降低开发门槛。
要让多Agent体系真正发挥作用,关键在于Agent之间的交互与协作链路,而这恰恰是实现SOP编排的难点所在。核心问题归结为一点:上一个Agent输出的结果,如何准确传递给下一个Agent作为输入?这其中涉及大语言模型(LLM)的输出控制、具体Action的执行、信息解析与传递——每个环节都是不小的挑战。
架构
muAgent集成了一套功能完善的组件:工具库、代码库、知识库,外加沙盒环境。这意味着用户几乎可以在任意业务领域快速构建复杂的多Agent交互应用。借助该框架,处理那些多层次、多维度的复杂任务将变得更加顺畅高效。
这是它的架构图:
各技术模块拆解如下:
- Agent Base:提供四种基础Agent类型——BaseAgent、ReactAgent、ExecutorAgent、SelectorAgent,基本覆盖了不同场景下的核心操作。
- Communication:通过Message与Parse Message完成Agent间的信息传递,同时与Memory Manager协同,在Memory Pool中实现记忆管理。
- Prompt Manager:借助Role Handler、Doc/Tool Handler、Session Handler、Customized Handler等模块,自动生成个性化Agent Prompt。
- Memory Manager:负责聊天历史记录的存储管理、信息压缩以及记忆检索,最终通过Memory Pool落地到数据库、本地存储或向量数据库。
- Component:用于构建Agent的各种生态组件——Retrieval、Tool、Action、Sandbox等。
- Customized Model:支持接入私有化的大语言模型(LLM)和Embedding模型。
构建完整的多Agent生态需要具备哪些能力?归根结底,不外乎以上几大核心模块。
Agent Base
在Agent层面,四种基础类型各有明确分工。通过为它们设定不同的Role,便可适配多种通用业务场景。所有Action操作均由Agent负责执行。
- BaseAgent:基础能力扎实,能够胜任问答、工具调用、代码执行等常见任务。
- ReactAgent:遵循标准React流程——遇到问题时按既定反应逻辑从容应对。
- ExecutorAgent:任务清单的顺序执行者。用户或上游Agent制定计划后,它会按顺序逐步完成。
- SelectorAgent:负责智能选择——根据用户或上游Agent的问题,挑选最合适的Agent来响应需求。
与AutoGen进行横向对比,整体思路相似,但muAgent的粒度划分更加清晰。特别是在Agent编排方面,有专门的Agent负责;同时ReAct功能也被单独抽取为独立Agent。初步来看,在ReAct支持上,muAgent确实比AutoGen更有优势。
Component
辅助生态组件的设计更为细致。与AutoGen不同,muAgent的Sandbox支持隔离特性——这使得整个辅助生态的能力进一步增强。
Communication
多Agent的核心在于Agent之间的信息交互,因此Communication模块必不可少。AutoGen通过结转逻辑支持信息流转,而CodeFuse则采用独立的Communication组件来实现。从实现方式来看,CodeFuse的方案更为强大——AutoGen主要依赖一个summary_method方法来定义信息传递。
关键亮点在于:CodeFuse的Communication组件不仅承担信息传递职责,还在整个信息流转过程中参与了记忆管理、角色处理以及Prompt组装,实际上将多Agent协作的关键环节全部串联起来。
总结
此前对国内Agent框架了解有限——因为此类框架本身并不多见。从AutoGen入门多Agent,再回过头审视muAgent的实现,会发现一个有趣的现象:多Agent的SOP在当前版本中变得更加具体、更加模块化。话虽如此,底层思想依然一致——核心组成部件还是那几样。
因此,归根结底,如何协调好LLM并引导其输出预期结果?本质就是:将业务问题抽象出来,拆解为可执行的Prompt,使其像处理实际业务一样精准执行。至于业务的编排与执行,交由Agent完成,最终全部落地到LLM上。这条链路,才算真正打通。
