const team = oma.createTeam('api-team', { agents })// one call: goal → task DAG → resultconst result = await oma.runTeam(team,"为待办事项列表构建一个 REST API。请完成:\n1. 设计数据模型与 API 路由\n2. 实现 CRUD 接口\n3. 为这些接口生成测试套件\n4. 对实现进行安全审查",)
一个智能体运行时,不是图构建器。
目标优先,而非图优先。你描述想要的结果;拆解、并行与综合都交给 OMA。
你传入的是目标,不是图。协调器把它拆解成任务 DAG,并行运行相互独立的节点,并综合出最终结果。
每个智能体各自指定模型,在同一个团队里协作。内置提供方涵盖 Anthropic、OpenAI、Gemini、Bedrock、Azure OpenAI 和 DeepSeek(共 13 个),还支持任何兼容 OpenAI 的端点。
智能体只拥有被授予的工具。Model Context Protocol 服务器在同样的按需授权约定下,把外部系统暴露给智能体。
在 DAG 逐步填充时流式输出 token 和节点状态变化,或在运行结束时取回一个带类型、经 schema 校验的对象。
一份 thinking 配置,映射到 Anthropic 的 thinking、Gemini 的 thinkingConfig 和 OpenAI 的 reasoning_effort。推理以事件形式流式输出,开启后还能在切换提供方时保留。
import { OpenMultiAgent, type AgentConfig } from '@open-multi-agent/core'const agents: AgentConfig[] = [{ name: 'architect', model: 'claude-sonnet-4-6', tools: ['file_write'] },{ name: 'developer', model: 'claude-sonnet-4-6', tools: ['bash', 'file_read', 'file_write', 'file_edit'] },{ name: 'reviewer', model: 'claude-sonnet-4-6', tools: ['file_read', 'grep'] },]const oma = new OpenMultiAgent({ defaultModel: 'claude-sonnet-4-6' })const team = oma.createTeam('api-team', { name: 'api-team', agents })// coordinator plans the DAG, runs independents in parallel, synthesizesconst result = await oma.runTeam(team, 'Create a REST API for a todo list')
为生产环境而生。
把真实工作交给自主智能体,会引出三个合理的问题:它们会不会失控、烧光预算、或在你看不见的地方失败?每一个问题,API 里都有答案。
在任何智能体运行前先审视计划——用 onPlanReady,再用 onApproval 逐轮审批。一次提议者→评审(runConsensus)让一个智能体检查另一个的输出,循环检测则会在某个智能体开始原地打转时将其叫停。
用 modelRouting 把规划交给旗舰模型、把叶子任务交给便宜模型。maxTokenBudget 给一次运行的花费设上限——一旦越界,编排器就停止发起调用,而不是把账单越垒越高。
用 onTrace 把每一次 LLM 和工具调用流式发送到你的链路追踪栈,或在运行结束后打开一个自包含的 HTML 仪表盘(oma run --dashboard)。检查点能让崩溃的运行从最后一个已完成任务处恢复,密钥则会以尽力而为的方式从追踪和仪表盘中脱敏。
三个值得动用一个团队的工作流。
每一个都是单一目标,且能从并行、多模型的拆解中获益——这正是协调器擅长的。
与你的技术栈协同。
OMA 与你后端里已有的提供方、协议和服务器组合使用——没有要迁移过去的平台。
已经在真实世界里运行。
开源、MIT 许可,项目与集成的生态在持续生长。Star、fork 和贡献者数量在构建时直接读自仓库。
讲机制,不讲营销。
运行时究竟如何表现。完整参考在文档里。