JackChen-me/open-multi-agent
GitHub: JackChen-me/open-multi-agent
TypeScript 多智能体框架,通过一次 runTeam() 调用自动分解任务、协调多智能体并行执行并合成结果。
Stars: 4983 | Forks: 2080
# 开放多智能体
TypeScript 多智能体编排框架。一次 `runTeam()` 调用,从目标到结果——框架将其分解为任务、解析依赖,并以并行方式运行智能体。
3 个运行时依赖 · 33 个源文件 · 可部署到任何 Node.js 运行的环境 · 在 [Latent Space](https://www.latent.space/p/ainews-a-quiet-april-fools) AI 新闻中提及
[](https://github.com/JackChen-me/open-multi-agent/stargazers)
[](./LICENSE)
[](https://www.typescriptlang.org/)
[](https://github.com/JackChen-me/open-multi-agent/actions)
**English** | [中文](./README_zh.md)
## 为什么选择开放多智能体?
- **目标输入,结果输出** — `runTeam(team, "Build a REST API")`。协调器智能体会自动将目标分解为带依赖关系和执行者的任务 DAG,并行运行独立任务,并合成最终输出。无需手动定义任务或连接图。
- **TypeScript 原生** — 为 Node.js 生态系统构建。`npm install`,导入,运行。无需 Python 运行时,无需子进程桥接,无需辅助服务。可嵌入 Express、Next.js、无服务器函数或 CI/CD 流水线。
- **可审计且轻量** — 3 个运行时依赖(`@anthropic-ai/sdk`、`openai`、`zod`)。33 个源文件。整个代码库一个下午就能读完。
- **模型无关** — Claude、GPT、Gemma 4 和本地模型(Ollama、vLLM、LM Studio、llama.cpp server)可在同一团队中使用。通过 `baseURL` 为每个智能体切换模型。
- **多智能体协作** — 具有不同角色、工具和模型的智能体通过消息总线和共享内存进行协作。
- **结构化输出** — 为任何智能体添加 `outputSchema`(Zod)。输出被解析为 JSON、验证,失败时自动重试一次。通过 `result.structured` 访问类型化结果。
- **任务重试** — 在任务上设置 `maxRetries` 以实现指数退避的自动重试。失败尝试会累积令牌使用量以实现准确计费。
- **人在环中** — 在 `runTasks()` 上提供可选的 `onApproval` 回调。每批任务完成后,你的回调决定是继续还是中止剩余工作。
- **生命周期钩子** — `AgentConfig` 上的 `beforeRun` / `afterRun`。在执行前拦截提示或之后后处理结果。从任一钩子抛出异常均可中止。
- **循环检测** — `AgentConfig` 上的 `loopDetection` 捕获卡住的智能体重复相同的工具调用或文本输出。可配置操作:警告(默认)、终止或自定义回调。
- **可观测性** — 可选的 `onTrace` 回调为每个 LLM 调用、工具执行、任务和智能体运行发出结构化跨度——包含计时、令牌使用量和用于关联的共享 `runId`。未订阅时零开销,零额外依赖。
## 快速开始
需要 Node.js >= 18。
```
npm install @jackchen_me/open-multi-agent
```
为你的提供商设置 API 密钥。通过 Ollama 的本地模型不需要 API 密钥——请参阅[示例 06](examples/06-local-model.ts)。
- `ANTHROPIC_API_KEY`
- `OPENAI_API_KEY`
- `GEMINI_API_KEY`
- `GITHUB_TOKEN`(用于 Copilot)
三个智能体,一个目标——框架处理其余事项:
```
import { OpenMultiAgent } from '@jackchen_me/open-multi-agent'
import type { AgentConfig } from '@jackchen_me/open-multi-agent'
const architect: AgentConfig = {
name: 'architect',
model: 'claude-sonnet-4-6',
systemPrompt: 'You design clean API contracts and file structures.',
tools: ['file_write'],
}
const developer: AgentConfig = {
name: 'developer',
model: 'claude-sonnet-4-6',
systemPrompt: 'You implement what the architect designs.',
tools: ['bash', 'file_read', 'file_write', 'file_edit'],
}
const reviewer: AgentConfig = {
name: 'reviewer',
model: 'claude-sonnet-4-6',
systemPrompt: 'You review code for correctness and clarity.',
tools: ['file_read', 'grep'],
}
const orchestrator = new OpenMultiAgent({
defaultModel: 'claude-sonnet-4-6',
onProgress: (event) => console.log(event.type, event.agent ?? event.task ?? ''),
})
const team = orchestrator.createTeam('api-team', {
name: 'api-team',
agents: [architect, developer, reviewer],
sharedMemory: true,
})
// Describe a goal — the framework breaks it into tasks and orchestrates execution
const result = await orchestrator.runTeam(team, 'Create a REST API for a todo list in /tmp/todo-api/')
console.log(`Success: ${result.success}`)
console.log(`Tokens: ${result.totalTokenUsage.output_tokens} output tokens`)
```
幕后发生的事情:
```
agent_start coordinator
task_start architect
task_complete architect
task_start developer
task_start developer // independent tasks run in parallel
task_complete developer
task_start reviewer // unblocked after implementation
task_complete developer
task_complete reviewer
agent_complete coordinator // synthesizes final result
Success: true
Tokens: 12847 output tokens
```
## 三种运行方式
| 模式 | 方法 | 使用场景 |
|------|--------|-------------|
| 单智能体 | `runAgent()` | 一个智能体,一个提示——最简单的入口 |
| 自动编排团队 | `runTeam()` | 给出目标,框架计划并执行 |
| 显式流水线 | `runTasks()` | 你定义任务图和分配 |
## 示例
所有示例都是 [`examples/`](
## 贡献者
## Star 历史
## 翻译
帮助翻译此 README — [提交 PR](https://github.com/JackChen-me/open-multi-agent/pulls)。
## 许可证
MIT
标签:Anthropic, CIS基准, Claude, CVE检测, GNU通用公共许可证, LLM编排, LLM评估, MITM代理, Node.js, Ollama, OpenAI, PyRIT, TypeScript, Zod, 人工智能, 任务分解, 内存规避, 多智能体框架, 多智能体系统, 威胁情报, 安全插件, 并行执行, 开发者工具, 开源, 用户模式Hook绕过, 结构化输出, 自动化攻击