Mozaik 多智能体运行时
用 TypeScript 构建可并发协作、通过事件互通的 AI 智能体。
- Star 数
- ★ 163
- 最近更新
- 4 天前
- License
- MIT
- 主语言
- TypeScript
- FA 评分
- 54/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台OpenAI API · Claude API
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 开发 TypeScript 多智能体应用的工程师,可让多个智能体并发处理同一共享目标并通过运行时事件协作。
- 不适合
- 需要开箱即用聊天应用或托管服务的用户
- 需要内置消息、工具与运行时持久化的团队
- 源码审查
- 54/100 · 缺口较多
这个 Agent 能做什么,适合哪些场景?
Mozaik 是一个 TypeScript 运行时与框架,供开发者在共享空间中构建可互通的 AI 智能体。通过 defineRuntime 创建运行时,并用 RuntimeState 子类保存参与者共享的数据;createAgent 和 createHuman 创建参与者。参与者加入后接收 SpaceEvent,可用 SituationSpecification 匹配事件,再由 SituationProcessor 执行反应。runLoop 以不阻塞调用者的方式驱动智能体状态机,支持推理、工具调用和可选流式输出;模型结果和生命周期事件会发布给所有已加入的参与者。它是供应用代码导入的 npm 包,不是托管产品;部署方式、状态持久化和界面由使用者的应用负责。
安装 @mozaik-ai/core 后,在 TypeScript 应用中调用 defineRuntime 并以 initializeRuntime 初始化 RuntimeState。用 createAgent 定义带有指令、工具、能力和处理器的智能体,用 createHuman 定义人类参与者,再通过 join 和 leave 管理运行时成员。参与者调用 sendMessage 或 sendEvent 发布事件;各处理器根据 SituationSpecification 判断是否响应,并通过 SituationProcessor.apply 启动 runLoop、更新共享状态或执行其他应用逻辑。智能体循环可调用模型并运行匹配的工具,发布推理、工具调用和 model.answer 等事件;使用方提供模型凭据,并自行决定如何保存输出和部署应用。
- 开发 TypeScript 多智能体应用的工程师,可让多个智能体并发处理同一共享目标并通过运行时事件协作。
- 构建智能体框架的团队,可用
SituationSpecification和SituationProcessor将事件条件与响应逻辑分开组合。 - 需要审计或展示智能体活动的开发者,可加入观察者参与者来记录
model.answer等事件。 - 希望在工具执行前审查或改写智能体动作的团队,可通过
InterceptionHandler检查循环转换。 - 需要基于运行时共享状态调整智能体行为的应用开发者,可扩展
RuntimeState并在处理器中读写它。
如何安装或部署这个 Agent?
在支持 TypeScript 的 Node.js 项目中安装包,并为所用模型提供商配置凭据。README 未指定 Node.js 版本、构建命令或部署方式。
如何使用这个 Agent?
先在 .env 中配置所用提供商的密钥。DeepSeek 使用 OpenAI 兼容的 chat-completions 接口,并需把 OPENAI_API_KEY 和 OPENAI_BASE_URL 指向 DeepSeek。下面的示例创建运行时、加入一个智能体和一个人类参与者,再启动智能体循环;需将 gpt-5.5 替换为你所用且支持的模型名称。
这个 Agent 有哪些优点和局限?
- 每次
runLoop都创建独立loopId,可同时运行不同智能体或同一智能体的多个循环。 SpaceEvent会扇出给所有已加入参与者,且运行时不会等待处理器完成,慢处理器不会阻塞事件生产者。- 支持 OpenAI、Anthropic、Gemini 模型凭据,并说明 DeepSeek 可走 OpenAI 兼容接口。
InterceptionHandler可在循环转换执行前检查并改写转换,便于加入人工控制。
- 需要集成到自己的 TypeScript 应用;README 未提供独立聊天应用或托管服务。
- 模型调用需要相应提供商凭据;使用 DeepSeek 还需配置 OpenAI 兼容的基础 URL。
- README 未说明数据库或持久化层;共享数据保存在
RuntimeState,应用需自行处理持久化。 - 处理器调用
runLoop和sendMessage为 fire-and-forget,README 提醒不要在处理器中等待它们。
这个 Agent 与同类方案有什么区别?
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| Mozaik 多智能体运行时 当前 | 54 · 缺口较多 | 代码库 / SDK免费 + 模型费 | ★ 163 | 4 天前 | TypeScript | OpenAI API · Claude API |
| Pi Agent Harness | 42 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 117k | 今天 | TypeScript | OpenAI API · Claude API |
| MiniCode | 50 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 1.2k | 14 天前 | TypeScript | Claude API |
| Remnic 智能体记忆 | 85 · 表现良好 | 命令行工具免费 + 模型费 | ★ 227 | 今天 | TypeScript | ChatGPT · Codex · Claude Code · OpenAI API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
README 明确说明 RuntimeState 是参与者共享的可变状态、事件会广播给所有已加入参与者,且无内外部事件分区;这使数据流较可见,故数据流透明度得 2。工具可由 runLoop 执行,拦截器可改写工具调用输入,但未说明权限隔离、逐次用户批准、敏感数据保护、外部副作用控制或回滚机制,因此最小权限、确认、敏感数据处理、外部效果和回滚仅得 1。README 列出按模型使用环境变量密钥,但未给出密钥存储或泄漏防护细节;依赖安全缺少审计证据,均仅得 1。作者和组织名称虽有列出,Publisher 身份未验证且维护路径不清,因此来源归属仅得 1。
README 对初始化前后行为、重复初始化、异步事件分发和 fire-and-forget 循环给出具体说明,且与其 API 描述大体一致,故自洽性得 2;未提供依赖锁定或可用性保障证据,依赖可用性得 1。对未初始化和重复初始化列出了明确异常信息,得 2;异步处理器失败后的传播或恢复信息有限,未给满分。
README 以协作式、多 Agent、观察者和事件反应场景解释用途,并给出 TypeScript API 示例,受众与场景得 2。能力边界有明确描述,例如无内建情境规格、事件向所有参与者广播、循环不等待且调用后台运行,得 2;处理器匹配由事件类型及 producerId 谓词控制,触发机制清晰但需自行编写,触发精度得 2。安装命令、Node/TypeScript 包入口和多提供商环境变量配置有所说明,但运行时支持矩阵不完整,环境适配得 2。
README 章节、API 表格和流程图组织清楚,信息架构得 3。提供 npm/yarn/pnpm 安装命令和密钥配置,但未说明运行前提与完整设置步骤,安装说明得 2。包名、API 名称和版本字段可辨认,但没有迁移规则证据,命名稳定性得 2。示例覆盖主要运行模式并链接外部示例仓库,但未见 FAQ,示例与常见问题得 2。对无内建规格、共享可变状态、非等待分发和 fire-and-forget 等限制有说明,得 2。LICENSE 和 package.json 均标明 MIT,许可得 3。package.json 有 beta 版本号,但未提供变更日志,版本与变更记录得 1。README 提及贡献指南,package.json 列作者,但没有清晰的维护责任人或更新承诺;维护责任得 1。
README 给出可复制的 API 片段、事件表和循环状态说明,能帮助开发者形成初始实现,输出可用性得 2。并发、共享事件和拦截能力提供了有根据的框架价值主张,但缺少量化比较或具体运行结果,边际价值得 2。运行时需配置模型提供商凭据并承担多个 SDK 依赖,文档未比较收益与集成成本,成本效益得 1。
多数 API 和行为主张在 README 中具体对应到函数、事件或代码片段,主张可追溯性得 2。提供的材料只有 README、LICENSE 和 package.json,虽有测试脚本但无测试内容可供交叉核对,跨来源佐证得 1。文档将核心目标表述为项目设计主张,并将具体行为用代码/API 示例说明;仍缺少独立验证,因此事实与推断区分得 2。
- 共享 RuntimeState 与向所有参与者广播的事件可能暴露对话或状态;集成方应自行定义访问边界和敏感数据处理方式。
- runLoop 可触发工具调用,拦截器也能改写调用输入;文档没有证明默认具备逐次确认、权限限制或副作用回滚。
- 材料未提供依赖审计、测试内容或变更日志;不要将 package.json 中的测试脚本视为已验证的测试结果。
常见问题
Mozaik 是可直接使用的聊天应用吗?
需要哪些模型密钥?
OPENAI_API_KEY、ANTHROPIC_API_KEY 和 GEMINI_API_KEY。DeepSeek 使用 OPENAI_API_KEY 与指向 DeepSeek 的 OPENAI_BASE_URL。智能体会并发运行吗?
runLoop 都启动独立循环并立即返回;多个循环可以同时运行。Mozaik 会自动保存对话和运行时状态吗?
RuntimeState 是参与者共享的状态对象,但未说明内置数据库或持久化机制。持久化需由应用处理。可以在模型调用前拦截工具调用吗?
runLoop 传入 InterceptionHandler,即可在待执行转换前检查它,并返回改写后的转换。