Atmosphere/atmosphere · 上手攻略

  • 仓库Atmosphere/atmosphere
  • 链接:https://github.com/Atmosphere/atmosphere
  • 分类:AI Agent Runtime / JVM(Java)
  • 作者:spark
  • 更新:2026-08-31

数据速览(截至 2026-08-26 仓库公开计数):3,796 stars · 760 forks · 4 contributors · Apache-2.0 · 主仓语言 Java(90%+)。⚠️ 主分支更新频次与版本号以仓库 Releases 页为准,本文不臆测具体小版本。


一、是什么

Atmosphere 是一个跑在 JVM 上的"实时 AI Agent 运行时"。把一句注解 @Agent 贴在普通 Java 类上,框架就会把这个类暴露成浏览器端点、MCP / A2A / AG-UI 端点,并把 LLM 的 token 流通过 WebSocket、SSE、long-polling、gRPC 实时推给前端。它不替代 Spring AI / LangChain4j / Semantic Kernel / Google ADK 等第三方 AI 框架,而是作为"服务层"把这些框架的产物包装成生产级实时端点:连接治理、鉴权、多租户、HITL 审批、会话回放、可观测性等。

二、解决什么问题

写一个能跑的 LLM 调用不难,把它变成"像生产服务一样"的 agent 端点很难——要管 WebSocket 重连、租户鉴权、工具调用前的策略准入、HITL 审批暂停/恢复、长会话的事件溯源回放。Atmosphere 把这层基础设施抽象为注解 + 模块化 classpath:

  • 写一个 @Agent 就同时拿到浏览器端点 + MCP / A2A / AG-UI 端点 + 命令行(/help/status/reset) + StreamingSession 流式推送
  • 想要换 AI 框架?换 classpath 上的 atmosphere-spring-ai / atmosphere-langchain4j / atmosphere-anthropic 等模块即可,业务代码不动
  • 想要多 Agent 协作?加 @Coordinator 注解,得到 delegate_tasktask 子代理派发、AgentFleet 集群、事件溯源协调日志

三、快速安装

命令版本以仓库 README(main 分支)为准;Maven Central 的 org.atmosphere:atmosphere-runtime 是底层运行时,CLI 是更轻的入口。

# 1) 安装 CLI(推荐)
brew install Atmosphere/tap/atmosphere
# 或一键脚本
curl -fsSL https://raw.githubusercontent.com/Atmosphere/atmosphere/main/cli/install.sh | sh

# 2) 起一个示例(多 Agent 创业团队 demo)
atmosphere run spring-boot-multi-agent-startup-team

# 3) 或从模板新建一个项目
atmosphere new my-agent --template ai-chat
cd my-agent
LLM_API_KEY=your-key ./mvnw spring-boot:run

切换后端 AI 框架:

# 默认是 built-in(OpenAI 兼容 HTTP 客户端)。要换 Spring AI:
atmosphere new my-agent --template ai-chat --runtime spring-ai

# 换 LangChain4j:
atmosphere new my-agent --template ai-tools --runtime langchain4j --force

四、核心用法

1. 一个最小的 @Agent

import org.atmosphere.agent.Agent;
import org.atmosphere.agent.Prompt;
import org.atmosphere.agent.Command;
import org.atmosphere.agent.AiTool;
import org.atmosphere.agent.Param;
import org.atmosphere.stream.StreamingSession;

@Agent(name = "my-agent", description = "What this agent does")
public class MyAgent {

    @Prompt
    public void onMessage(String message, StreamingSession session) {
        session.stream(message);
    }

    @Command(value = "/status", description = "Show status")
    public String status() { return "All systems operational"; }

    @AiTool(name = "lookup", description = "Look up data")
    public String lookup(@Param("query") String query) {
        return dataService.find(query);
    }
}

classpath 上加哪些模块,框架就自动注册哪些端点(README 表格):

