// TypeScript 多智能体编排

从目标到任务 DAG,自动完成。

3 个运行时依赖·任意模型·随处运行
快速开始
输入 · team.ts目标
runTeam()
const team = oma.createTeam('api-team', { agents })
 
// one call: goal → task DAG → result
const result = await oma.runTeam(
team,
"为待办事项列表构建一个 REST API。请完成:\n1. 设计数据模型与 API 路由\n2. 实现 CRUD 接口\n3. 为这些接口生成测试套件\n4. 对实现进行安全审查",
)
拆解为
#51404b86
设计数据模型与API路由
状态:完成 (3.9s)
architect 稳定
#9b326aae
实现CRUD接口
状态:完成 (13.0s)
developer 稳定
并行
#faeee9c4
生成测试套件
状态:完成 (39.4s)
developer 稳定
#158a577a
安全审查
状态:完成 (16.3s)
reviewer 稳定
真实 runTeam() · deepseek-v4-flash · 4 个任务 · 85s
01 工作原理

一个智能体运行时,不是图构建器。

目标优先,而非图优先。你描述想要的结果;拆解、并行与综合都交给 OMA。

01目标驱动的协调器

你传入的是目标,不是图。协调器把它拆解成任务 DAG,并行运行相互独立的节点,并综合出最终结果。

02在一个团队里混用任意模型

每个智能体各自指定模型,在同一个团队里协作。内置提供方涵盖 Anthropic、OpenAI、Gemini、Bedrock、Azure OpenAI 和 DeepSeek(共 13 个),还支持任何兼容 OpenAI 的端点。

03工具与 MCP,默认拒绝

智能体只拥有被授予的工具。Model Context Protocol 服务器在同样的按需授权约定下,把外部系统暴露给智能体。

04流式与结构化输出

在 DAG 逐步填充时流式输出 token 和节点状态变化,或在运行结束时取回一个带类型、经 schema 校验的对象。

05跨提供方推理

一份 thinking 配置,映射到 Anthropic 的 thinking、Gemini 的 thinkingConfig 和 OpenAI 的 reasoning_effort。推理以事件形式流式输出,开启后还能在切换提供方时保留。

team.ts
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, synthesizes
const result = await oma.runTeam(team, 'Create a REST API for a todo list')
一次调用
整个 DAG 解析完成时 runTeam() 才返回——无需手工接线节点,也没有调度器要维护。
02 可靠性

为生产环境而生。

把真实工作交给自主智能体,会引出三个合理的问题:它们会不会失控、烧光预算、或在你看不见的地方失败?每一个问题,API 里都有答案。

不会失控
你始终在掌控之中

在任何智能体运行前先审视计划——用 onPlanReady,再用 onApproval 逐轮审批。一次提议者→评审(runConsensus)让一个智能体检查另一个的输出,循环检测则会在某个智能体开始原地打转时将其叫停。

不会烧光预算
把钱花在刀刃上

modelRouting 把规划交给旗舰模型、把叶子任务交给便宜模型。maxTokenBudget 给一次运行的花费设上限——一旦越界,编排器就停止发起调用,而不是把账单越垒越高。

调试任意一次运行
检查、回放、恢复

onTrace 把每一次 LLM 和工具调用流式发送到你的链路追踪栈,或在运行结束后打开一个自包含的 HTML 仪表盘(oma run --dashboard)。检查点能让崩溃的运行从最后一个已完成任务处恢复,密钥则会以尽力而为的方式从追踪和仪表盘中脱敏。

运行后仪表盘正在回放一次已完成的团队运行:任务 DAG,标注每个节点的承担者、状态、token 拆解,以及智能体输出日志。
而当真的出岔子时,每一次运行都能渲染出一个可审计的仪表盘——任务 DAG、每个节点的承担者与状态、token 拆解,以及智能体的输出日志。 可观测性
04 集成

与你的技术栈协同。

OMA 与你后端里已有的提供方、协议和服务器组合使用——没有要迁移过去的平台。

提供方
Anthropic、Gemini、OpenAI、Bedrock、Azure、DeepSeek——或任何兼容 OpenAI 的端点
13 个内置
MCP
把 Model Context Protocol 服务器作为工具接入
原生
Vercel AI SDK
桥接 60+ 个 AI SDK 提供方与平台
兼容
Express
把 runTeam() 挂在一个路由处理器后面
即插即用
任意 Node.js
没有守护进程,没有 sidecar——三个运行时依赖
Node 18+
06 常见问题

讲机制,不讲营销。

运行时究竟如何表现。完整参考在文档里。

协调器智能体会规划工作:把目标拆成一个个离散任务,推断它们之间的依赖,并产出一张有向无环图。相互独立的节点并发运行;有依赖的节点等待各自的输入。传入 planOnly 即可在任何智能体执行前审视这张 DAG。
可以。每个智能体声明自己的模型,所以一个团队可以混用前沿云端模型、自托管端点和本地 Ollama 实例。协调器把每个任务路由给指派的智能体——也就因此路由给对应的模型。
默认拒绝。智能体只拥有它在 tools 数组里显式列出的工具,其余一律不可用。外部系统通过 MCP 服务器接入,遵循同样的按需授权约定。
失败的节点会按其策略重试;持续失败会以 FAILED 状态加一条错误显示在该节点上,下游依赖被挂起。DAG 的其余部分继续运行,所以一次失败不会让整次运行中止。
分层控制,全部可选开启。onPlanReady 把拆解出的计划交给你,在任何智能体运行前审视;onApproval 为每一轮把关;返回 false,剩余任务就被跳过。runConsensus 加一道提议者→评审检查,必须由第二个智能体认可;循环检测则会在某个智能体不断重复同一次工具调用或输出时将其叫停。
两个杠杆。modelRouting 把规划和综合交给旗舰模型,叶子任务跑在更便宜的模型上,于是只在关键处付前沿模型的价。maxTokenBudget 是累计 token 的硬上限:一旦越界,编排器就停止发起调用、跳过剩余任务,而不是把账单越垒越高。
都支持。你可以在 DAG 逐步填充时流式输出 token 和节点状态变化,也可以直接 await runTeam(),在图解析完成后拿到一个带类型、经 schema 校验的结果对象。
查看全部问题
// 被提及
A brilliant TypeScript-native multi-agent orchestration framework.
GithubAwesome · 58K subscribers · GitHub Trending Monthly #6
在 YouTube 观看——GithubAwesome 的 GitHub Trending Monthly #6,画面停在 open-multi-agent 的 GitHub 仓库(6k stars)。
// 开始上手

从一个目标开始。
让团队自己想清楚要做什么。

快速开始