Open Managed Agents (OpenMA)

开源的托管式 Agent 运行时,自带会话持久化、执行与恢复,模型、harness、沙箱和云任选。

Star 数
★ 326
最近更新
2 天前
License
Apache-2.0
主语言
TypeScript

30 秒速览

运行形态
自托管服务开发框架云服务 / SaaS
可在哪里用
通用 · 跨平台Codex · Claude Code · OpenAI API · Claude API
费用
有免费版,另有付费云服务
上手难度
高 · 需要较重的基础设施
开始前需要
Node.js(版本见 .node-version)pnpmDocker with ComposeShell / 命令行网络访问本地文件系统MCP Server
典型场景
需要长期运行编码任务的团队:让 Claude Code 或 Codex 跑在 E2B、Daytona、Cloudflare Sandbox 等隔离沙箱里,由 OpenMA 负责工作区持久化与输出回收。
不适合
  • 只想调用现成托管 API、不愿维护数据库与沙箱的团队
  • 无法提供隔离沙箱或 Docker 运行环境的用户
  • 需要完全离线、不调用任何云模型的场景

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

Open Managed Agents(OpenMA)是一个可开源自托管的托管式 Agent 平台,定位为 Claude Managed Agents 和 OpenAI Agents API 的替代实现。它本身是“元 harness”:不重写 agent loop,而是管理会话生命周期、执行资源编排与故障恢复。你可以让 harness 跑在沙箱之外(内置 Pi 或自实现 host-side harness 接口),也可以把 Claude Code、Codex 等成熟 harness 通过 ACP 适配器放进沙箱内复用其工具与上下文管理。平台把会话历史、工作区检查点与输出持久化,沙箱挂掉也能用 durable events 重建上下文。模型层通过 Model Cards 接入 Anthropic、OpenAI、DeepSeek、OpenRouter 等;数据库、队列、对象存储均可替换适配器。部署上支持原生 Node.js、Docker Compose、Fly.io、Vercel(Beta)和 Cloudflare,同时提供托管版控制台。

