OMA 开放多智能体运行时

自托管智能体运行时,以持久审批和可离线验证的记录管控关键操作。

Star 数
★ 7k
最近更新
今天
License
MIT
主语言
TypeScript

30 秒速览

运行形态
命令行工具代码库 / SDK开发框架
可在哪里用
通用 · 跨平台Codex · Claude Code · OpenAI API · Claude API
费用
软件免费,模型调用费用自付
上手难度
低 · 几分钟可跑通
开始前需要
Node.js 20 或更高版本用于生产的受维护 Node.js LTS 版本本地文件系统
典型场景
需要让文件写入或 Shell 操作先经人工批准的后端团队,可用持久审批在服务重启后继续处理同一请求。
不适合
  • 需要托管控制台或厂商云服务的团队,OMA 没有账号与后端
  • 希望用 Node.js 20 以下版本或不愿跟进 LTS 迁移的团队
  • 需要审批存储具备原子比较交换能力之外的简单存储方案

这个 Agent 能做什么,适合哪些场景?

OMA 是采用 MIT 许可证的自托管 TypeScript 智能体运行时,核心以 @open-multi-agent/core 库交付,不依赖 OMA 托管账户或控制平面。它提供 runAgent()、runTasks() 和 runTeam() 三种执行模式,分别用于单智能体、显式任务流水线和由协调器规划的多智能体任务图。运行时可调用托管模型、本地服务器、OpenAI 兼容端点、Vercel AI SDK 提供方,以及通过进程或 ACP 后端接入的外部编码智能体。关键计划、任务分派或工具调用可以暂停并写入检查点,待审批后从持久状态恢复。日志后端会记录模型所见内容块、工具调用、结果与上下文改写,verifyRun() 可离线检查记录的内容与事件来源是否逐字节一致。项目还包含本地 Run Viewer、可选的 @open-multi-agent/otel 适配器和 create-oma-app 脚手架,适合需要自行控制模型密钥、运行环境、审批和审计资料的团队。

开发者用 OpenMultiAgent 创建智能体或团队,并通过 runAgent() 执行单个智能体、通过 runTasks() 执行已定义的流水线,或通过 runTeam() 从目标生成带负责人和依赖关系的任务图。runTeam() 先用一次模型调用生成任务规格,再由确定性调度器执行,最后通过第二次模型调用汇总已完成任务;协调器不会在执行途中介入。智能体能够使用所配置的工具,关键工具调用、计划或任务分派可返回 suspend,审批请求会与检查点一起保存,并绑定到审批者所见内容的 SHA-256 哈希。审批决定采用原子、先到先得机制;请求遭篡改或存储不支持比较并交换时会安全失败。启用日志后,系统记录模型输入块、工具调用及结果和上下文改写,verifyRun() 可冷读取并离线验证内容血缘;被逐出的上下文窗口会报告为无法确定,而不是验证失败。运行结果还可包含任务状态、负责人、依赖、令牌用量、待审批项、治理执行回执及供离线 Run Viewer 检查的跟踪数据。

  1. 需要让文件写入或 Shell 操作先经人工批准的后端团队,可用持久审批在服务重启后继续处理同一请求。
  2. 受治理要求约束的组织,可声明必需角色和独立复核要求,并用执行回执检查实际执行顺序与依赖关系。
  3. 希望在内网或受限环境运行模型的团队,可连接 Ollama、vLLM、llama-server 或其他 OpenAI 兼容端点,并配置离线或出站白名单策略。
  4. 构建代码审查、安全分析或教学工作流的 TypeScript 开发者,可用 create-oma-app 选择现成模板并运行无需 API 密钥的确定性演示。
  5. 已有明确步骤的自动化系统可用 runTasks() 固定任务流水线;需要动态拆解目标时则可采用 runTeam()。
  6. 需要审计智能体上下文来源的运维或合规团队,可保存运行日志,并用 verifyRun() 在离线环境逐字节核验记录。

如何安装或部署这个 Agent?

需要 Node.js 20 或更高版本;生产环境应使用仍在维护的 Node.js LTS。Node.js 20 仅作为迁移兼容窗口保留,并计划在下一个主版本移除,时间不早于 2026-10-31。

