动态编排与显式编排
runTeam() 从目标生成任务 DAG,runTasks() 运行你定义的任务图,runAgent() 则覆盖单智能体场景。
CrewAI 在 Python 中按角色与流程组织智能体;open-multi-agent 在 TypeScript 中支持动态与显式任务 DAG。主要差别是语言与编排模型。
你在 Python 中,需要基于角色的 crew、内置记忆与 RAG,以及 CrewAI 的现有集成。
你的后端是 TypeScript,想要一个精简内核(三个依赖)、目标驱动的拆解,以及硬性 token 预算。
| 维度 | open-multi-agent | CrewAI |
|---|---|---|
| 语言 / 运行时 | TypeScript 原生,可嵌入任意 Node.js 18+ 后端 | 仅 Python(3.10+);无官方 TypeScript 移植 |
| 编排范式 | 三种模式:单智能体、显式任务 DAG,或由协调器在运行时拆解目标 | 基于角色的 crew,在顺序或分层 process 下运行 |
| 运行时依赖 | 3 个直接依赖(Anthropic SDK、OpenAI SDK、Zod),额外提供方与 MCP 为按需 peer 依赖 | 约 30 个直接依赖,另有大量可选 extras |
| 模型混编 | 支持,同一个团队里的每个智能体都可使用各自的云端或本地模型 | 支持,按智能体设 llm=(原生 SDK,其余走 LiteLLM) |
| 运行预算控制 | 通过 maxTokenBudget 设置 token 上限,或通过 maxCostBudget 与应用自有的 estimateCost 价格表设置估算美元上限 | 无硬上限,max_rpm / max_iter 限制 + 事后用量统计 |
| 可观测性 | TraceRecord v2 + TraceStore、可选的一方 OTel 适配器,以及离线的运行后 Run Viewer | 原生事件总线;转发到 Langfuse / OpenLIT / MLflow 等 |
OMA 不只是目标拆解与少量依赖。以下均为项目 README 已记录的当前框架能力。
runTeam() 从目标生成任务 DAG,runTasks() 运行你定义的任务图,runAgent() 则覆盖单智能体场景。
计划可检查、可审批,也可冻结为数据后重放。结果可用 Zod 校验,还支持按智能体流式输出、取消运行,以及提议者与裁判组成的共识校验。
调度器并行运行互不依赖的分支。任务重试与检查点让中断的运行恢复时不重复已完成任务。
通过轮次、token、估算成本、超时、上下文与循环控制限制工作量。工具默认拒绝授权,链路数据默认脱敏敏感信息。
运行在你自己的 Node.js 后端、本地、离线或气隙环境中。同一团队可混用云端与本地模型,并可接入 MCP 工具及 ACP 或进程后端的外部智能体。
稳定运行标识、TraceStore,以及离线 DAG 与 Waterfall Viewer 均不依赖托管服务。可选 OTel 适配器与 EvalSet 可把运行接入生产遥测和 CI 门禁。
CrewAI 围绕扮演角色的智能体来组织工作,把它们编成一个顺序或分层运行的 crew,并内置记忆与 RAG。open-multi-agent 则把目标交给协调器,让它在运行时把目标拆解成任务 DAG,并行运行相互独立的任务。两者的编排能力面大致相当;决策主要在语言栈,Python 还是 TypeScript,以及你想要多精简的依赖足迹(CrewAI 拉入约 30 个直接依赖,OMA 是三个)。
当 Python 项目需要基于角色的 crew、顺序或分层流程、内置记忆与 RAG,以及现有集成时,CrewAI 合适。这些内置能力也会带来更大的依赖规模。
CrewAI 的 GitHub↗open-multi-agent 适合你的后端是 TypeScript、且想一直待在这里的场景,无需在 Node 应用旁再立一个 Python 服务。内核刻意做得很小(三个运行时依赖;额外提供方与 MCP 仅在你按需启用时才加载),协调器从目标出发规划工作,maxTokenBudget 则给你一道会中止运行的硬性花费上限。
open-multi-agent 采用 MIT 许可、可自行免费运行。当你需要在期限内交付、集成,或获得支持时,元定义科技(YuanASI)提供商业交付与支持。