OpenMA 接收你创建的 agent 定义(名称、model、system prompt),生成 environment(网络与依赖配置)和 session,然后按事件流执行:通过 client.beta.sessions.events.send 发送 user.message 等事件,服务端把事件落库为 durable 记录并交给选定的 harness 执行,产生的进度与输出以流式事件返回。工具侧内置 shell 执行、文件读写编辑、glob 与文本搜索、网页搜索与抓取、浏览器自动化(导航、点击、输入、截图),并可加载 MCP 服务与 Skills;会话还能挂载仓库、文件和持久记忆。执行完成后工作区被检查点化,输出被收集,会话可在之后继续。对外暴露三套接口:Claude Managed Agents 风格的 /v1/*(支持官方 Anthropic SDK)、OpenAI Agents API 风格的 /openai/v1/*(支持 [email protected]),以及 OpenMA 扩展 /v1/oma/*(Model Cards 与产品特性)。多副本场景下,Node 部署通过 durable execution outbox、可续租约与 fencing 让不同副本并行认领不同 session,同一 session 内保持有序;沙箱内 harness 走独立的 Environment Work 认领通道。

  1. 需要长期运行编码任务的团队:让 Claude Code 或 Codex 跑在 E2B、Daytona、Cloudflare Sandbox 等隔离沙箱里,由 OpenMA 负责工作区持久化与输出回收。
  2. 想摆脱单一供应商锁定的平台团队:模型、harness、沙箱、数据库、队列、对象存储六层都可替换,按需接入 Anthropic、OpenAI、DeepSeek 或 OpenRouter。
  3. 已有 OpenAI SDK 或 Anthropic SDK 代码、希望自托管的开发者:把 baseURL 指向自己的服务器,沿用 /v1/* 或 /openai/v1/* 接口迁移。
  4. 做 issue-to-PR 自动化的工作流团队:结合 GitHub issues/PR、Linear、Slack、Feishu 集成与 OpenMatter 的 Loop runtime,把工作事件转成 agent 回合并回写结果。
  5. 对凭据与数据边界敏感的运维/安全团队:用 Model Cards 加密保存 provider key,并通过 Vault-backed gateway 限制私有服务的访问范围。
  6. 需要在本地或自有云上验证 Agent 能力的个人开发者:用 Docker Compose + SQLite 单机快速起一套,接上自己的 API key 试跑。

如何安装或部署这个 Agent?

推荐路径是让编码 agent 读部署 skill:

npx skills add openma-ai/open-managed-agents --skill deploy-openma

安装后向 agent 说“Deploy OpenMA on this machine”,它会检查环境、准备配置、部署并验证 Console 与一次 agent 任务。

手动 Docker 部署(需 Docker with Compose):

git clone https://github.com/openma-ai/open-managed-agents.git
cd open-managed-agents
cp .env.example .env

编辑 .env,至少准备:

# 生成密钥
openssl rand -hex 32      # BETTER_AUTH_SECRET
openssl rand -base64 32   # PLATFORM_ROOT_SECRET

同时在 .env 中设置隔离的 SANDBOX_PROVIDER 及其配置、PUBLIC_BASE_URL,并保持认证开启;部署不会回退到在未隔离的宿主进程里执行 agent 命令。

docker compose up -d --build
curl --fail http://localhost:8787/health

启动后访问 http://localhost:8787 创建账号,并在 Console 里配置 Model Card 和 environment。Compose 会挂载 ./data,重启或升级时请保留该目录。

Cloudflare 部署需要 .node-version 指定的 Node 版本、仓库锁定的 pnpm、用于构建容器的 Docker,以及 jq、openssl:

git clone https://github.com/openma-ai/open-managed-agents.git
cd open-managed-agents
pnpm install --frozen-lockfile
npx wrangler login
pnpm setup:cloudflare

该脚本会在你的 Cloudflare 账号里创建资源、写 Wrangler 配置、设置密钥并部署 Workers,可能产生费用;运行时它默认会提示输入 Anthropic API key(也可通过环境变量提供)。

如何使用这个 Agent?

先在 Console 里创建 API key、Model Card 和 environment,然后按 SDK 接入。

使用官方 Anthropic SDK(仓库锁定 @anthropic-ai/[email protected]):

npm install @anthropic-ai/[email protected]
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  apiKey: process.env.OPENMA_API_KEY,
  baseURL: process.env.OPENMA_BASE_URL ?? "https://app.openma.ai",
});

const agent = await client.beta.agents.create({
  name: "researcher",
  model: process.env.OPENMA_MODEL_ID!,
  system: "Help me investigate a task and explain your findings.",
});

const session = await client.beta.sessions.create({
  agent: { type: "agent", id: agent.id, version: agent.version },
  environment_id: process.env.OPENMA_ENVIRONMENT_ID!,
});

await client.beta.sessions.events.send(session.id, {
  events: [{
    type: "user.message",
    content: [{ type: "text", text: "Help me plan a code review." }],
  }],
});

使用 OpenAI SDK(测试基线 [email protected]):

npm install [email protected]
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.OPENMA_API_KEY,
  baseURL: `${process.env.OPENMA_BASE_URL ?? "https://app.openma.ai"}/openai/v1`,
});

const events = await client.beta.agents.sessions.create({
  agent: {
    model: process.env.OPENMA_MODEL_ID!,
    instructions: "Help me investigate a task and explain your findings.",
  },
  environment: { type: "none" },
  input: "Help me plan a code review.",
  stream: true,
});

for await (const event of events) console.log(event);

自托管时把 OPENMA_BASE_URL 设成自己的服务地址(不带结尾斜杠,例如 http://localhost:8787);OPENMA_MODEL_ID 填 Model Card 的 model_id,不是数据库记录 ID。上述 OpenAI 示例声明 environment: { type: "none" },即不使用沙箱。

本地开发:

pnpm install --frozen-lockfile
pnpm typecheck
pnpm test

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

优点
  • 六层可替换:模型、harness、沙箱、部署、数据库、队列、对象存储都通过明确接口(如 ports.ts、host-side harness 接口)开放扩展,不强制绑定单一供应商。
  • 会话与执行解耦:会话历史独立于进程与沙箱,沙箱失败可用 durable events 与工作区检查点恢复,多副本靠 outbox、租约与 fencing 并行认领不同 session。
  • 同时提供 Claude Managed Agents(/v1/*)与 OpenAI Agents API(/openai/v1/*)兼容层,已有 Anthropic/OpenAI SDK 代码改 baseURL 即可试跑。
  • 可复用在沙箱内运行成熟 harness:通过 ACP 适配器把 Claude Code、Codex 等连上,harness 版本可独立于沙箱镜像安装。
  • 部署路径覆盖 Docker、Fly.io、Vercel(Beta)、Cloudflare 与托管版,上手与规模化可以分开选择。
  • 开源许可为 Apache-2.0,自托管时模型凭据可由 Model Cards 加密保存。
局限
  • 自托管不是一条命令:需要配置 BETTER_AUTH_SECRET、PLATFORM_ROOT_SECRET、SANDBOX_PROVIDER、PUBLIC_BASE_URL 等,且部署不会回退到未隔离的宿主执行。
  • 要真正可用必须接一个隔离沙箱提供商(E2B、Daytona、LiteBox、Cloudflare Sandbox 等),远程沙箱还需要可达网络与凭据代理配置。
  • 两个兼容层覆盖范围不等价:OpenAI 适配器在环境、插件、部分模型/工具设置上有限制,动态 subagent 控制目前仅 Node 支持且为单层委派,托管 Cloudflare 覆盖也不同。
  • Cloudflare 快速部署脚本会在你的云账号内创建可能计费的资源,并默认索要 Anthropic API key。
  • 部分集成仍是提案状态:OpenMatter 与 OpenMA 的统一 Bond/Loop 托管仅见 ADR 0011,尚未合并。
  • 扩容能力受所选数据库、存储、沙箱提供商和模型速率限制约束,SQLite 单机只是快速验证选择。

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

OpenMA 在 README 中明确把自己定位为 Claude Managed Agents 与 OpenAI Agents API 的开源自托管替代:它分别提供 /v1/*(Claude Managed Agents 契约,可用官方 Anthropic SDK)和 /openai/v1/*(OpenAI Agents API 契约,可用 openai SDK)两套兼容接口,同时说明自己是独立实现,迁移前需核对 API 与运行时覆盖。它与 Claude Code、Codex 不是竞争关系,而是可以通过 ACP 适配器把这类 harness 托管到自己的沙箱与生命周期里运行。

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

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
Open Managed Agents (OpenMA) 当前 62 · 存在缺口 自托管服务免费版 + 付费版 ★ 326 2 天前 TypeScript Codex · Claude Code · OpenAI API · Claude API
OtoDock 77 · 表现良好 自托管服务免费版 + 付费版 ★ 191 5 天前 Python Codex · Claude Code
Runtm 63 · 存在缺口 命令行工具免费版 + 付费版 ★ 302 2 天前 Python Codex · Claude Code
n8n-skills:Claude Code 的 n8n 工作流专家技能包 52 · 缺口较多 Agent 插件 / 技能免费 + 模型费 ★ 6.5k 3 天前 Shell Claude Code

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
存在缺口
62/ 100 五分制 3.1 / 5
信任安全 14/29
可靠稳定 8/14
适用触发 14/18
规范维护 14/18
有效结果 7/13
证据核验 5/8
查看各维度的扣分理由
信任安全14 / 29 · 2.4/5

最小权限方面:README 明确要求选择隔离的 SANDBOX_PROVIDER,并声明部署不会回退到在未隔离的宿主子进程中运行 agent 命令;ACP 状态绑定测试显示会话状态被强制写入按会话隔离的目录(如 CODEX_HOME、CLAUDE_CONFIG_DIR),并对 sessionId 做百分号编码以防路径穿越,因此给 2。用户确认方面:仅 README 提到部署技能会在创建付费云资源前确认,仓库本身没有可核验的确认机制代码,给 1。数据流透明方面:README 描述了会话事件、工作区检查点、凭据代理与出站上下文(setOutboundContext/revokeOutboundContext),认证 worker 展示了出站代理与撤销路径,给 2。敏感数据处理方面:Model Cards 声称对 provider key 静态加密,认证 worker 将 codex auth 写入 0600 权限文件并在 finally 中删除,ACP 恢复提示明确不复制工具输入与 token,给 2。依赖安全方面:package.json 固定了部分版本(@anthropic-ai/sdk 0.120.0、ai 7.0.123、zod 4.3.6),但大量依赖使用 ^ 范围,且没有可见的审计/锁定策略说明,给 1。外部影响方面:setup-cf.sh 会创建云资源并可能产生费用,README 有提示但仓库内无强制确认或 dry-run,给 1。回滚方面:README 与认证 worker 展示了 checkpoint/restore、租约续期、fencing 与 destroy 语义,给 2。来源归属方面:LICENSE 与 NOTICE 引用存在,但本次证据未包含 NOTICE 内容,第三方归属无法核验,给 1。

可靠稳定8 / 14 · 2.9/5

自洽性方面:README 的架构描述与 package.json 脚本、测试文件(ACP 状态绑定、恢复提示)相互一致,且明确区分 Node 与 Cloudflare 覆盖差异,给 2。依赖可用性方面:依赖大量使用 ^ 范围且未提供锁文件证据,无法确认可复现安装,给 1。失败信息方面:认证 worker 返回结构化错误(method_not_allowed、unauthorized、invalid_request、checkpoint_required),ACP 恢复对缺失原生状态给出明确 reason,给 2。

适用触发14 / 18 · 3.9/5

受众与场景方面:README 覆盖自托管、托管、CLI、API、多模型/多沙箱/多云,场景描述充分,给 3。能力边界方面:明确说明 OpenAI 适配器限制、单层委派、Cloudflare 覆盖差异、Vercel Beta,给 2。触发精确度方面:仓库是平台而非单一 agent,触发条件由使用者配置,仓库未定义精确触发契约,给 1。环境适配方面:提供 Node/Docker、Fly、Vercel、Cloudflare 多路径与适配器接口,给 3。

规范维护14 / 18 · 3.9/5

信息架构方面:README 结构清晰,分层表格、架构说明、API 示例、自托管步骤齐备,给 3。安装说明方面:提供 Docker Compose 与 Cloudflare 两条快速路径及环境变量说明,给 3。命名稳定性方面:包名与 API 路径(/v1、/openai/v1、/v1/oma)较稳定,但版本 0.1.0 且存在移除集成(OpenClaw)的先例,给 2。示例与 FAQ 方面:提供 Anthropic 与 OpenAI SDK 示例,但无独立 FAQ,给 2。已知限制方面:列出 API 覆盖、委派、凭据、后端扩展限制,但未集中成限制清单,给 2。许可证方面:Apache-2.0 全文完整,给 3。版本与变更日志方面:使用 changesets 与 release 工作流,但本次证据未包含 CHANGELOG 内容,给 2。维护责任方面:发布者身份未验证,SECURITY.md 给出报告渠道与支持版本策略,但维护主体不明确,给 1。

有效结果7 / 13 · 2.7/5

输出可用性方面:API 示例可直接运行,会话可在 Console 跟踪,给 2。边际价值方面:作为自托管替代方案提供会话、执行、恢复与多适配器,价值明确但需自行运维,给 2。成本效益方面:需要自建数据库、队列、对象存储与沙箱,运维成本高,且无成本量化,给 1。

证据核验5 / 8 · 3.1/5

主张可追溯方面:README 大量主张链接到具体文件与文档路径,给 2。跨源印证方面:README 主张与 package.json 脚本、测试文件、工作流文件相互印证,给 2。事实与推断分离方面:README 明确标注 Beta、proposed integration、adapter 限制,区分了已实现与计划,给 2。

风险与缓解建议
  • 发布者身份未经验证,维护主体与更新路径不明确,企业采用前应确认治理与支持责任。
  • 依赖大量使用 ^ 范围且未提供锁文件证据,无法确认可复现安装与供应链安全。
  • Cloudflare 部署脚本会创建付费云资源,仓库内无强制确认或 dry-run,运行前需人工审查。
  • NOTICE 内容未包含在证据中,第三方归属与许可证合规无法核验。
  • 本次为静态源码审查,未执行任何代码,测试与运行时行为均未独立验证。
证据充分度:低 评估于 2026年10月16日 审查版本 fa3a68cf9eb8 评估后仓库已有新提交,评分可能未覆盖最新改动
查看完整评分方法 →

最近版本

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

  1. 发布说明摘录
    Patch Changes - 57906b3: Pi harness skill mounting strategies (skill_mount: progressive default, budgeted, tool, inline) replace default full SKILL.md system-prompt inlining for default/Pi harnesses. Deferred skills in budgeted mode are discoverable via tool_search; tool mode adds a skill loader tool.
    在 GitHub 查看 ↗
  2. 发布说明摘录
    Patch Changes - 57906b3: Pi harness skill mounting strategies (skill_mount: progressive default, budgeted, tool, inline) replace default full SKILL.md system-prompt inlining for default/Pi harnesses. Deferred skills in budgeted mode are discoverable via tool_search; tool mode adds a skill loader tool.
    在 GitHub 查看 ↗
  3. 发布说明摘录
    Patch Changes - 38f58cb: Pi agent-core is the default harness; legacy ai-sdk remains available but deprecated (one-time session.warning per session). Agents accept compaction via _oma.context_management (Anthropic Messages shape) or _oma.model_settings (OpenAI Agents SDK shape); conflicting dual definitions are rejected at save time. MCP tool results preserve content blocks on the wire. Agent max_tokens above the catalog window is accepted with a warning; pi-ai clamps output per request. …
    在 GitHub 查看 ↗

常见问题

自托管时能否不用沙箱,直接在宿主机跑 agent 命令?
不能。README 明确说明部署不会回退到在未隔离的宿主子进程里执行 agent 命令,必须选择并配置一个隔离的 SANDBOX_PROVIDER。只有 OpenAI 适配器的部分会话路径(如 environment: { type: "none" })声明不使用沙箱。
模型和凭据是怎么管的?
模型通过 Console 的 Model Cards 接入,可接 Anthropic、OpenAI、DeepSeek、OpenRouter 等 Pi 供应商或自定义端点;provider key 由 Model Cards 加密保存在静态存储中。Vault-backed gateway 可对私有服务做范围化访问,但 README 提示凭据隔离的实际强度取决于所选提供商与运行时配置。
用 Anthropic 或 OpenAI 的官方 SDK 能直接连过来吗?
可以。仓库把官方 Anthropic SDK 锁定在 0.120.0,OpenAI 适配器的测试基线是 [email protected];把 baseURL 指到 OpenMA 服务即可。但要注意两者是分别的契约,OpenAI 适配器在动态 subagent、环境设置等方面有额外限制,覆盖范围不等于整个平台。
这套东西要花多少钱?
软件本身是 Apache-2.0 开源,托管版有免费登录入口;实际开销来自你选用的模型 API 调用、沙箱提供商以及部署目标。Cloudflare 快速部署会在你的账号里创建可能计费的资源,Fly.io、Vercel 等路径同理。
多副本并发安全吗?会话会不会乱序?
README 说明 Node 部署可配共享 PostgreSQL/MySQL;沙箱外 harness 的副本通过 durable execution outbox、可续租约和 fencing 并行认领不同 session,而同一 session 内的工作保持有序。沙箱内 harness 使用独立的 Environment Work 认领,不会嵌套第二个 Session 执行认领。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

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

相关 Agents