From eaeb420c4364e8d63757a7bbdc412655ed6c9420 Mon Sep 17 00:00:00 2001 From: Jack Chen Date: Sun, 13 Sep 2026 02:39:45 +0800 Subject: [PATCH] docs: reposition README around own, approve, and audit (#604) Lead both root READMEs with the self-hosted runtime, durable approvals, and verifiable run records instead of the coordinator. Keep the H1 and logo block, replace only the tagline block, and add the no-telemetry, no-hosted-control-plane paragraph after the badges. Give durable approvals, the verifiable journal, and the governance floor one section each with source, test files, and current case counts. Demote multi-agent coordination to an "Optional coordinator" section, keep "Built with OMA" with the three most visible entries and a collapsed long tail, and drop the intro paragraph, the framework comparison pointer, the listing call to action, and the separate commercial support section. The Chinese README states the contact details in text instead of a WeChat QR image, which is removed. Sync the tagline block in the core package READMEs, set the same description on the root and core package.json, and remove the "killer feature" wording from the orchestrator header comments. --- .github/brand/wechat-qr.jpg | Bin 161329 -> 0 bytes README.md | 201 ++++++++--------- README_zh.md | 205 ++++++++---------- package.json | 2 +- packages/core/README.md | 6 +- packages/core/README_zh.md | 6 +- packages/core/package.json | 2 +- .../core/src/orchestrator/orchestrator.ts | 4 +- 8 files changed, 192 insertions(+), 234 deletions(-) delete mode 100644 .github/brand/wechat-qr.jpg diff --git a/.github/brand/wechat-qr.jpg b/.github/brand/wechat-qr.jpg deleted file mode 100644 index e7b412083ca4f475ae5c484befab508da5c9fa9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161329 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�>cgVJmhy) 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 CNEI&t diff --git a/README.md b/README.md index c169c22..ea6eb12 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,8 @@

- Describe the goal, not the graph.
- A self-organizing team of agents that runs in your environment, pauses for approval on consequential actions, and leaves a verifiable record of every run. + Agents your organization can own, approve, and audit.
+ A self-hosted TypeScript agent runtime: consequential actions wait for durable, tamper-evident approvals, and every run leaves a record you can verify offline, byte for byte.

@@ -34,7 +34,7 @@
-`open-multi-agent` is an AI agent orchestration framework for TypeScript backends that drops into any Node.js app. It runs **dynamic workflows**: a coordinator turns one goal into a task DAG at runtime, a deterministic scheduler executes it across the team, and the whole run stays data you can inspect, approve, and replay. The Run Viewer further down replays a real run from the trace store. +No telemetry. No hosted control plane. Your keys, your models — cloud, local (Ollama, vLLM, llama-server), or Chinese providers — your environment. Nothing stops working when the people who built it leave. ## Get started @@ -58,33 +58,101 @@ npm install @open-multi-agent/core ``` ```typescript -import { OpenMultiAgent } from '@open-multi-agent/core' +import { FileStore, OpenMultiAgent } from '@open-multi-agent/core' -const oma = new OpenMultiAgent({ defaultProvider: 'openai', defaultModel: 'gpt-5.4' }) - -const team = oma.createTeam('research-team', { - name: 'research-team', - agents: [ - { name: 'researcher', systemPrompt: 'Find the relevant facts.' }, - { name: 'analyst', systemPrompt: 'Compare evidence and identify tradeoffs.' }, - ], - sharedMemory: true, +// Your keys and your endpoint: a hosted provider, or a local server through baseURL. +const oma = new OpenMultiAgent({ + defaultProvider: 'openai', + defaultModel: 'gpt-5.4', + // Consequential tool calls (file writes, shell) pause for a human decision. + onToolCall: ({ consequential }) => (consequential ? { action: 'suspend' } : { action: 'allow' }), }) -const result = await oma.runTeam(team, 'Compare three approaches and recommend one.') +const team = oma.createTeam('ops', { + name: 'ops', + agents: [{ name: 'operator', systemPrompt: 'Reconcile overdue invoices.', toolPreset: 'readwrite' }], +}) -console.log(result.agentResults.get('coordinator')?.output) +// The checkpoint store keeps the run and its pending approvals durable. +const result = await oma.runTeam(team, 'Find overdue invoices and draft the reminders.', { + checkpoint: { store: new FileStore('./.oma/run.json') }, +}) + +// result.status?.code === 'suspended' until a reviewer decides result.pendingApprovals, +// each bound to a hash of exactly what the reviewer was shown. ``` +Set `OPENAI_API_KEY` to run this example. [Providers](docs/providers.md) covers other hosted models, local servers, OpenAI-compatible endpoints, and AI SDK providers. + +`runAgent()` runs a single agent, `runTasks()` executes an explicit pipeline, and `runTeam()` plans from a goal. The [Core package guide](packages/core/README.md) walks through all three modes, provider and credential setup, and the production checklist. The [example index](packages/core/examples/README.md) lists every runnable example across basics, cookbook workflows, patterns, providers, and integrations. + +## Durable approvals + +A plan, task dispatch, or tool-call gate can return `suspend`. The request is stored beside the checkpoint, bound to a SHA-256 hash of exactly what the reviewer saw, and the run resumes from that content after a restart. A decision is atomic and first-wins; a tampered request or a store without compare-and-set fails closed. + +[`approval/durable.ts`](packages/core/src/approval/durable.ts) · [`durable-approval.test.ts`](packages/core/tests/durable-approval.test.ts) (16 cases) · [`durable-approval-validation.test.ts`](packages/core/tests/durable-approval-validation.test.ts) (7 cases) · [Guide](docs/durable-approvals.md) + +## Verifiable journal + +Attach a journal backend and the run records every block the model saw, every tool call and result, and every context rewrite. `verifyRun()` reads it back cold, offline, and checks that each block's named source event still reproduces it byte for byte; an evicted window is reported as inconclusive, not as a failure. It proves lineage and content, not that the file was never edited. + +[`journal/verify.ts`](packages/core/src/journal/verify.ts) · [`journal/hash.ts`](packages/core/src/journal/hash.ts) · [`verify-run.test.ts`](packages/core/tests/verify-run.test.ts) (11 cases) · [Guide](docs/run-journal.md) + +## Governance floor + +Declare `governanceIntent: 'required'` with `requiredRoles`, and the run is judged on an execution receipt: which roles ran, in what order, with which dependency edges, and whether an independent review happened. The evaluator never sees agent output text, and a run can succeed and still report `unsatisfied`. + +[`orchestrator/governance.ts`](packages/core/src/orchestrator/governance.ts) · [`observability/execution-receipt.ts`](packages/core/src/observability/execution-receipt.ts) · [`governance-floor.test.ts`](packages/core/tests/governance-floor.test.ts) (16 cases) · [Guide](docs/tool-configuration.md#declared-governance-roles-in-runteam) · [Receipts](docs/observability.md#execution-receipts) + +## Runs where you run + +- **No telemetry, no hosted control plane.** A library with no OMA backend or account, and none planned. It makes no analytics, license, update, or phone-home request. [Self-hosting](docs/self-hosting.md) +- **Your keys, your models.** Built-in adapters for Anthropic, OpenAI, Azure OpenAI, Bedrock, Gemini, Grok, and Copilot, and for DeepSeek, Doubao, Hunyuan, MiniMax, MiMo, and Qiniu; Ollama, vLLM, and llama-server through `baseURL`; any OpenAI-compatible endpoint and Vercel AI SDK providers. [Providers](docs/providers.md) +- **Egress policy.** `offline` or `allowlist`, checked before a built-in adapter connects. A child policy can only tighten its parent, an unenforceable transport fails closed, and process and ACP backends sit outside it. [LLM egress policy](docs/egress-policy.md) + +## Built with OMA + +`open-multi-agent` launched 2026-04-01 under MIT. Known users and integrations to date: + +- **[temodar-agent](https://github.com/xeloxa/temodar-agent)** by [Ali Sünbül](https://github.com/xeloxa). WordPress security analysis platform running OMA's built-in tools (`bash`, `file_*`, `grep`) inside a Docker runtime. Confirmed production use. (~60 stars) +- **[Mark Galyan](https://github.com/apollo-mg)** runs OMA fully offline on local quantized models, using the coordinator and context compaction to keep autonomous agent loops alive under tight VRAM limits. Contributor since the framework's first month. +- **[Engram](https://www.engram-memory.com)**: "Git for AI memory." Syncs knowledge across agents instantly and flags conflicts. ([repo](https://github.com/Agentscreator/engram-memory), ~80 stars) +

-Full example: DAG readback, token usage, and model overrides +More users and integrations + +**Users** + +- **[PR-Copilot](https://github.com/kidoom/PR-Copilot)** by [kidoom](https://github.com/kidoom). AI pull-request review assistant running an OMA review team, with `defineTool` repo-context tools and a custom `ContextStrategy` for token-aware diff compression. +- **[StuFlow](https://github.com/znc15/StuFlow)** by [znc15](https://github.com/znc15). Terminal AI coding assistant on OMA's orchestration core, driving `runAgent` / `runTasks` / `runTeam` with a custom coordinator, paired with DeepSeek. +- **[Reports to Charts Studio](https://github.com/NARNIX0/Evident-Project)**. Turns documents and research tables into slide-ready charts, using a five-role extraction council with structured outputs and deterministic validation. + +**Integrations** + +- **[@agentsonar/oma](https://github.com/agentsonar/agentsonar-oma)**: Sidecar detecting cross-run delegation cycles, repetition, and rate bursts. +- **[CodingScaffold](https://github.com/JRS1986/CodingScaffold)**: Agentic-coding scaffold that lists OMA as an optional orchestration backend, with a `runTeam` workflow template. +- **[baize-oma](https://github.com/timywel/baize-oma)**: HTTP adapter exposing OMA `runAgent()` and `runTeam()` as Baize slot capabilities. + +
+ +We build customer-owned systems on OMA for organizations that need one. Email [jack@yuanasi.com](mailto:jack@yuanasi.com). + +## Sponsors + +Paid sponsors supporting `open-multi-agent`. Sponsorship does not affect technical decisions or model recommendations. + +**Providers** + +- **[Atlas Cloud](https://www.atlascloud.ai/console/coding-plan)**: Full-modal AI inference platform giving one API for video, image, and LLM across 300+ curated models. $5 credit vouchers for OMA users, first come first served. See the [Atlas Cloud setup guide](docs/providers-atlascloud.md). + +## Optional coordinator + +`runTeam()` decomposes a goal into a task graph across agents. One model call turns the goal into task specs with assignees and dependencies, a deterministic scheduler executes them, and a second call writes the final answer from the completed task outputs. The coordinator is never consulted mid-run, and the finished run is data you can read back. Use `runAgent()` or `runTasks()` when you already know the work. ```typescript import { OpenMultiAgent } from '@open-multi-agent/core' -const model = process.env.OMA_MODEL ?? 'gpt-5.4' - -const oma = new OpenMultiAgent({ defaultProvider: 'openai', defaultModel: model }) +const oma = new OpenMultiAgent({ defaultProvider: 'openai', defaultModel: 'gpt-5.4' }) const team = oma.createTeam('research-team', { name: 'research-team', @@ -107,108 +175,21 @@ console.log(result.agentResults.get('coordinator')?.output) console.log(result.totalTokenUsage) ``` - - -
-Pause consequential tool calls for approval - -```typescript -import { FileStore, OpenMultiAgent } from '@open-multi-agent/core' - -// Your keys and your endpoint: a hosted provider, or a local server through baseURL. -const oma = new OpenMultiAgent({ - defaultProvider: 'openai', - defaultModel: 'gpt-5.4', - // Consequential tool calls (file writes, shell) pause for a human decision. - onToolCall: ({ consequential }) => (consequential ? { action: 'suspend' } : { action: 'allow' }), -}) - -const team = oma.createTeam('ops', { - name: 'ops', - agents: [{ name: 'operator', systemPrompt: 'Reconcile overdue invoices.', toolPreset: 'readwrite' }], -}) - -// The coordinator plans the task DAG from the goal; the checkpoint store keeps the run durable. -const result = await oma.runTeam(team, 'Find overdue invoices and draft the reminders.', { - checkpoint: { store: new FileStore('./.oma/run.json') }, -}) - -// result.status?.code === 'suspended' until a reviewer decides result.pendingApprovals, -// each bound to a hash of exactly what the reviewer was shown. -``` - -
- -Set `OPENAI_API_KEY` to run this example. [Providers](docs/providers.md) covers other hosted models, local servers, OpenAI-compatible endpoints, and AI SDK providers. - -`runTeam()` plans from a goal, `runAgent()` runs a single agent, and `runTasks()` executes an explicit pipeline. The [Core package guide](packages/core/README.md) walks through all three modes, provider and credential setup, and the production checklist. The [example index](packages/core/examples/README.md) lists every runnable example across basics, cookbook workflows, patterns, providers, and integrations. - -## Why OMA - -**Every seam, an interface. Every run, a record.** - -OMA combines dynamic orchestration with the control, evidence, and recovery paths needed to move multi-agent systems from prototype to production. - -- **Dynamic orchestration.** Describe the goal and let the coordinator build the task DAG, assign work, and synthesize the result at runtime. There is no hand-wired graph to maintain. -- **Controlled execution.** Preview, approve, or durably suspend plans, task dispatches, and tool calls; the framework ships the approval API and durable records, and the review surface and transport are yours to build. Freeze approved plans for replay. Declare required roles and order when topology cannot drift, and verify outputs with multi-agent consensus. -- **Reliability.** Resume interrupted runs from checkpoints, or opt into append-only plan repair at task outcome barriers. Retries, timeouts, loop detection, and token and cost budgets keep execution bounded. -- **Observability and evaluation.** Follow each run through stable identity, execution receipts, and traces; the record is verifiable for order and lineage, not tamper-evident. Replay the task DAG and span waterfall in the offline Run Viewer, or export through the optional OpenTelemetry adapter. The same records feed versioned EvalSets, offline reports, CI gates, and production sampling. -- **Safety and privacy.** Tools are default-deny, individual calls are gated, and explicit privacy controls apply to telemetry and persisted state. -- **Open runtime.** Process and ACP backends put Claude Code, Gemini CLI, and Codex on the same task DAG, shared memory, and budgets as LLM agents, though those backends run outside the per-call tool gate, filesystem sandbox, and LLM egress policy. Mix cloud and local models, natively integrated Chinese providers, OpenAI-compatible endpoints, and AI SDK providers, with a fallback parser for local models that emit tool calls as text. Run on your own infrastructure and credentials, locally, offline, or air-gapped; see [Self-hosting and data residency](docs/self-hosting.md). -

- OMA Run Viewer replaying a real multi-agent run: task DAG and span waterfall views with per-task status, assignee, tokens, and tool calls + OMA Run Viewer replaying a real run: task DAG and span waterfall views with per-task status, assignee, tokens, and tool calls

The offline Run Viewer replaying a real run from the trace store: task DAG, span waterfall, and per-task evidence, with no hosted service involved.

-## Built with OMA - -`open-multi-agent` launched 2026-04-01 under MIT. Known users and integrations to date: - -- **[temodar-agent](https://github.com/xeloxa/temodar-agent)** by [Ali Sünbül](https://github.com/xeloxa). WordPress security analysis platform running OMA's built-in tools (`bash`, `file_*`, `grep`) inside a Docker runtime. Confirmed production use. -- **[Mark Galyan](https://github.com/apollo-mg)** runs OMA fully offline on local quantized models, using the coordinator and context compaction to keep autonomous agent loops alive under tight VRAM limits. Contributor since the framework's first month. -- **[PR-Copilot](https://github.com/kidoom/PR-Copilot)** by [kidoom](https://github.com/kidoom). AI pull-request review assistant running an OMA review team, with `defineTool` repo-context tools and a custom `ContextStrategy` for token-aware diff compression. -- **[StuFlow](https://github.com/znc15/StuFlow)** by [znc15](https://github.com/znc15). Terminal AI coding assistant on OMA's orchestration core, driving `runAgent` / `runTasks` / `runTeam` with a custom coordinator, paired with DeepSeek. -- **[Reports to Charts Studio](https://github.com/NARNIX0/Evident-Project)**. Turns documents and research tables into slide-ready charts, using a five-role extraction council with structured outputs and deterministic validation. - -**Integrations** - -- **[Engram](https://www.engram-memory.com)**: "Git for AI memory." Syncs knowledge across agents instantly and flags conflicts. ([repo](https://github.com/Agentscreator/engram-memory), ~80 stars) -- **[@agentsonar/oma](https://github.com/agentsonar/agentsonar-oma)**: Sidecar detecting cross-run delegation cycles, repetition, and rate bursts. -- **[CodingScaffold](https://github.com/JRS1986/CodingScaffold)**: Agentic-coding scaffold that lists OMA as an optional orchestration backend, with a `runTeam` workflow template. -- **[Bilig WorkPaper](https://github.com/proompteng/bilig)**: Formula-workbook MCP server with a reciprocal OMA integration for editing inputs, recalculating formulas, verifying readback, and persisting WorkPaper JSON. -- **[baize-oma](https://github.com/timywel/baize-oma)**: HTTP adapter exposing OMA `runAgent()` and `runTeam()` as Baize slot capabilities. - -Using `open-multi-agent` in production or a side project? [Open a discussion](https://github.com/open-multi-agent/open-multi-agent/discussions) and we will list it here. Built an integration? The [integration guide](packages/core/examples/integrations/README.md) covers how to get listed. For a deep integration, see the [Featured partner program](docs/featured-partner.md). - -## Sponsors - -Paid sponsors supporting `open-multi-agent`. Sponsorship does not affect technical decisions or model recommendations. - -**Providers** - -- **[Atlas Cloud](https://www.atlascloud.ai/console/coding-plan)**: Full-modal AI inference platform giving one API for video, image, and LLM across 300+ curated models. $5 credit vouchers for OMA users, first come first served. See the [Atlas Cloud setup guide](docs/providers-atlascloud.md). - -## When OMA fits - -OMA is designed for TypeScript teams that want the task graph to emerge from the goal at runtime. - -Choose a graph-first framework when the workflow must be authored node by node. Use an LLM toolkit alone when one agent call is enough. OMA sits at the orchestration layer when several agents, dependencies, approvals, or recovery steps must work together. - -For a named head-to-head against LangGraph, Mastra, CrewAI, the Vercel AI SDK, and others, see the [comparison page](https://open-multi-agent.com/compare/?utm_source=github&utm_medium=readme). +[Coordinator](docs/coordinator.md) covers what it decides and what it is allowed to see. [Plan replay](docs/plan-replay.md) freezes an approved plan, [Consensus](docs/consensus.md) verifies outputs with independent judges, and [External agents](docs/external-agents.md) puts Claude Code, Gemini CLI, and Codex on the same task graph through process and ACP backends. ## Packages -- **[`@open-multi-agent/core`](packages/core/README.md)**: Orchestration runtime, tools, memory, checkpoints, traces, CLI, and offline Run Viewer. -- **[`@open-multi-agent/otel`](packages/otel/README.md)**: Optional enterprise integration for production teams with a centralized OpenTelemetry stack. +- **[`@open-multi-agent/core`](packages/core/README.md)**: Runtime, tools, memory, checkpoints, approvals, journal, traces, CLI, and offline Run Viewer. +- **[`@open-multi-agent/otel`](packages/otel/README.md)**: Optional OpenTelemetry adapter for teams with a centralized OpenTelemetry stack. - **[`create-oma-app`](packages/create-oma-app/README.md)**: Scaffolder behind `npm create oma-app`; starter templates with a no-key local demo. Core users can store traces locally and inspect them with the offline Run Viewer. Install the OTel package only when OMA traces should appear in the same monitoring system as the rest of your application. -## Commercial support - -Need to embed agent capabilities in an existing product or business system? We help teams scope AI use cases, embed agent capabilities, and support delivery. Email [jack@yuanasi.com](mailto:jack@yuanasi.com). - ## Documentation | Goal | Start here | diff --git a/README_zh.md b/README_zh.md index 305f839..325528e 100644 --- a/README_zh.md +++ b/README_zh.md @@ -8,8 +8,8 @@

- 只描述目标,不画任务图。
- 多智能体自主分工协作,在自有环境中运行:关键操作经审批放行,每次运行留有可核验记录。 + Agent 的所有权、审批权与审计权,归于使用它的组织。
+ 自托管的 TypeScript Agent 运行时:关键操作要等一条持久化、防篡改的审批,每次运行留下一份可离线逐字节核验的记录。

@@ -34,7 +34,7 @@
-`open-multi-agent` 是面向 TypeScript 后端的多智能体编排框架,可直接嵌入任意 Node.js 应用。它运行的是**动态工作流(dynamic workflows)**:Coordinator 在运行时将一个目标分解为任务 DAG,由确定性调度器分派给团队执行,整个运行过程始终是可审查、可审批、可回放的数据。下文的动图是内置离线 Run Viewer 对一次真实运行的回放。 +不上报遥测,没有托管控制面。你的密钥、你的模型(云端、本地 Ollama / vLLM / llama-server、国产模型)、你的环境。建它的人走了,系统照常跑。 ## 快速开始 @@ -55,33 +55,101 @@ npm install @open-multi-agent/core ``` ```typescript -import { OpenMultiAgent } from '@open-multi-agent/core' +import { FileStore, OpenMultiAgent } from '@open-multi-agent/core' -const oma = new OpenMultiAgent({ defaultProvider: 'openai', defaultModel: 'gpt-5.4' }) - -const team = oma.createTeam('research-team', { - name: 'research-team', - agents: [ - { name: 'researcher', systemPrompt: 'Find the relevant facts.' }, - { name: 'analyst', systemPrompt: 'Compare evidence and identify tradeoffs.' }, - ], - sharedMemory: true, +// 密钥与端点都是你自己的:托管模型,或通过 baseURL 接本地服务。 +const oma = new OpenMultiAgent({ + defaultProvider: 'openai', + defaultModel: 'gpt-5.4', + // 有实际副作用的工具调用(写文件、执行 shell)挂起,等待人工决定。 + onToolCall: ({ consequential }) => (consequential ? { action: 'suspend' } : { action: 'allow' }), }) -const result = await oma.runTeam(team, 'Compare three approaches and recommend one.') +const team = oma.createTeam('ops', { + name: 'ops', + agents: [{ name: 'operator', systemPrompt: '核对逾期发票。', toolPreset: 'readwrite' }], +}) -console.log(result.agentResults.get('coordinator')?.output) +// checkpoint store 让整次运行和待审批请求一起持久化。 +const result = await oma.runTeam(team, '找出逾期发票并起草催款提醒。', { + checkpoint: { store: new FileStore('./.oma/run.json') }, +}) + +// 在审批人处理 result.pendingApprovals 之前,result.status?.code 保持为 'suspended'; +// 每条待审批请求都绑定审批人实际看到内容的哈希。 ``` +运行这段示例需要设置 `OPENAI_API_KEY`。其他云端模型、本地服务、OpenAI 兼容端点与 AI SDK provider 的配置见 [Provider 文档](docs/providers.md)。 + +`runAgent()` 运行单个 Agent,`runTasks()` 执行显式流水线,`runTeam()` 从目标自动规划。三种模式、Provider 与凭证配置、生产检查清单见[核心包使用指南](packages/core/README_zh.md)。[示例索引](packages/core/examples/README.md)收录全部可运行示例,覆盖基础、cookbook 流程、模式、Provider 与集成。 + +## 持久化审批 + +计划、任务派发和工具调用 gate 都可以返回 `suspend`。审批请求写在 checkpoint 旁边,绑定审批人实际看到内容的 SHA-256 哈希,进程重启后从这份内容继续。决定原子、先到先得;内容被篡改,或存储不支持 compare-and-set,直接失败关闭。 + +[`approval/durable.ts`](packages/core/src/approval/durable.ts) · [`durable-approval.test.ts`](packages/core/tests/durable-approval.test.ts)(16 条)· [`durable-approval-validation.test.ts`](packages/core/tests/durable-approval-validation.test.ts)(7 条)· [文档](docs/durable-approvals.md) + +## 可核验日志 + +接上 journal 后端,运行会记下模型看到的每个 block、每次工具调用及结果、每次上下文改写。`verifyRun()` 离线冷读整份日志,检查每个 block 引用的来源事件是否仍能逐字节复现它;日志窗口被淘汰只报"无法判定",不算失败。它证明的是血缘与内容,不是文件从未被改过。 + +[`journal/verify.ts`](packages/core/src/journal/verify.ts) · [`journal/hash.ts`](packages/core/src/journal/hash.ts) · [`verify-run.test.ts`](packages/core/tests/verify-run.test.ts)(11 条)· [文档](docs/run-journal.md) + +## 治理底线 + +声明 `governanceIntent: 'required'` 与 `requiredRoles`,运行就按执行回执判定:哪些角色真正执行、先后顺序、依赖边、是否发生独立审查。评估器拿不到 Agent 输出文本;运行可以成功结束,同时报 `unsatisfied`。 + +[`orchestrator/governance.ts`](packages/core/src/orchestrator/governance.ts) · [`observability/execution-receipt.ts`](packages/core/src/observability/execution-receipt.ts) · [`governance-floor.test.ts`](packages/core/tests/governance-floor.test.ts)(16 条)· [文档](docs/tool-configuration.md#declared-governance-roles-in-runteam) · [执行回执](docs/observability.md#execution-receipts) + +## 在你自己的环境里跑 + +- **不上报遥测,没有托管控制面。** 它是一个库,没有 OMA 后端和账号,也没有这样的计划;不发统计、许可证、更新或任何回连请求。[自托管与数据驻留](docs/self-hosting.md) +- **你的密钥、你的模型。** 内置 Anthropic、OpenAI、Azure OpenAI、Bedrock、Gemini、Grok、Copilot 适配器,以及 DeepSeek、豆包、混元、MiniMax、MiMo、七牛;Ollama、vLLM、llama-server 通过 `baseURL` 接入;另支持任意 OpenAI 兼容端点与 Vercel AI SDK provider。[Provider 文档](docs/providers.md) +- **出网策略。** `offline` 或 `allowlist`,在内置适配器建立连接前生效;下级策略只能收紧上级,无法完整约束的传输层直接失败关闭,process 与 ACP backend 不在覆盖范围内。[LLM 出网策略](docs/egress-policy.md) + +## 基于 OMA 构建 + +`open-multi-agent` 2026-04-01 发布,MIT 协议。当前公开在用与集成的项目: + +- **[temodar-agent](https://github.com/xeloxa/temodar-agent)**,作者 [Ali Sünbül](https://github.com/xeloxa)。WordPress 安全分析平台,在 Docker runtime 里直接使用 OMA 内置工具(`bash`、`file_*`、`grep`)。已确认生产环境使用。(约 60 stars) +- **[Mark Galyan](https://github.com/apollo-mg)** 在本地量化模型上完全离线运行 OMA,借助 Coordinator 与上下文压缩,在显存受限的条件下维持自治 Agent 循环持续运行。自框架发布首月起持续贡献。 +- **[Engram](https://www.engram-memory.com)**:"AI 记忆的 Git"。在 agent 之间即时同步知识并标记冲突。([repo](https://github.com/Agentscreator/engram-memory),约 80 stars) +

-完整示例:DAG 回读、token 统计与环境变量覆盖 +更多用户与集成 + +**用户** + +- **[PR-Copilot](https://github.com/kidoom/PR-Copilot)**,作者 [kidoom](https://github.com/kidoom)。AI pull request 审查助手,运行 OMA 审查 team,用 `defineTool` 定义仓库上下文工具,并加入自定义 `ContextStrategy` 做 token-aware 的 diff 压缩。 +- **[StuFlow](https://github.com/znc15/StuFlow)**,作者 [znc15](https://github.com/znc15)。终端 AI 编码助手,以 OMA 为编排内核,通过 `runAgent` / `runTasks` / `runTeam` 驱动自定义 coordinator,搭配 DeepSeek。 +- **[Reports to Charts Studio](https://github.com/NARNIX0/Evident-Project)**。把文档和研究表格转换成可直接用于幻灯片的图表,使用由五个角色组成的数据提取评审组,结合结构化输出与确定性校验。 + +**集成** + +- **[@agentsonar/oma](https://github.com/agentsonar/agentsonar-oma)**:Sidecar,检测跨运行的委派环、重复和速率突增。 +- **[CodingScaffold](https://github.com/JRS1986/CodingScaffold)**:agentic-coding 脚手架,把 OMA 列为可选编排后端,附带 `runTeam` 工作流模板。 +- **[baize-oma](https://github.com/timywel/baize-oma)**:HTTP 适配层,把 OMA 的 `runAgent()` 和 `runTeam()` 暴露为 Baize slot 能力。 + +
+ +我们为需要的组织在 OMA 上构建由客户自己拥有的 AI 系统。邮件 [jack@yuanasi.com](mailto:jack@yuanasi.com),或微信 13760249135。 + +## 赞助商 + +支持 `open-multi-agent` 的付费赞助商。赞助不影响技术决策与模型推荐。 + +**Provider** + +- **[Atlas Cloud](https://www.atlascloud.ai/console/coding-plan)**:全模态 AI 推理平台,单一 API 打通视频、图像与 LLM,覆盖 300+ 精选模型。$5 credit 兑换码面向 OMA 用户开放,先到先得。见 [Atlas Cloud 接入指南](docs/providers-atlascloud_zh.md)。 + +## 可选的 Coordinator + +`runTeam()` 把一个目标分解为跨 Agent 的任务图。一次模型调用把目标转成带负责人和依赖关系的任务规格,确定性调度器负责执行,第二次调用基于已完成任务的输出写出最终答案。Coordinator 在运行中途不会再被咨询,运行结束后整个过程都是可以读回的数据。已经知道要做什么时,用 `runAgent()` 或 `runTasks()`。 ```typescript import { OpenMultiAgent } from '@open-multi-agent/core' -const model = process.env.OMA_MODEL ?? 'gpt-5.4' - -const oma = new OpenMultiAgent({ defaultProvider: 'openai', defaultModel: model }) +const oma = new OpenMultiAgent({ defaultProvider: 'openai', defaultModel: 'gpt-5.4' }) const team = oma.createTeam('research-team', { name: 'research-team', @@ -104,112 +172,21 @@ console.log(result.agentResults.get('coordinator')?.output) console.log(result.totalTokenUsage) ``` - - -
-让有副作用的工具调用挂起等待审批 - -```typescript -import { FileStore, OpenMultiAgent } from '@open-multi-agent/core' - -// 密钥与端点都是你自己的:托管模型,或通过 baseURL 接本地服务。 -const oma = new OpenMultiAgent({ - defaultProvider: 'openai', - defaultModel: 'gpt-5.4', - // 有实际副作用的工具调用(写文件、执行 shell)挂起,等待人工决定。 - onToolCall: ({ consequential }) => (consequential ? { action: 'suspend' } : { action: 'allow' }), -}) - -const team = oma.createTeam('ops', { - name: 'ops', - agents: [{ name: 'operator', systemPrompt: '核对逾期发票。', toolPreset: 'readwrite' }], -}) - -// Coordinator 从目标规划任务 DAG;checkpoint store 让整次运行可持久化。 -const result = await oma.runTeam(team, '找出逾期发票并起草催款提醒。', { - checkpoint: { store: new FileStore('./.oma/run.json') }, -}) - -// 在审批人处理 result.pendingApprovals 之前,result.status?.code 保持为 'suspended'; -// 每条待审批请求都绑定审批人实际看到内容的哈希。 -``` - -
- -运行这段示例需要设置 `OPENAI_API_KEY`。其他云端模型、本地服务、OpenAI 兼容端点与 AI SDK provider 的配置见 [Provider 文档](docs/providers.md)。 - -`runTeam()` 从目标自动规划,`runAgent()` 运行单个 Agent,`runTasks()` 执行显式流水线。三种模式、Provider 与凭证配置、生产检查清单见[核心包使用指南](packages/core/README_zh.md)。[示例索引](packages/core/examples/README.md)收录全部可运行示例,覆盖基础、cookbook 流程、模式、Provider 与集成。 - -## 为什么选择 OMA - -**万物皆接口,每次运行皆可回溯。** - -OMA 将动态编排与生产所需的控制、证据和恢复能力结合起来,帮助多智能体系统从原型走向生产环境。 - -- **动态编排。** 只需描述目标,Coordinator 就会在运行时生成任务 DAG、分配工作并合成结果,无需手工维护工作流图。 -- **受控执行。** 可预览、审批或持久化挂起计划、任务派发与工具调用,并固化已审批计划以供重放;框架提供审批 API 与持久化审批记录,审批界面与传递通道由接入方自行实现。当拓扑不容漂移时可声明必需的角色与执行顺序,并通过多 Agent 共识验证结果。 -- **可靠性。** 通过 Checkpoint 从断点恢复中断的运行,或选择在任务结果屏障处启用仅追加式计划修复;重试、超时、循环检测与 token、成本双预算让执行始终有明确边界。 -- **可观测与评测。** 通过稳定的运行标识、执行回执与 Trace 跟踪每次运行,在离线 Run Viewer 中回放任务 DAG 与 span 瀑布,或通过可选的 OpenTelemetry 适配器导出;同一套运行记录可直接支撑版本化 EvalSet、离线报告、CI gate 与线上采样。这套记录可核验执行顺序与血缘,但不提供防篡改保证。 -- **安全与隐私。** 内置工具默认拒绝,支持逐次调用 gate,并对遥测与持久化状态应用显式的隐私控制。 -- **开放运行时。** Process 与 ACP backend 让 Claude Code、Gemini CLI、Codex 和 LLM Agent 同处一个任务 DAG,并共享记忆与预算,但这类外部 backend 不在逐次工具 gate、文件沙箱与 LLM 出网策略的覆盖范围内;可混用云端模型、本地开源模型、原生接入的国产模型、OpenAI 兼容端点与 AI SDK provider,并通过容错解析支持以文本形式返回工具调用的本地模型;支持使用自有基础设施与凭证,本地、离线或气隙部署,详见[自托管与数据驻留](docs/self-hosting.md)。 -

- OMA Run Viewer 回放真实多智能体运行:任务 DAG 与 span 瀑布双视图,展示每个任务的状态、负责人、token 与工具调用 + OMA Run Viewer 回放真实运行:任务 DAG 与 span 瀑布双视图,展示每个任务的状态、负责人、token 与工具调用

内置离线 Run Viewer 基于 trace store 回放一次真实运行:任务 DAG、span 瀑布与逐任务证据,不依赖任何托管服务。

-## 基于 OMA 构建 - -`open-multi-agent` 2026-04-01 发布,MIT 协议。当前公开在用与集成的项目: - -- **[temodar-agent](https://github.com/xeloxa/temodar-agent)**,作者 [Ali Sünbül](https://github.com/xeloxa)。WordPress 安全分析平台,在 Docker runtime 里直接使用 OMA 内置工具(`bash`、`file_*`、`grep`)。已确认生产环境使用。 -- **[Mark Galyan](https://github.com/apollo-mg)** 在本地量化模型上完全离线运行 OMA,借助 Coordinator 与上下文压缩,在显存受限的条件下维持自治 Agent 循环持续运行。自框架发布首月起持续贡献。 -- **[PR-Copilot](https://github.com/kidoom/PR-Copilot)**,作者 [kidoom](https://github.com/kidoom)。AI pull request 审查助手,运行 OMA 审查 team,用 `defineTool` 定义仓库上下文工具,并加入自定义 `ContextStrategy` 做 token-aware 的 diff 压缩。 -- **[StuFlow](https://github.com/znc15/StuFlow)**,作者 [znc15](https://github.com/znc15)。终端 AI 编码助手,以 OMA 为编排内核,通过 `runAgent` / `runTasks` / `runTeam` 驱动自定义 coordinator,搭配 DeepSeek。 -- **[Reports to Charts Studio](https://github.com/NARNIX0/Evident-Project)**。把文档和研究表格转换成可直接用于幻灯片的图表,使用由五个角色组成的数据提取评审组,结合结构化输出与确定性校验。 - -**集成** - -- **[Engram](https://www.engram-memory.com)**:"AI 记忆的 Git"。在 agent 之间即时同步知识并标记冲突。([repo](https://github.com/Agentscreator/engram-memory),约 80 stars) -- **[@agentsonar/oma](https://github.com/agentsonar/agentsonar-oma)**:Sidecar,检测跨运行的委派环、重复和速率突增。 -- **[CodingScaffold](https://github.com/JRS1986/CodingScaffold)**:agentic-coding 脚手架,把 OMA 列为可选编排后端,附带 `runTeam` 工作流模板。 -- **[Bilig WorkPaper](https://github.com/proompteng/bilig)**:公式工作簿 MCP 服务,提供双向收录的 OMA 集成,可编辑输入、重新计算公式、校验回读结果并持久化 WorkPaper JSON。 -- **[baize-oma](https://github.com/timywel/baize-oma)**:HTTP 适配层,把 OMA 的 `runAgent()` 和 `runTeam()` 暴露为 Baize slot 能力。 - -在生产或 side project 中使用了 `open-multi-agent`?[请开个 Discussion](https://github.com/open-multi-agent/open-multi-agent/discussions),我们会将其列在这里。做了集成?收录方式见[集成指南](packages/core/examples/integrations/README.md)。深度集成的产品见 [Featured partner 计划](docs/featured-partner.md)。 - -## 赞助商 - -支持 `open-multi-agent` 的付费赞助商。赞助不影响技术决策与模型推荐。 - -**Provider** - -- **[Atlas Cloud](https://www.atlascloud.ai/console/coding-plan)**:全模态 AI 推理平台,单一 API 打通视频、图像与 LLM,覆盖 300+ 精选模型。$5 credit 兑换码面向 OMA 用户开放,先到先得。见 [Atlas Cloud 接入指南](docs/providers-atlascloud_zh.md)。 - -## OMA 适合什么场景 - -OMA 面向希望任务图随目标动态生成的 TypeScript 团队。 - -如果工作流必须逐节点手工设计,图优先框架更合适;如果只需要单个 Agent 调用,一个 LLM 工具库就够了。当多个 Agent、任务依赖、审批或恢复机制需要协同时,OMA 负责这一编排层。 - -与 LangGraph、Mastra、CrewAI、Vercel AI SDK 等的逐项对比见[对比页](https://open-multi-agent.com/zh/compare/?utm_source=github&utm_medium=readme)。 +[Coordinator](docs/coordinator.md) 说明它决定什么、能看到什么。[计划回放](docs/plan-replay.md)固化已审批的计划,[Consensus](docs/consensus.md) 用独立评审 Agent 验证输出,[外部 Agent](docs/external-agents.md) 通过 process 与 ACP backend 把 Claude Code、Gemini CLI、Codex 放到同一张任务图上。 ## 包 -- **[`@open-multi-agent/core`](packages/core/README_zh.md)**:编排运行时、工具、记忆、checkpoint、trace、CLI 和离线 Run Viewer。 -- **[`@open-multi-agent/otel`](packages/otel/README.md)**:面向已建立 OpenTelemetry 统一监控体系的生产团队的可选企业集成。 +- **[`@open-multi-agent/core`](packages/core/README_zh.md)**:运行时、工具、记忆、checkpoint、审批、journal、trace、CLI 和离线 Run Viewer。 +- **[`@open-multi-agent/otel`](packages/otel/README.md)**:面向已建立 OpenTelemetry 统一监控体系团队的可选 OpenTelemetry 适配器。 - **[`create-oma-app`](packages/create-oma-app/README.md)**:`npm create oma-app` 背后的脚手架;提供自带免 API Key 本地 Demo 的 starter 模板。 Core 用户可以在本地保存 trace,并用离线 Run Viewer 查看。只有当 OMA trace 需要进入应用现有的统一监控平台时,才需要安装 OTel 包。 -## 企业服务 - -面向已有产品或业务系统的团队,提供 AI 场景梳理、Agent 能力嵌入与交付支持。微信扫码联系,或邮件 [jack@yuanasi.com](mailto:jack@yuanasi.com)。 - -

- 微信扫码添加 JackChen 咨询 -

- ## 文档 | 目标 | 从这里开始 | diff --git a/package.json b/package.json index c9b9e78..c7844ea 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "open-multi-agent", "version": "0.0.0", "private": true, - "description": "Private workspace root for the open-multi-agent monorepo. The published package is @open-multi-agent/core in packages/core.", + "description": "Self-hosted TypeScript agent runtime with durable approvals and verifiable run records. Own it, approve it, audit it.", "workspaces": [ "packages/*" ], diff --git a/packages/core/README.md b/packages/core/README.md index 35225b4..d25d0da 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -8,8 +8,8 @@

- Describe the goal, not the graph.
- A self-organizing team of agents that runs in your environment, pauses for approval on consequential actions, and leaves a verifiable record of every run. + Agents your organization can own, approve, and audit.
+ A self-hosted TypeScript agent runtime: consequential actions wait for durable, tamper-evident approvals, and every run leaves a record you can verify offline, byte for byte.

@@ -283,7 +283,7 @@ persistence boundary. Core already provides run identity, trace sinks, execution receipts, queryable in-memory/file stores, and an offline Run Viewer. These cover local debugging, audit artifacts, and post-run analysis without OpenTelemetry. -[`@open-multi-agent/otel`](https://github.com/open-multi-agent/open-multi-agent/blob/main/packages/otel/README.md) is an **optional enterprise integration** for teams that already operate a centralized OpenTelemetry stack. It converts OMA traces into standard OTel spans so multi-agent runs can join company-wide monitoring, alerting, and incident workflows. The application owns the provider and its lifecycle; telemetry failures never change the run result. +[`@open-multi-agent/otel`](https://github.com/open-multi-agent/open-multi-agent/blob/main/packages/otel/README.md) is an **optional integration** for teams that already operate a centralized OpenTelemetry stack. It converts OMA traces into standard OTel spans so multi-agent runs can join company-wide monitoring, alerting, and incident workflows. The application owns the provider and its lifecycle; telemetry failures never change the run result. See the [observability guide](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/observability.md) and the [migration guide](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/observability-migration.md). diff --git a/packages/core/README_zh.md b/packages/core/README_zh.md index fef0d61..aa58109 100644 --- a/packages/core/README_zh.md +++ b/packages/core/README_zh.md @@ -8,8 +8,8 @@

- 只描述目标,不画任务图。
- 多智能体自主分工协作,在自有环境中运行:关键操作经审批放行,每次运行留有可核验记录。 + Agent 的所有权、审批权与审计权,归于使用它的组织。
+ 自托管的 TypeScript Agent 运行时:关键操作要等一条持久化、防篡改的审批,每次运行留下一份可离线逐字节核验的记录。

@@ -266,7 +266,7 @@ Coordinator -> 任务 DAG -> Scheduler -> AgentPool Core 已提供运行标识、trace sink、执行回执、可查询的内存/文件存储和离线 Run Viewer,足以完成本地排障、审计留档与运行后分析,无需安装 OpenTelemetry。 -[`@open-multi-agent/otel`](https://github.com/open-multi-agent/open-multi-agent/blob/main/packages/otel/README.md) 是面向已有集中式 OpenTelemetry 平台团队的**可选企业集成**。它把 OMA trace 转成标准 OTel span,让多 agent 运行接入企业统一监控、告警和故障处理流程。应用负责 provider 及其生命周期;telemetry 故障不会改变业务运行结果。 +[`@open-multi-agent/otel`](https://github.com/open-multi-agent/open-multi-agent/blob/main/packages/otel/README.md) 是面向已有集中式 OpenTelemetry 平台团队的**可选集成**。它把 OMA trace 转成标准 OTel span,让多 agent 运行接入统一监控、告警和故障处理流程。应用负责 provider 及其生命周期;telemetry 故障不会改变业务运行结果。 详见[可观测性指南](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/observability.md)与[迁移指南](https://github.com/open-multi-agent/open-multi-agent/blob/main/docs/observability-migration.md)。 diff --git a/packages/core/package.json b/packages/core/package.json index 0bb4332..e628dab 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,7 +1,7 @@ { "name": "@open-multi-agent/core", "version": "1.19.0", - "description": "TypeScript multi-agent orchestration that runs in your own environment: one call from goal to result, approval gates on consequential actions, and a verifiable record of every run. Built-in provider adapters plus any OpenAI-compatible endpoint, local models included.", + "description": "Self-hosted TypeScript agent runtime with durable approvals and verifiable run records. Own it, approve it, audit it.", "files": [ "dist", "README.md", diff --git a/packages/core/src/orchestrator/orchestrator.ts b/packages/core/src/orchestrator/orchestrator.ts index dc80834..72d4a34 100644 --- a/packages/core/src/orchestrator/orchestrator.ts +++ b/packages/core/src/orchestrator/orchestrator.ts @@ -32,7 +32,7 @@ * * - **Coordinator pattern** — `runTeam()` spins up a temporary "coordinator" agent * that breaks the high-level goal into tasks, assigns them, and synthesises the - * final answer. This is the framework's killer feature. + * final answer. * - **Parallel-by-default** — Independent tasks (no shared dependency) run in * parallel up to `maxConcurrency`. * - **Graceful failure** — A failed task marks itself `'failed'` and its direct @@ -1174,7 +1174,7 @@ export class OpenMultiAgent { } // ------------------------------------------------------------------------- - // Auto-orchestrated team run (KILLER FEATURE) + // Auto-orchestrated team run // ------------------------------------------------------------------------- /**