创建示例应用:

npm create oma-app@latest my-oma

在交互式终端中选择模板和运行时后,脚手架会安装依赖并启动确定性本地演示。该演示不需要 API 密钥,也不会发出模型请求。

若要接入现有后端,安装核心包:

npm install @open-multi-agent/core

使用 OpenAI 示例时设置凭据:

export OPENAI_API_KEY="your-api-key"

其他托管模型、本地服务器、OpenAI 兼容端点和 AI SDK 提供方需要按相应提供方配置密钥或 baseURL。

如何使用这个 Agent?

以下示例建立一个会暂停关键工具调用的团队,并将检查点保存到本地文件:

import { FileStore, OpenMultiAgent } from '@open-multi-agent/core'

const oma = new OpenMultiAgent({
  defaultProvider: 'openai',
  defaultModel: 'gpt-5.4',
  onToolCall: ({ consequential }) => (consequential ? { action: 'suspend' } : { action: 'allow' }),
})

const team = oma.createTeam('ops', {
  name: 'ops',
  agents: [{ name: 'operator', systemPrompt: 'Reconcile overdue invoices.', toolPreset: 'readwrite' }],
})

const result = await oma.runTeam(team, 'Find overdue invoices and draft the reminders.', {
  checkpoint: { store: new FileStore('./.oma/run.json') },
})

当 result.status?.code 为 suspended 时,应用需要让审核者处理 result.pendingApprovals;每项请求都绑定到审核者看到的确切内容。若工作图已知,可改用 runTasks();只需单个智能体时使用 runAgent()。启用日志后,可用 verifyRun() 对保存的运行记录进行离线验证。

这个 Agent 有哪些优点和局限?

优点
  • 审批请求与检查点持久化,并通过 SHA-256 绑定审核内容;篡改或缺少比较并交换能力时会安全失败。
  • 可离线逐字节验证模型输入块、工具调用、结果与上下文改写的来源,并明确区分验证失败和因窗口逐出而无法确定。
  • 没有遥测或 OMA 托管控制平面,可使用自己的密钥、部署环境、云端模型、本地模型或 OpenAI 兼容端点。
  • 同时覆盖单智能体、显式流水线和动态任务图,并提供本地 Run Viewer 与可选 OpenTelemetry 集成。
  • 支持治理执行回执,可在不读取智能体输出文本的情况下检查角色、顺序、依赖和独立复核。
局限
  • 需要 Node.js 20 或更高版本;生产环境还需跟随受维护的 LTS,且 Node.js 20 已进入明确的后续主版本迁移窗口。
  • runTeam() 会额外使用模型调用进行任务规划和最终汇总,因此相较已知流程的 runTasks() 会增加模型调用和协调成本。
  • 持久审批依赖支持原子比较并交换的存储;不具备该能力的存储会安全失败,接入生产存储时需要验证语义。
  • 日志验证证明内容及血缘能够重现,并不证明底层日志文件从未被编辑。
  • 出站策略不覆盖进程和 ACP 后端;若组织依赖这些外部智能体后端,需要另行管控其网络与执行边界。

这个 Agent 与同类方案有什么区别?

runAgent() 适合单个智能体,runTasks() 适合调用方已经知道任务图的确定流程,runTeam() 则用协调器从目标动态生成任务规格和依赖图。与集中式托管控制平面相比,OMA 明确采用自托管库、本地检查点和离线查看方式;需要集中监控的团队可另装 @open-multi-agent/otel,把跟踪数据接入现有 OpenTelemetry 系统。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
OMA 开放多智能体运行时 当前 55 · 缺口较多 命令行工具免费 + 模型费 ★ 7k 今天 TypeScript Codex · Claude Code · OpenAI API · Claude API
AgentScope 2.0 70 · 存在缺口 代码库 / SDK免费 + 模型费 ★ 36k 3 天前 Python OpenAI API · Claude API
Selectools 65 · 存在缺口 代码库 / SDK免费 + 模型费 ★ 11 4 天前 Python OpenAI API · Claude API
Pi Jev 语义路由器 80 · 表现良好 Agent 插件 / 技能免费 + 模型费 ★ 72 9 天前 TypeScript —

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
缺口较多
55/ 100 五分制 2.8 / 5
本评测基于 2026年8月9日 的源码;此后该项目发布了 13 个正式版本,尚未复审。分数与结论只代表评测时的版本。 最近版本 ↓
信任安全 16/29
可靠稳定 8/14
适用触发 12/18
规范维护 9/18
有效结果 7/13
证据核验 3/8
查看各维度的扣分理由
信任安全16 / 29 · 2.8/5

