Atmosphere JVM 实时智能体引擎
为 JVM 智能体提供实时流式传输、协议接入与执行治理。
- Star 数
- ★ 3.8k
- 最近更新
- 1 天前
- License
- Apache-2.0
- 主语言
- Java
- FA 评分
- 46/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台OpenAI API · Claude API
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 已有 Spring Boot 服务的团队,需要把支持工具调用的客服智能体通过 WebSocket 或 SSE 流式提供给网页客户端。
- 不适合
- 需要无服务器、空闲即休眠的突发型自主智能体的团队
- 希望厂商托管平台、不愿自行运维 JVM 容器与调度的团队
- 需要支付与电商原语的应用
- 源码审查
- 46/100 · 缺口较多
这个 Agent 能做什么,适合哪些场景?
Atmosphere 是面向 JVM 的实时、事件驱动框架,用于把 AI 智能体作为应用内服务运行。开发者可用 @Agent 声明智能体,并按类路径加载的模块暴露浏览器端点、MCP、A2A、AG-UI 或消息渠道。其 atmosphere-ai 通过 AgentRuntime SPI 连接内置 OpenAI 兼容运行时及多个外部运行时适配器,同时保留宿主框架原有的模型、工具和内存能力。运行期间,令牌可经 broadcaster 管线通过 WebSocket、SSE、长轮询或 gRPC 发送;可选 WebTransport/HTTP/3 另有类路径和开发证书要求。该项目提供持久会话、检查点、人工审批、策略控制、审计与多智能体协调能力,但不负责模型权重托管、计算调度、支付或商业基础设施。它适合已有 Java、Spring Boot、Quarkus 或 Servlet 容器并需要受治理的长连接智能体交互的团队。
应用将带有 @Prompt、@Command 和 @AiTool 方法的类标注为 @Agent。atmosphere-agent 会注册 /atmosphere/agent/my-agent 浏览器端点、流式 AI 调度、内存、命令和 /help;加入 atmosphere-mcp、atmosphere-a2a 或 atmosphere-agui 后,会分别注册对应协议端点。请求进入后,AgentRuntime 选择可用运行时适配器调用模型;工具调用可经过 ToolExecutionHelper.executeWithApproval,策略与 @AgentScope 可在运行时派发前拦截请求。会话可写入 SQLite 或 Redis 持久层,检查点工作流可在人工批准时休眠并通过 REST 恢复;广播管线将文本和运行事件推送给已连接客户端。
- 已有 Spring Boot 服务的团队,需要把支持工具调用的客服智能体通过 WebSocket 或 SSE 流式提供给网页客户端。
- 在 JVM 内构建多智能体创业团队或专家协作流程的开发者,需要使用 @Coordinator、AgentFleet、交接与持久检查点。
- 需要在电子邮件、数据库或其他高风险工具调用前执行审批、范围限制、PII 重写或成本上限的企业团队。
- 希望同一 Java 智能体同时向浏览器、MCP 客户端、A2A 调用方和 Slack、Telegram、Discord、WhatsApp 或 Messenger 渠道提供服务的集成团队。
- 需要让断线后的长时运行可重连、回放或通过 REST 批准继续的业务流程开发者。
如何安装或部署这个 Agent?
安装 CLI:
brew install Atmosphere/tap/atmosphere或:
curl -fsSL https://raw.githubusercontent.com/Atmosphere/atmosphere/main/cli/install.sh | sh创建可运行项目:
atmosphere new my-agent --template ai-chat
cd my-agent
LLM_API_KEY=your-key ./mvnw spring-boot:run运行环境要求为 Java 21+;文档列出 Spring Boot 4.0.7,或使用 -Pspring-boot3 的 Spring Boot 3.5,以及 Quarkus 3.36.0+。
如何使用这个 Agent?
快速运行示例可执行:atmosphere run spring-boot-multi-agent-startup-team。在应用中添加 atmosphere-spring-boot-starter 与 atmosphere-agent 依赖,并用 @Agent(name = "my-agent", description = "What this agent does") 标注类;在类中使用 @Prompt 处理消息、@Command 声明命令、@AiTool 暴露工具。默认浏览器端点为 /atmosphere/agent/my-agent;添加 atmosphere-mcp 后,MCP 端点为 /atmosphere/agent/my-agent/mcp。可通过 --runtime spring-ai 创建使用 Spring AI 适配器的脚手架,或用 --runtime langchain4j --force 覆盖样例固定的运行时选择。
这个 Agent 有哪些优点和局限?
- 将 WebSocket、SSE、长轮询和 gRPC 汇入同一 broadcaster 管线;WebTransport/HTTP/3 也可作为可选传输方式启用。
- 以 AgentRuntime SPI 和十二个运行时适配器连接不同 AI 框架,且能力标志由契约测试约束。
- 治理位于执行关键路径:支持策略准入、@AgentScope、工具审批、PII 重写、成本上限和管理端终止开关。
- 持久会话、检查点和可休眠的人工审批流程支持断线重连、恢复和回放,而无需在休眠时占用线程。
- 同一 @Agent 可按模块暴露浏览器、MCP、A2A、AG-UI 及多个消息渠道接口。
- 它是应用内框架而非托管智能体平台;计算、调度、模型托管和定时触发均需由现有宿主栈提供。
- 运行时能力并不一致,适配器可能缺少音频、逐令牌流、提示缓存或其他能力;选择适配器前需要核对能力矩阵。
- Spring AI Alibaba 的流式输出是缓冲式;Embabel 仅支持 Spring Boot 3.5,并要求特定 starter 与构建 profile。
- 可选 WebTransport/HTTP/3 需要
jetty-http3-server或reactor-netty-http位于类路径,并配置开发证书。 - Docker 沙箱是默认 SandboxProvider,实现隔离代码执行时会引入 Docker 运行环境依赖。
这个 Agent 与同类方案有什么区别?
项目将自身定位为实时 JVM 服务层,而非 Cloudflare Agents、AWS Bedrock Agents 或 Vertex AI Agents 一类的智能体托管平台:它提供流式传输、治理和协议暴露,但不托管模型权重或负责计算调度。文档也将默认 @Agent 的内存、计划、虚拟文件系统和子智能体能力与 LangChain deepagents 对比;Atmosphere 的侧重点是将这类能力承载在 JVM 框架中。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| Atmosphere JVM 实时智能体引擎 当前 | 46 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 3.8k | 1 天前 | Java | OpenAI API · Claude API |
| ReachAI 企业智能体开发平台 | 60 · 存在缺口 | 自托管服务免费 + 模型费 | ★ 1k | 2 天前 | Java | OpenAI API |
| Embabel Agent Framework | 证据不足 | 开发框架免费 + 模型费 | ★ 4.5k | 今天 | Kotlin | OpenAI API |
| ai4j — Java AI Agentic 开发套件 | 52 · 缺口较多 | 代码库 / SDK免费 + 模型费 | ★ 437 | 23 天前 | Java | OpenAI API · Claude API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
证据显示有治理功能(如@AgentScope、审批、策略),但未提供默认权限最小化的具体实现细节。用户确认机制存在(命令确认、工具审批),但未说明默认是否启用。数据流透明度有限,未详细说明数据如何流动和记录。敏感数据处理有PII改写,但未深入。依赖安全有供应链加固(GPG验证),但未提供依赖漏洞扫描证据。外部影响有沙箱和审批,但未全面。回滚有检查点和重放,但未明确回滚机制。来源归属有Apache许可证,但发布者未验证。
自洽性较好,README与代码结构一致,但未深入验证。依赖可用性有Maven Central和npm,但未提供依赖版本锁定细节。失败消息有错误处理测试,但未全面覆盖。
受众明确(JVM团队),场景多样(流式、治理、多通道)。能力边界清晰(框架而非平台)。触发精度有@Command和@Prompt,但未详细说明触发条件。环境适配有Spring Boot、Quarkus等,但未全面。
信息架构清晰,模块划分明确。安装说明详细(Maven、npm、CLI)。命名稳定性未明确。示例丰富(多个samples)。已知限制有提及(如某些适配器不支持音频),但未全面。许可证为Apache-2.0。版本变更日志未提供。维护责任有SECURITY.md和CI,但发布者未验证。
输出可用性有客户端库和示例。边际价值高(多协议、治理)。成本效益未提供具体数据。
声明可追溯性有文档链接,但未提供具体证据。跨来源佐证有CI徽章,但未独立验证。事实与推断分离未明确。
- 发布者身份未验证,需谨慎评估供应链风险。
- 依赖安全未提供漏洞扫描证据,建议检查依赖版本和已知漏洞。
- 数据流透明度和敏感数据处理细节不足,需进一步审查。
- 回滚机制不明确,需确认检查点和重放是否满足回滚需求。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
atmosphere-4.0.76 Atmosphere 4.0.76
发布说明摘录
Added - keep a prompt under the run id its transport mints, shown again on reload at once - send a prompt under a run id the client mints, kept before it is sent - adopt the run id a client mints for its prompt, running a prompt once per id - serve the Atmosphere Console as the sample UI - keep the picked room across a page reload Fixed - ai-tools lets atmosphere.ai.mode and model apply when LLM_MODE and LLM_MODEL are unset - log a refused cleartext key once and a tool failure without a stack - new --runtime without --force warns when the template pins another adapter …在 GitHub 查看 ↗ -
atmosphere-4.0.75 Atmosphere 4.0.75
发布说明摘录
Added - every member of a broadcastReply room sees the prompts the others type - a page reloaded mid-answer reattaches to its AI run - name the timeout cancel reason in the client type and the Console - add a cancellable model call to the reattach harness - produce the application's AiEnvironment as a CDI bean Fixed - a Clear before the first token discards this client's room turn, not another member's - a room prompt is echoed only from the admission of the turn that streams it - a reattached run streams like a turn the page started …在 GitHub 查看 ↗ -
atmosphere-4.0.74 Atmosphere 4.0.74
发布说明摘录
Added - deprecate the static AI readers and binders; samples read their own AiEnvironment - give each application its own native clients in every runtime adapter - give each application its own AI knobs, settings and runtime instances - enforce both an explicit skill scopeTier and a restrictive @AgentScope, stricter wins - let one ScopePolicy enforce several scope legs that a request must all pass - mark the pagehide close beacon going-away, keep close() a leave - give a page reload over SSE, long-polling or streaming the reattach grace …在 GitHub 查看 ↗