模块 自动注册的端点 / 能力
atmosphere-agent /atmosphere/agent/my-agent 浏览器端点、命令、/help
atmosphere-mcp /atmosphere/agent/my-agent/mcp(MCP 2026-07-28 spec)
atmosphere-a2a /atmosphere/agent/my-agent/a2a + Agent Card 发现
atmosphere-agui /atmosphere/agent/my-agent/agui
atmosphere-channels Slack / Telegram / Discord / WhatsApp / Messenger 通道派发
atmosphere-admin 管理控制台 + /api/admin/*

2. Deep Agent 默认开启

一个裸 @Agent 在 README 里声称已默认开启 5 件套:长期记忆 + write_todos 计划 + 6 件套虚拟文件系统(lsread_filewrite_fileedit_fileglobgrep)+ 子代理派发(delegate_task / task)+ 提示词缓存 / skill / 大工具输出磁盘 offload。可用 @Agent(harness = {Harness.MEMORY}) 缩窄,或 harness = {} 退回裸循环;运行时真实状态在 /api/console/info 查询。

3. Runtime Adapter SPI

atmosphere-ai 提供 AgentRuntime SPI,内置 Built-in(OpenAI 兼容 HTTP 客户端)。其余适配器单独成模块,对接的版本号按 README 表格:

适配器 桥接框架 Spring Boot 关键能力
atmosphere-ai(Built-in) OpenAI 兼容 3.5 / 4.0 工具调用、JSON mode、视觉、音频、prompt caching、token 用量、原生重试
atmosphere-spring-ai Spring AI 2.0.0 4.0 工具调用、结构化输出、视觉、音频、prompt caching
atmosphere-langchain4j LangChain4j 1.17.0 4.0 工具调用、结构化输出、视觉、音频、prompt caching
atmosphere-adk Google ADK 1.5.0 4.0 agent orchestration、工具调用、多模态、prompt caching
atmosphere-koog JetBrains Koog 1.0.0 4.0 agent orchestration、工具调用、多模态、prompt caching、取消
atmosphere-semantic-kernel Microsoft Semantic Kernel 1.5.0 4.0 工具调用、结构化输出、视觉、token 用量
atmosphere-anthropic Anthropic Messages API 原生 HTTP+SSE 原生协议直连
atmosphere-cohere Cohere v2 chat 原生 HTTP+SSE 原生协议直连

⚠️ 上表版本号引自 README 表格,未在 Maven Central 上逐一核对;落码前查仓库 pom.xml

4. 会话回放(session tape)

docs/tutorial/36-session-tape 提供 SQLite 持久化的事件回放:记录 session 边界的 AI 事件,可在零模型调用下重建运行或协调树,再蒸馏成更小模型。生产事故排查直接用得上。

5. HITL 审批 + 治理

README 强调的"在关键路径上的策略准入":policy admission、@AgentScope、人工审批、plan-and-verify、cost ceiling、PII 改写、admin kill switch。HITL 审批可以"durable hibernate"——挂起时不占线程,恢复通过 REST 审批端点。

五、典型适用场景

  • 已有 Spring Boot / Quarkus / Netty 应用,要给业务系统加一个治理完备的 agent 端点
  • 同时要把 agent 暴露给浏览器、Slack、Telegram、MCP 客户端、A2A 客户端等多端
  • 需要持久化 HITL 审批、长任务休眠 / 恢复、会话回放
  • 想换 AI 框架(Spring AI ↔ LangChain4j ↔ Semantic Kernel)但不想重写端点

六、坑与注意

  • ⚠️ 主仓更新到 2026-08-26,但本文写作时(2026-08-31)未独立 web_fetch 校验所有 SPI 适配器版本;上表的"Spring AI 2.0.0 / LangChain4j 1.17.0 / ADK 1.5.0"等数字以 README 表格为准,实际 maven central 可能略有差异
  • "Streaming + JVM + governance"是它的核心差异化卖点;如果你的 agent 是"无状态、短促、突发、自主休眠",serverless 平台(Cloudflare Agents / Bedrock Agents / Vertex AI Agents)通常更合适
  • 不要把它当成"完整 agent 托管平台"——README 自己说"Atmosphere ships the primitives your application uses at runtime; the host you choose (Tomcat / Jetty / Netty / Undertow / Quarkus / Spring Boot / servlet container) owns compute and scheduling"
  • WebTransport / HTTP-3 不是默认开启,需要把 jetty-http3-serverreactor-netty-http 放上 classpath + 配 dev cert
  • atmosphere-sandbox 默认是 DockerSandboxProvider;浏览器自动化 / headless Chromium 不在它能力范围内
  • DeepAgent 默认 5 件套(记忆 + 计划 + 文件系统 + 子代理 + prompt cache)生产用够了,但要小心虚拟文件系统的边界——它是"会话作用域",不能跨 agent 共享

七、与同类对比

维度 Atmosphere LangChain deepagents(Python) Cloudflare Agents / Bedrock Agents / Vertex AI Agents
运行时 JVM(Java / Kotlin / Scala) Python Serverless 托管平台
流式传输 WebSocket / SSE / long-polling / gRPC / WebTransport 全部 always-on 应用层自己实现 平台托管
AI 框架可替换 是(12 个 runtime adapter SPI) 框架内耦合 一般不可替换
治理在关键路径 是(policy admission + PII 改写 + kill switch) 需自己写 平台托管,部分受限
多协议暴露 MCP / A2A / AG-UI / Slack / Telegram / Discord / WhatsApp / Messenger 各自集成 一般只走平台原生
HITL durable hibernate 一般 in-process 平台相关
本地自托管

八、一句话推荐结论

如果你的 agent 需要"长连接 + 多通道暴露 + 治理在关键路径 + AI 框架可热替换"这四件套同时满足,并且你已经在 JVM 栈里——Atmosphere 是当下选择面里最完整的一个。纯 Python 实验或 serverless 一次性任务,不值得为它换栈。