证据显示工具默认拒绝、逐次调用门控、审批和暂停机制,以及隐私控制,但敏感数据处理细节不足,依赖安全未充分展示,发布者身份未验证。

可靠稳定8 / 14 · 2.9/5

代码和测试显示重试、超时、循环检测、预算限制,以及清晰的失败消息,但依赖可用性未充分验证。

适用触发12 / 18 · 3.3/5

文档明确目标受众和场景,能力边界清晰,触发精确,环境适配良好。

规范维护9 / 18 · 2.5/5

信息架构清晰,安装说明详细,示例丰富,但已知限制和版本变更记录不足,维护责任不明确。

有效结果7 / 13 · 2.7/5

输出可用性高,边际价值明显,但成本效益分析不足。

证据核验3 / 8 · 1.9/5

声明有部分证据支持,但缺乏独立来源验证,事实与推断区分不明确。

风险与缓解建议
  • 发布者身份未验证,需谨慎评估供应链风险。
  • 敏感数据处理细节不足,需进一步审查。
  • 依赖安全未充分展示,建议检查依赖清单。
证据充分度:低 评估于 2026年8月9日 审查版本 f14708b30857 评估后仓库已有新提交,评分可能未覆盖最新改动
查看完整评分方法 →

最近版本

来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。

  1. v1.23.0
    发布说明摘录
    Breaking changes This release ships as a minor version, so a caller on a ^1.x range receives it without an explicit upgrade step. A project that pins zod below 3.25, code that uses object-only members of taskProfileSchema or gatePolicySchema, and a coordinator plan over the new size caps can stop working after the upgrade. The individual entries are under Changed below. …
    在 GitHub 查看 ↗
  2. v1.22.0
    发布说明摘录
    Breaking changes This release ships as a minor version, so a caller on a ^1.x range receives it without an explicit upgrade step. A caller that passes malformed task metadata or disables thinking on MiniMax-M3.1-Flash still installs, then fails when the code runs. The individual entries are under Changed and Fixed below. …
    在 GitHub 查看 ↗
  3. v1.21.3
    发布说明摘录
    Fixed - Symlink loops and chains longer than the kernel's link limit now fail the sandbox check with a Too many levels of symbolic links error. Earlier versions also failed these writes, with the filesystem error instead. - A symlink target that ends in a separator or . must now name an existing directory, as the kernel requires. On macOS, earlier versions resolved such a link to the file of that name, so file_write overwrote it. Security …
    在 GitHub 查看 ↗

常见问题

必须使用云端模型或 OpenAI 吗?
不必。项目列出了 Anthropic、OpenAI、Azure OpenAI、Bedrock、Gemini、Grok、Copilot 及多家中国提供方的适配器,也可通过 baseURL 使用 Ollama、vLLM、llama-server 或其他 OpenAI 兼容端点。
没有 API 密钥可以先试用吗?
可以。npm create oma-app@latest my-oma 提供使用脚本化模型响应的确定性本地演示,不需要 API 密钥,也不会发出模型请求。
服务重启后,待审批运行会丢失吗?
配置检查点存储后,运行状态和待审批请求会持久保存,可在重启后从同一内容恢复。审批请求还会绑定到审核者所见内容的哈希。
离线验证能证明日志绝未被修改吗?
不能。verifyRun() 验证每个内容块能否从具名来源事件逐字节重现,证明内容血缘与一致性;项目明确说明它不证明文件从未被编辑。
是否会向 OMA 服务发送遥测?
不会。项目声明没有遥测、账户或托管控制平面,也不会发出分析、许可证、更新检查或其他回传请求。模型提供方连接仍取决于你的配置与出站策略。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents