GitHub · 项目涌现

open-multi-agent/open-multi-agent

二〇二六年六月六日·★ 6,087·⑂ 2,348·TypeScript·MIT ·最新发布 v1.4.0 · 2026-05-09 · GitHub 原仓库

Open Multi-Agent 是 TypeScript multi-agent 编排框架,npm 包为 @open-multi-agent/core,Node.js >=18。它通过 coordinator 将目标拆解为 task DAG,支持并行任务、10 个内置 providers、Tools + MCP、streaming、Zod structured output、observability 和可插拔 shared memory,采用 MIT 协议。

open-multi-agent 是面向 TypeScript 后端的 multi-agent 编排框架。给它一个目标;coordinator agent 会将其拆解为 task DAG,并行化独立任务,并综合结果。三个 runtime dependencies,可接入任何 Node.js 后端。

**Package 更新:**官方 npm package 现在是 @open-multi-agent/core。 之前的 package @jackchen_me/open-multi-agent 在迁移窗口期仍会继续支持。

你的工程师描述目标,而不是描述图。

快速开始

需要 Node.js >= 18。

在你的项目中使用

npm install @open-multi-agent/core
import { OpenMultiAgent, type AgentConfig } from '@open-multi-agent/core'

const agents: AgentConfig[] = [
  { name: 'architect', model: 'claude-sonnet-4-6', systemPrompt: 'Design clean API contracts.', tools: ['file_write'] },
  { name: 'developer', model: 'claude-sonnet-4-6', systemPrompt: 'Implement runnable TypeScript.', tools: ['bash', 'file_read', 'file_write', 'file_edit'] },
  { name: 'reviewer', model: 'claude-sonnet-4-6', systemPrompt: 'Review correctness and security.', tools: ['file_read', 'grep'] },
]

const orchestrator = new OpenMultiAgent({
  defaultModel: 'claude-sonnet-4-6',
  onProgress: (event) => console.log(event.type, event.task ?? event.agent ?? ''),
})

const team = orchestrator.createTeam('api-team', { name: 'api-team', agents, sharedMemory: true })
const result = await orchestrator.runTeam(team, 'Create a REST API for a todo list in /tmp/todo-api/')

console.log(result.success, result.totalTokenUsage.output_tokens)

在本地运行一个示例

git clone https://github.com/open-multi-agent/open-multi-agent && cd open-multi-agent
npm install
export ANTHROPIC_API_KEY=sk-...
npx tsx examples/basics/team-collaboration.ts

三个 agent 协作开发一个 REST API,同时 onProgress 流式输出 coordinator 的 task DAG:

agent_start coordinator
task_start design-api
task_complete design-api
task_start implement-handlers
task_start scaffold-tests         // independent tasks run in parallel
task_complete scaffold-tests
task_complete implement-handlers
task_start review-code            // unblocked after implementation
task_complete review-code
agent_complete coordinator        // synthesizes final result
Success: true
Tokens: 12847 output tokens

通过 Ollama 使用本地模型不需要 API key,见 providers/ollama。对于托管 provider(OPENAI_API_KEYGEMINI_API_KEY 等),见 支持的 Providers。

三种运行方式

模式 方法 适用场景 示例
单个 agent runAgent() 一个 agent,一个 prompt basics/single-agent
自动编排的团队 runTeam() 给出目标,让 coordinator 规划并执行 basics/team-collaboration
显式 pipeline runTasks() 你定义任务图和分配关系 basics/task-pipeline

预览 coordinator 的 task DAG,而不执行 agent:

const plan = await orchestrator.runTeam(team, goal, { planOnly: true })

对于没有任务依赖的 MapReduce 风格 fan-out,直接使用 AgentPool.runParallel()。见 patterns/fan-out-aggregate

对于 shell 和 CI,使用 JSON-first 的 oma binary。见 docs/cli.md。

功能

能力 你将获得
目标驱动的 coordinator 一次 runTeam(team, goal) 调用。coordinator 将目标拆解为 task DAG,并行化独立任务,并综合结果。
在一个团队中混用 providers 内置 10 个:Anthropic、OpenAI、Azure、Bedrock、Gemini、Grok、DeepSeek、MiniMax、Qiniu、Copilot。通过 OpenAI-compatible 支持 Ollama / vLLM / LM Studio / OpenRouter / Groq。(完整设置)
Tools + MCP 6 个内置工具(bashfile_*grepglob),可选择启用的 delegate_to_agent,通过 defineTool() + Zod 定义自定义 tools,通过 connectMCPTools() 连接 stdio MCP servers。(tool 配置)
Streaming + structured output 每个 adapter 都支持逐 token streaming;最终答案由 Zod 验证,解析失败时自动重试。(structured-output)
Observability onProgress events、onTrace spans、运行后 HTML dashboard,用于渲染已执行的 task DAG。(observability 指南)
可插拔 shared memory 默认进程内 KV;通过实现 MemoryStore,可替换为 Redis / Postgres / 你自己的后端。(shared memory)

生产控制(context strategies、带 backoff 的任务 retry、loop detection、tool output 截断/压缩)见 Production Checklist。

示例

examples/ 按类别组织:basics、cookbook、patterns、providers、integrations 和 production。完整索引见 examples/README.md

真实工作流(cookbook/

你今天就可以运行的端到端场景。每个都是完整且有明确取向的工作流。

Patterns 和 integrations

使用 npx tsx examples/<path>.ts 运行任意脚本。

这和 X 有什么不同?

一个快速路由。下面是机制拆解。

如果你需要 选择
具备成熟 checkpointing 的固定生产拓扑 LangGraph JS
显式 Supervisor + 手工串接的 workflows Mastra
具备成熟 multi-agent 生态的 Python stack CrewAI
具备广泛模型 provider 支持的 AI app toolkit Vercel AI SDK
TypeScript,从目标到结果并自动任务拆解 open-multi-agent

vs. LangGraph JS。 LangGraph 将声明式 graph(nodes、edges、conditional routing)编译为可调用对象。open-multi-agent 运行一个 Coordinator,在 runtime 将目标拆解为 task DAG,然后自动并行化独立任务。目标相同(编排执行),方向相反:LangGraph 是 graph-first,OMA 是 goal-first。

vs. Mastra。 两者都是 TypeScript-native。Mastra 的 Supervisor pattern 要求你手工串接 agents 和 workflows;OMA 的 Coordinator 会在 runtime 根据目标字符串完成串接。如果 workflow 预先已知,Mastra 的显式性会带来好处。如果你不想枚举每一步,OMA 的 runTeam(team, goal) 只需一次调用。

vs. CrewAI。 CrewAI 是 Python 中成熟的 multi-agent 选项。OMA 面向 TypeScript 后端,只有三个 runtime dependencies,并可直接嵌入 Node.js。编排能力大致可比;选择取决于语言栈。

vs. Vercel AI SDK。 AI SDK 提供 LLM 调用层——provider 抽象、streaming、tool calls 和 structured outputs。它不编排目标驱动的 multi-agent teams。两者互补:AI SDK 用于 app 表层和 single-agent 调用,需要团队时使用 OMA。

生态

open-multi-agent 于 2026-04-01 以 MIT 协议发布。迄今已知用户和 integrations:

生产环境中

正在生产环境或个人项目中使用 open-multi-agent发起 discussion,我们会在这里列出。

Integrations

构建了 integration?发起 discussion 以便被列出。

Featured partner

面向与 open-multi-agent 深度集成的产品和平台。条款和申请方式见 Featured partner program。

架构

┌─────────────────────────────────────────────────────────────────┐
│  OpenMultiAgent (Orchestrator)                                  │
│                                                                 │
│  createTeam()  runTeam()  runTasks()  runAgent()  getStatus()   │
└──────────────────────┬──────────────────────────────────────────┘
                       │
            ┌──────────▼──────────┐
            │  Team               │
            │  - AgentConfig[]    │
            │  - MessageBus       │
            │  - TaskQueue        │
            │  - SharedMemory     │
            └──────────┬──────────┘
                       │
         ┌─────────────┴─────────────┐
         │                           │
┌────────▼──────────┐    ┌───────────▼───────────┐
│  AgentPool        │    │  TaskQueue             │
│  - Semaphore      │    │  - dependency graph    │
│  - runParallel()  │    │  - auto unblock        │
└────────┬──────────┘    │  - cascade failure     │
         │               └───────────────────────┘
┌────────▼──────────┐
│  Agent            │
│  - run()          │    ┌────────────────────────┐
│  - prompt()       │───►│  LLMAdapter            │
│  - stream()       │    │  - AnthropicAdapter    │
└────────┬──────────┘    │  - OpenAIAdapter       │
         │               │  - AzureOpenAIAdapter  │
         │               │  - BedrockAdapter      │
         │               │  - CopilotAdapter      │
         │               │  - GeminiAdapter       │
         │               │  - GrokAdapter         │
         │               │  - MiniMaxAdapter      │
         │               │  - DeepSeekAdapter     │
         │               │  - QiniuAdapter        │
         │               └────────────────────────┘
┌────────▼──────────┐
│  AgentRunner      │    ┌──────────────────────┐
│  - conversation   │───►│  ToolRegistry        │
│    loop           │    │  - defineTool()      │
│  - tool dispatch  │    │  - 6 built-in tools  │
└───────────────────┘    │  + delegate (opt-in) │
                         └──────────────────────┘

核心概念

支持的 Providers

修改 providermodel,并设置环境变量。agent config 的形状保持不变。

const agent: AgentConfig = {
  name: 'my-agent',
  provider: 'anthropic',
  model: 'claude-sonnet-4-6',
  systemPrompt: 'You are a helpful assistant.',
}
类型 如何配置 服务
内置 shortcuts provider 设置为 anthropicgeminiopenaiazure-openaicopilotgrokdeepseekminimaxqiniubedrock;框架会提供 endpoint。 Anthropic、Gemini、OpenAI、Azure OpenAI、GitHub Copilot、xAI Grok、DeepSeek、MiniMax、Qiniu、AWS Bedrock
OpenAI-compatible endpoints 设置 provider: 'openai',并根据需要设置 baseURLapiKey Ollama、vLLM、LM Studio、llama.cpp server、OpenRouter、Groq、Mistral

环境变量、模型示例、本地 tool-calling、timeouts 和 troubleshooting 见 docs/providers.md。

Production Checklist

上线前,请接入这些控制项,用于保护 token 开销、从失败中恢复,并便于调试。

关注点 开关 所在位置
限定 conversation 每个 agent 的 maxTurns + contextStrategysliding-window / summarize / compact / custom AgentConfig
限制 tool output maxToolOutputChars(或每个 tool 的 maxOutputChars)+ compressToolResults: true AgentConfigdefineTool()
从失败中恢复 每个 task 的 maxRetriesretryDelayMsretryBackoff(指数 multiplier) 通过 runTasks() 使用的 task config
硬性限制开销 orchestrator 上的 maxTokenBudget OrchestratorConfig
捕获卡住的 agents loopDetection 搭配 onLoopDetected: 'terminate'(或自定义 handler) AgentConfig
Trace 和审计 onTrace 接入你的 tracing backend;持久化 renderTeamRunDashboard(result) OrchestratorConfig

贡献

欢迎提交 issues、feature requests 和 PRs。以下领域的贡献尤其有价值:

贡献者

框架功能

Provider integrations

Examples & cookbook

Docs & tests

Star History

License

MIT

同时见于 gh-search:llm、gh-search:mcp
译自 GitHub · 项目涌现 · 录于 二〇二六年六月六日