Open Multi-Agent


Open Multi-Agent

给一个目标,自动得到任务 DAG。
原生 TypeScript 多智能体编排,3 个运行时依赖。

npm version CI MIT License TypeScript codecov runtime deps GitHub stars GitHub forks

Post-run dashboard replaying a completed team run: task DAG with per-node assignee, status, token breakdown, and agent output log


English · 中文


`open-multi-agent` 是面向 TypeScript 后端的多智能体编排框架。给定一个目标,协调者 agent 会将其拆解为任务 DAG,并行执行独立任务,合成最终结果。仅 3 个运行时依赖,可直接嵌入任意现有 Node.js 后端。 > **工程师只描述目标,不画任务图。** 图优先的框架要求你预先列出每个节点和每条边。`open-multi-agent` 是目标优先:你描述想要的结果,协调者在运行时构建任务 DAG,编排随目标自适应,而不必为某一个流程硬接线。 ## 目录 [快速开始](#快速开始) · [三种运行模式](#三种运行模式) · [功能一览](#功能一览) · [编排控制](#编排控制) · [生态](#生态) · [示例](#示例) · [与其他框架对比](#与其他框架对比) · [架构](#架构) · [支持的 Provider](#支持的-provider) · [生产级检查清单](#生产级检查清单) · [文档](#文档) · [参与贡献](#参与贡献) ## 快速开始 要求 Node.js >= 18。 ```bash npm install @open-multi-agent/core ``` *正在从 `@jackchen_me/open-multi-agent` 迁移?该包已弃用,请改用 `@open-multi-agent/core`。* ```typescript import { OpenMultiAgent, type AgentConfig } from '@open-multi-agent/core' // 内置工具默认拒绝(default-deny):每个 agent 只拿到自己在 `tools`(或 `toolPreset`) // 里列出的工具;两者都不写就一个都不给。 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 }) // 内置文件系统工具默认沙箱根目录为 `/.agent-workspace`, // 给 agent 的 prompt 里需要使用该目录内的绝对路径。 const result = await orchestrator.runTeam( team, `Create a REST API for a todo list in ${process.cwd()}/.agent-workspace/todo-api/`, ) console.log(result.success, result.totalTokenUsage.output_tokens) ``` ### 本地试跑 ```bash 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(architect、developer、reviewer)协作产出 REST API,`onProgress` 实时输出协调者的任务 DAG: ``` agent_start coordinator task_start design-api task_complete design-api task_start implement-handlers task_start scaffold-tests // 无依赖的任务并行执行 task_complete scaffold-tests task_complete implement-handlers task_start review-code // 实现完成后自动解锁 task_complete review-code agent_complete coordinator // 综合所有结果 Success: true Tokens: 12847 output tokens ``` 通过 Ollama 运行本地模型不需要 API key,见 [`providers/ollama`](examples/providers/ollama.ts)。其他 provider(`OPENAI_API_KEY`、`GEMINI_API_KEY` 等)见[支持的 Provider](#支持的-provider)。 ## 三种运行模式 | 模式 | 方法 | 适用场景 | 示例 | |------|------|----------|------| | 单智能体 | `runAgent()` | 一个智能体,一个提示词,最简入口 | [`basics/single-agent`](examples/basics/single-agent.ts) | | 自动编排团队 | `runTeam()` | 给一个目标,框架自动规划和执行 | [`basics/team-collaboration`](examples/basics/team-collaboration.ts) | | 显式任务管线 | `runTasks()` | 你自己定义任务图和分配 | [`basics/task-pipeline`](examples/basics/task-pipeline.ts) | 不执行 agent,只预览协调者拆出的任务 DAG;也可以把这份计划固定下来,之后无需再次调用协调者就重放同一张图: ```ts // 先拆解一次,审阅计划 const preview = await orchestrator.runTeam(team, goal, { planOnly: true }) // 转成可 diff、可纳入版本控制的产物(纯 JSON) const plan = orchestrator.createPlanArtifact(preview) // 之后:重放完全相同的图(task id、依赖、assignee 都不变),不经过协调者 const result = await orchestrator.runFromPlan(team, plan) ``` 用一份可选的 `modelRouting` 策略,把不同编排阶段路由到不同模型:旗舰模型负责规划,便宜模型跑叶子任务。可按 phase、agent、任务 role/priority 或 leaf 状态匹配;first match wins,不设置则模型选择保持不变。见 [模型路由](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/model-routing.md)。 ## 功能一览 | 能力 | 说明 | |------|------| | **目标驱动协调者** | 一个 `runTeam(team, goal)` 调用,把目标拆成任务 DAG,并行执行独立任务,合成最终结果。未分配的任务自动调度——`dependency-first`(默认)、`round-robin`、`least-busy` 或 `capability-match`。 | | **同队混用 provider** | 12 家内置 provider,外加任意 OpenAI 兼容端点(Ollama、vLLM、LM Studio、OpenRouter、Groq),同队可自由混用。把 tool call 当纯文本输出的本地 server 会由 fallback 解析器兜底。([完整清单](#支持的-provider) · [配置](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/providers.md)) | | **扩展思考 / 推理** | 一份 `thinking` 配置映射到 Anthropic thinking、Gemini `thinkingConfig` 和 OpenAI `reasoning_effort`;推理以事件流式输出,并可选在切换 provider 时保留。([`cross-provider-reasoning`](examples/patterns/cross-provider-reasoning.ts)) | | **工具 + MCP** | 6 个内置(`bash`、`file_*`、`grep`、`glob`),全部**默认拒绝**(default-deny——用 `tools` / `toolPreset` 授予),外加 `delegate_to_agent` handoff(带 cycle + depth 护栏),用 `defineTool()` + Zod 自定义,任意 MCP server 通过 `connectMCPTools()` 接入。([工具配置](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/tool-configuration.md)) | | **流式 + 结构化输出** | 每个 adapter 都支持 token 级流式输出(团队运行时通过 `onAgentStream` 拿到每个 agent 的流);用 Zod schema 校验最终答复,解析失败自动重试。([`structured-output`](examples/patterns/structured-output.ts)) | | **人工介入(Human-in-the-loop)** | 用 `onPlanReady`(任何 agent 执行前审批整个计划)和 `onApproval`(每轮任务之间审批)卡点,或用 `planOnly` 先预览。 | | **固定并重放计划** | 用 `createPlanArtifact` 把 `planOnly` 的拆解结果序列化,之后 `runFromPlan` 不再调用协调者,直接重放完全相同的任务图。([`patterns/plan-replay`](examples/patterns/plan-replay.ts)) | | **生命周期钩子 + 取消** | `beforeRun` 改写 prompt,`afterRun` 后处理或拒绝结果;传入 `AbortSignal` 即可中途取消运行。 | | **可配置协调者** | 通过 `runTeam(team, goal, { coordinator })` 覆盖协调者的 model、provider、adapter、system prompt 或工具。 | | **可观测性** | `onProgress` 事件、`onTrace` span,运行结束后渲染任务 DAG 的 HTML dashboard。API key 和 token 会从 trace、bash 输出和 dashboard 中自动脱敏。([可观测性指南](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/observability.md)) | | **可插拔共享记忆** | 默认进程内 KV;实现 `MemoryStore` 接口即可换 Redis / Postgres / 自家后端。([共享记忆](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/shared-memory.md)) | | **沙箱化文件系统工作目录** | 内置文件系统工具默认沙箱化在 `/.agent-workspace`;继承默认配置的 agent 共享同一根目录。需要 per-agent 隔离时显式设置 `AgentConfig.cwd`;改换共享根目录用 `OrchestratorConfig.defaultCwd`;传 `null` 关闭沙箱。([沙箱配置](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/tool-configuration.md)) | 生产级控制([上下文策略](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/context-management.md)、任务重试退避、循环检测、工具输出截断/压缩)见 [生产级检查清单](#生产级检查清单)。 ## 编排控制 对一次 `runTeam` 运行的精细控制。全部可选;默认行为不变。 **注入团队上下文。** 把目标、roster、当前 worker 的角色注入每个 worker 的 prompt——帮助 worker 与整体目标保持一致,也让多步运行更易调试。默认关闭;省略时 worker prompt 保持逐字节不变。 ```ts await orchestrator.runTeam(team, goal, { revealCoordinator: true }) ``` **执行前审批。** 在任何 agent 执行前检查协调者的计划,并在每轮任务之间再次审批。这两个钩子在 orchestrator 上。返回 `false` 即中止,剩余任务标记为 `skipped`。 ```ts const orchestrator = new OpenMultiAgent({ onPlanReady: async (tasks) => tasks.length <= 10, // 审批整个计划 onApproval: async (completed, next) => next.length > 0, // 审批每一轮 }) ``` **取消运行。** 传入 `AbortSignal`;触发 abort 即中止运行。 ```ts const controller = new AbortController() const run = orchestrator.runTeam(team, goal, { abortSignal: controller.signal }) // 在别处调用 controller.abort() 取消 ``` **配置协调者。** 给规划者单独指定 model、adapter 或额外指令,不影响 worker agent。 ```ts await orchestrator.runTeam(team, goal, { coordinator: { model: 'claude-opus-4-6', instructions: 'Prefer fewer, larger tasks.' }, }) ``` **无依赖 fan-out。** 要 MapReduce 风格的并行,直接用 `AgentPool.runParallel()`。见 [`patterns/fan-out-aggregate`](examples/patterns/fan-out-aggregate.ts)。 **Shell 和 CI。** 使用 JSON-first 的 `oma` 命令行工具。详见 [docs/cli.md](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/cli.md)。 ## 生态 `open-multi-agent` 2026-04-01 发布,MIT 协议。当前公开在用与集成的项目: ### 生产环境在用 - **[temodar-agent](https://github.com/xeloxa/temodar-agent)**(约 60 stars)。WordPress 安全分析平台,作者 [Ali Sünbül](https://github.com/xeloxa)。在 Docker runtime 里直接用我们的内置工具(`bash`、`file_*`、`grep`)。已确认生产环境使用。 如果在生产或 side project 中使用了 `open-multi-agent`,[请开个 Discussion](https://github.com/open-multi-agent/open-multi-agent/discussions),我们会将其列在这里。 ### 集成 - **[Engram](https://www.engram-memory.com)** — "AI 记忆的 Git"。在 agent 之间即时同步知识并标记冲突。([repo](https://github.com/Agentscreator/engram-memory)) - **[@agentsonar/oma](https://github.com/agentsonar/agentsonar-oma)** — Sidecar,检测跨运行的委派环、重复和速率突增。 做了 `open-multi-agent` 集成?见[集成提交指南](examples/integrations/README.md):如何提交 reference / vendor 示例,以及如何被列入这里。 ### Provider 社区优惠 面向 `open-multi-agent` 用户的限时 provider 优惠。该列表不代表付费背书或唯一官方推荐。 - **[MiniMax](https://platform.minimaxi.com/subscribe/token-plan?code=98qruMqQhL&source=link)** — 在 OMA 的 TypeScript 多智能体工作流中使用 MiniMax M3。OMA 用户可在 2026-06-30 前享 MiniMax Token Plan 专属 88 折优惠。见 [MiniMax 接入指南](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/providers/minimax.md)。 ### Featured partner 面向已经深度集成 `open-multi-agent` 的产品和平台。条款和申请方式见 [Featured partner 计划](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/featured-partner.md)。 ## 示例 [`examples/`](./examples/) 按类别分为 basics、cookbook、patterns、providers、integrations。完整索引见 [`examples/README.md`](./examples/README.md)。([`production/`](./examples/production/README.md) 正在征集贡献——见收录标准。) ### 真实业务流程([`cookbook/`](./examples/cookbook/)) 端到端可直接跑的场景,每个都是完整、开箱即用的工作流。 - [`contract-review-dag`](examples/cookbook/contract-review-dag.ts):四任务 DAG 做合同审阅,分支并行 + 出错按步骤重试。 - [`meeting-summarizer`](examples/cookbook/meeting-summarizer.ts):三个专精 agent 并行处理会议转录稿,聚合 agent 合成含行动项和情绪分析的 Markdown 报告。 - [`competitive-monitoring`](examples/cookbook/competitive-monitoring.ts):三个来源 agent 并行从信息流抽取声明,聚合 agent 跨源校对、标记矛盾。 - [`translation-backtranslation`](examples/cookbook/translation-backtranslation.ts):用一个 provider 翻译 EN 到目标语言,另一个 provider 回译,标记语义漂移。 - [`incident-postmortem-dag`](examples/cookbook/incident-postmortem-dag.ts):三个独立根任务在 t=0 并行展开,再由 root-cause 假设器和复盘撰写器合成为一份文档。 - [`personalized-interview-simulator`](examples/cookbook/personalized-interview-simulator.ts):有状态的面试官(跨轮次用 `Agent.prompt()`)加一个读取完整转录的观察者,用 `readline` 接入人工输入,结束时产出 Zod 校验的复盘。 ### 模式与集成 - [`basics/team-collaboration`](examples/basics/team-collaboration.ts):`runTeam()` 协调者模式。 - [`patterns/structured-output`](examples/patterns/structured-output.ts):任意 agent 产出 Zod 校验过的 JSON。 - [`patterns/multi-perspective-code-review`](examples/patterns/multi-perspective-code-review.ts):生成器产出代码,安全、性能、风格三个评审并行,再由合成器返回 Zod 校验的发现列表。 - [`patterns/cross-provider-reasoning`](examples/patterns/cross-provider-reasoning.ts):通过 `preserveReasoningAsText` 在切换 provider 时保留推理模型的思考流。 - [`patterns/cost-tiered-pipeline`](examples/patterns/cost-tiered-pipeline.ts):每个阶段分配不同 model,用 `onTrace` 的 token 计数估算各 model 的 USD 成本。 - [`patterns/fan-out-aggregate`](examples/patterns/fan-out-aggregate.ts):`AgentPool.runParallel()` 做 MapReduce 风格 fan-out。 - [`patterns/agent-handoff`](examples/patterns/agent-handoff.ts):`delegate_to_agent` 同步子智能体委派。 - [`patterns/plan-replay`](examples/patterns/plan-replay.ts):用 `planOnly` 把目标拆解一次,用 `createPlanArtifact` 序列化,再用 `runFromPlan` 重放同一张 DAG,不重跑协调者。 - [`integrations/trace-observability`](examples/integrations/trace-observability.ts):`onTrace` 回调,给 LLM 调用、工具、任务发结构化 span。 - [`integrations/mcp-github`](examples/integrations/mcp-github.ts):用 `connectMCPTools()` 把 MCP 服务器的工具暴露给 agent。 - [`integrations/with-vercel-ai-sdk`](examples/integrations/with-vercel-ai-sdk/):Next.js 应用,OMA `runTeam()` 配合 AI SDK `useChat` 流式输出。 - **Provider 示例**:[`examples/providers/`](examples/providers/) 下的脚本,覆盖托管 provider、OpenAI 兼容端点和本地模型。 运行任意脚本:`npx tsx examples/.ts`。 ## 与其他框架对比 按需求快速选型。以下逐一分析差异。 | 你的需求 | 选 | |----------|----| | 固定的生产拓扑 + 成熟的 checkpoint | LangGraph JS | | 显式 Supervisor + 手写 workflow | Mastra | | Python 栈 + 成熟多智能体生态 | CrewAI | | AI 应用工具集,广泛 provider 支持 | Vercel AI SDK | | **TypeScript + 一句话从目标到结果,自动拆任务** | **open-multi-agent** | **对比 LangGraph JS。** LangGraph 把声明式图(节点、边、条件路由)编译成可调用对象。`open-multi-agent` 是 Coordinator 在运行时把目标拆成任务 DAG,再自动并行无依赖项。终点一样(编排执行),方向相反:LangGraph 图优先,OMA 目标优先。 **对比 Mastra。** 两者都是原生 TypeScript。Mastra 的 Supervisor 模式要你手接 agent 和 workflow;OMA 的 Coordinator 在运行时从目标字符串自动接好。如果流程已经明确,Mastra 的显式控制更有优势;如果不想每一步都自己写,OMA 一个 `runTeam(team, goal)` 调用即可。 **对比 CrewAI。** CrewAI 是 Python 阵营成熟的多智能体方案。OMA 面向 TypeScript 后端,3 个运行时依赖,直接嵌入 Node.js。编排能力大致持平,按语言栈选。 **对比 Vercel AI SDK。** AI SDK 是应用和 LLM 调用层(provider 抽象、流式、tool call、结构化输出)。它不做多智能体编排。两者互补:单 agent 调用使用 AI SDK,需要多 agent 协作时引入 OMA。 ## 架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ 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() │ │ - 12 built-in │ └────────┬──────────┘ │ providers │ │ │ - OpenAI-compatible │ │ │ - AI SDK bridge │ │ └────────────────────────┘ ┌────────▼──────────┐ │ AgentRunner │ ┌──────────────────────┐ │ - conversation │───►│ ToolRegistry │ │ loop │ │ - defineTool() │ │ - tool dispatch │ │ - 6 built-in tools │ └───────────────────┘ │ + delegate (opt-in) │ └──────────────────────┘ ``` ## 支持的 Provider 改 `provider`、`model`,设好对应的环境变量。agent 配置结构不变。 ```typescript const agent: AgentConfig = { name: 'my-agent', provider: 'anthropic', model: 'claude-sonnet-4-6', systemPrompt: 'You are a helpful assistant.', } ``` | 类型 | 配置方式 | 服务 | |------|--------|------| | 内置快捷方式 | 设 `provider` 为 `anthropic`、`gemini`、`openai`、`azure-openai`、`copilot`、`grok`、`deepseek`、`doubao`、`hunyuan`、`minimax`、`mimo`、`qiniu`、`bedrock`;框架自带 endpoint。 | Anthropic、Gemini、OpenAI、Azure OpenAI、GitHub Copilot、xAI Grok、DeepSeek、Doubao(火山引擎)、Hunyuan(腾讯混元 MaaS)、MiniMax、MiMo、Qiniu、AWS Bedrock | | OpenAI 兼容端点 | 设 `provider: 'openai'` + `baseURL`,必要时加 `apiKey`。 | Ollama、vLLM、LM Studio、llama.cpp server、OpenRouter、Groq、Mistral、Moonshot(Kimi)、Qwen、Zhipu(智谱) | | Vercel AI SDK | 从 `@open-multi-agent/core/ai-sdk` 导入 `AISdkAdapter`;安装可选 peer `ai` 加一个 `@ai-sdk/*` provider。 | [任意 AI SDK provider](https://ai-sdk.dev/providers)(60+ 模型与平台) | 详见 [docs/providers.md](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/providers.md),含环境变量、模型示例、本地模型工具调用、超时设置、常见问题。 ### Vercel AI SDK(可选) 安装可选 peer [`ai`](https://www.npmjs.com/package/ai) 以及你需要的任意 [`@ai-sdk` provider](https://ai-sdk.dev/providers)(例如 [`@ai-sdk/openai`](https://www.npmjs.com/package/@ai-sdk/openai))。在 `AgentConfig` 上传入 `adapter: new AISdkAdapter(model)`,即可让该 agent 走 AI SDK,而不是内置的 `provider` 工厂。设置了 `adapter` 时,`provider`、`apiKey`、`baseURL`、`region` 都会被忽略。混合团队照常工作:只有带 `adapter` 的 agent 才走 AI SDK。 ```typescript import { openai } from '@ai-sdk/openai' import { AISdkAdapter } from '@open-multi-agent/core/ai-sdk' import { OpenMultiAgent } from '@open-multi-agent/core' const oma = new OpenMultiAgent() await oma.runAgent( { name: 'researcher', model: 'gpt-4o', adapter: new AISdkAdapter(openai('gpt-4o')), systemPrompt: 'You are a researcher.', }, 'What are the latest AI trends?', ) ``` 协调者也支持同样的钩子:`runTeam(team, goal, { coordinator: { adapter: new AISdkAdapter(...) } })`。 ## 生产级检查清单 上线前逐一配置以下项目:控制 token 开销、能从失败中恢复、出了问题能排查。 | 关注点 | 配置项 | 作用域 | |--------|--------|--------| | 控制对话长度 | `maxTurns`(每个 agent)+ `contextStrategy`(`sliding-window` / `summarize` / `compact` / `custom`) | `AgentConfig` | | 控制运行时长 | `timeoutMs`(每个 agent,运行挂起时中止;本地模型常见) | `AgentConfig` | | 限制工具输出 | `maxToolOutputChars`(或单工具 `maxOutputChars`)+ `compressToolResults: true` | `AgentConfig` 和 `defineTool()` | | 失败重试 | 任务级 `maxRetries`、`retryDelayMs`、`retryBackoff`(指数退避倍率) | 通过 `runTasks()` 用的任务配置 | | 总额封顶 | orchestrator 上设 `maxTokenBudget` | `OrchestratorConfig` | | 卡死检测 | `loopDetection` + `onLoopDetected: 'terminate'`(或自定义 handler) | `AgentConfig` | | 追踪与审计 | `onTrace` 接你的 tracing 后端;落盘 `renderTeamRunDashboard(result)` | `OrchestratorConfig` | | 脱敏密钥 | 自动——API key、token、Authorization header 从 trace、bash 输出、dashboard payload 中剥除 | 内置(默认开启) | | 按需授予工具 | 内置工具默认拒绝(default-deny):agent 只拿到自己在 `tools` / `toolPreset` 里列出的工具,都不写就一个都没有。`bash` 一旦授予仍是无沙箱的,且每次工具结果都会发给你的模型 provider——所以读取/执行权限要刻意授予。`defaultToolPreset` 可一行恢复旧的「全部工具」行为 | `AgentConfig` / `OrchestratorConfig` | | 限定 agent 文件操作范围 | `cwd` / `defaultCwd`(默认 `.agent-workspace` 子目录;用 `process.cwd()` 放宽、`null` 关闭) | `AgentConfig` / `OrchestratorConfig` | ## 文档 - [Provider](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/providers.md) — 环境变量、模型示例、本地模型工具调用、超时、常见问题。 - [工具配置](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/tool-configuration.md) — 工具预设、自定义工具、文件系统沙箱、MCP。 - [可观测性](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/observability.md) — `onProgress` 事件、`onTrace` span、运行后 dashboard。 - [共享记忆](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/shared-memory.md) — 默认存储与自定义 `MemoryStore` 后端。 - [上下文管理](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/context-management.md) — 滑动窗口、摘要、压缩、自定义压缩器。 - [CLI](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/cli.md) — 面向 shell 和 CI 的 JSON-first `oma` 命令行。 - [模型路由](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/model-routing.md) — 可选的 `modelRouting` 策略:按 phase / agent / role / priority / leaf 匹配,first match wins。 ## 参与贡献 Issue、feature request、PR 都欢迎。特别欢迎以下方面的贡献: - **生产级示例。** 端到端跑通的真实场景工作流。收录条件和提交格式见 [`examples/production/README.md`](./examples/production/README.md)。 - **文档。** 指南、教程、API 文档。 - **翻译。** 把这份 README 翻译成其他语言。[提个 PR](https://github.com/open-multi-agent/open-multi-agent/pulls)。 ## 贡献者
按领域展开贡献者致谢 **框架功能** - [@ibrahimkzmv](https://github.com/ibrahimkzmv)(token 预算、上下文策略、依赖隔离上下文、工具预设、glob、MCP 集成、可配置 Coordinator、CLI、Dashboard 渲染、trace 事件类型) - [@apollo-mg](https://github.com/apollo-mg)(上下文压缩修复、采样参数) - [@tizerluo](https://github.com/tizerluo)(onPlanReady、onAgentStream) - [@CodingBangboo](https://github.com/CodingBangboo)(planOnly 模式) - [@Xin-Mai](https://github.com/Xin-Mai)(output schema 验证) - [@JasonOA888](https://github.com/JasonOA888)(AbortSignal 支持) - [@EchoOfZion](https://github.com/EchoOfZion)(简单目标跳过 Coordinator) - [@voidborne-d](https://github.com/voidborne-d)(OpenAI 混合内容修复) - [@NamelessNATM](https://github.com/NamelessNATM)(agent 委派基础实现) - [@MyPrototypeWhat](https://github.com/MyPrototypeWhat)(reasoning blocks、reasoning_effort、采样参数对齐、trace 输入输出) - [@SiMinus](https://github.com/SiMinus)(流式 reasoning 事件) - [@matthewYang08](https://github.com/matthewYang08)(OpenAI reasoning 转文本回退) - [@dvirarad](https://github.com/dvirarad)(OpenAI 系列 adapter 健壮性) **Provider 集成** - [@ibrahimkzmv](https://github.com/ibrahimkzmv)(Gemini) - [@hkalex](https://github.com/hkalex)(DeepSeek、MiniMax) - [@marceloceccon](https://github.com/marceloceccon)(Grok) - [@Klarline](https://github.com/Klarline)(Azure OpenAI) - [@Deathwing](https://github.com/Deathwing)(GitHub Copilot) - [@JackChiang233](https://github.com/JackChiang233)(Qiniu) - [@CodingBangboo](https://github.com/CodingBangboo)(AWS Bedrock) - [@kidoom](https://github.com/kidoom)(MiMo、Doubao) **示例与 Cookbook** - [@mvanhorn](https://github.com/mvanhorn)(研究聚合、代码评审、会议总结、Groq 示例、Mistral 示例) - [@Kinoo0](https://github.com/Kinoo0)(代码评审升级) - [@Optimisttt](https://github.com/Optimisttt)(研究聚合升级) - [@Agentscreator](https://github.com/Agentscreator)(Engram 记忆集成) - [@fault-segment](https://github.com/fault-segment)(合同审查 DAG) - [@HuXiangyu123](https://github.com/HuXiangyu123)(分级成本示例) - [@zouhh22333-beep](https://github.com/zouhh22333-beep)(翻译/回译) - [@pei-pei45](https://github.com/pei-pei45)(竞品监测) - [@mmjwxbc](https://github.com/mmjwxbc)(面试模拟器) - [@binghuaren96](https://github.com/binghuaren96)(事故复盘 DAG) - [@DaiMao-UT](https://github.com/DaiMao-UT)(论文复现分诊) - [@oooooowoooooo](https://github.com/oooooowoooooo)(罕见病信息分诊) - [@CodingBangboo](https://github.com/CodingBangboo)(Express 客服流水线) - [@nuthalapativarun](https://github.com/nuthalapativarun)(Doubao、Zhipu provider 示例) - [@goodneamtakenbydogs](https://github.com/goodneamtakenbydogs)(Moonshot、Qwen provider 示例) - [@suans4746-del](https://github.com/suans4746-del)(叙事谜题提示仲裁) - [@gregkonush](https://github.com/gregkonush)(Bilig WorkPaper MCP 集成) **文档与测试** - [@tmchow](https://github.com/tmchow)(llama.cpp 文档) - [@kenrogers](https://github.com/kenrogers)(OpenRouter 文档) - [@jadegold55](https://github.com/jadegold55)(LLM adapter 测试覆盖) - [@btroops](https://github.com/btroops)(DeepSeek 工具调用测试) - [@nuthalapativarun](https://github.com/nuthalapativarun)(上下文管理文档)
## 许可证 MIT