// 工作原理

OMA 的工作原理。

两张图,一套系统。一张是架构——OMA 的结构,也就是它是什么;另一张是流程——调用 runTeam() 时,按时间顺序发生了什么。

01 结构

架构。

自上而下五层:你调用的编排器、它协调的团队、负责调度工作的池与队列、真正干活的智能体,以及底层的适配器、运行器和工具接口。每个方框都与框架里的一个类型一一对应。

OMA 架构。OpenMultiAgent 是入口,拥有一个 Team,Team 持有一个 AgentPool 和一个 TaskQueue。Agent 通过 AgentRunner 的对话循环运行,并与 LLMAdapter 接口(多个提供方实现)和 ToolRegistry(defineTool 加 6 个内置工具)通信。
  • 强调色描边用户入口——你实例化的那个类。每张图里有且仅有一个。
  • 实线具体类型——只有一种实现的类:Team、AgentPool、TaskQueue、Agent、AgentRunner。
  • 虚线有多种实现的接口——LLMAdapter 提供方、ToolRegistry 工具。
  • 箭头拥有 / 包含——源端实例化或拥有目标端。自上而下读。
02 执行

一次 runTeam() 调用。

目标进,结果出。协调器把目标拆解成任务 DAG,让智能体并行扇出,通过 MessageBus 传递中间结果,并综合出最终答案。从左往右读——横轴是时间。

runTeam() 流程。一个目标拆解成四个任务;一个 architect 和两个 developer 并行运行,reviewer 通过 TaskQueue 依赖等待它们,MessageBus 连接各条轨道,最后综合出一个带类型的结果对象。
  • 纵向 = 哪个智能体每个智能体有自己的一条水平轨道,像乐谱里的一个声部。
  • 横向 = 什么时候对齐在同一个 x 上的轨道,在同一逻辑时刻运行;更早结束的轨道先完成。
  • reviewer 等待reviewer 向右偏移——它在 TaskQueue 里依赖 architect 和两个 developer。
  • message bus那条翠绿色虚线带,是任何智能体在执行期间都能发布和订阅的通道。
// 深入了解

从图到代码。