embabel-agent
JVM 生态 AI Agent 框架,支持 GOAP 动态规划与多 LLM 接入,Spring 深度集成
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
JVM 生态 AI Agent 框架,支持 GOAP 动态规划与多 LLM 接入,Spring 深度集成
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2019年,当大多数开发者还在用 Python 玩转 AI Agent 时,一位 Java 界的传奇人物悄然开始了新的探索。他就是 Rod Johnson——Spring 框架的创始人,改变了 Java 企业级开发方式的这个男人。他没有选择继续在 Python 主导的 AI 领域随波逐流,而是决定在自己最熟悉的 JVM 生态中,为 AI Agent 的构建提供一种全新的可能性。Embabel Agent Framework(发音 /ɛmˈbeɪbəl/,意为 "Em-BAY-bel")就这样诞生了。

上图展示了 Embabel Agent 的一个实际运行案例——基于地图规划路径任务的执行过程。
Python 生态中有 LangChain、AutoGPT、crewAI 等成熟方案,但对于深耕 Java/Kotlin 的企业开发团队而言,引入 Python 技术栈意味着额外的学习成本、运维复杂度和长期维护风险。更关键的是,Python Agent 框架往往缺乏企业级应用所要求的强类型保障、依赖注入和事务管理能力。
Embabel Agent 的核心设计理念正是:让 AI Agent 的开发回归企业级软件工程的正道。它不是简单地将 Python 方案移植到 Kotlin,而是从架构层面重新思考 Agent 的构建方式——在 JVM 的类型安全性和 Spring 生态的工程化能力之上,构建一套完整的 Agent 运行时。
Embabel Agent 用四个核心概念建模 Agent 流程:
| 概念 | 作用 |
|---|---|
| Action(动作) | Agent 可以执行的单个步骤,如调用 API、操作数据库、执行 LLM 推理 |
| Goal(目标) | Agent 试图达成的最终状态,如"生成一份市场分析报告" |
| Condition(条件) | 评估前置状态或判断目标是否已达成;每次 Action 后重新评估 |
| Domain Model(领域模型) | 支撑整个流程的领域对象,包含业务逻辑 |
这四个概念之上,是 Embabel 独特的动态规划引擎。与传统的有限状态机(FSM)或顺序执行不同,Embabel 在每个 Action 完成后会重新规划,计算下一步最优动作——这本质上是一个 OODA 循环(观察-Orient-决策-行动)。
框架内置两种规划算法:
两种算法可以共存,开发者按场景切换。
| 模式 | 说明 | 适用场景 |
|---|---|---|
| Focused | 代码显式调用指定 Agent | 事件驱动流程 |
| Closed | 意图分类后选择对应 Agent | 对话式入口 |
| Open | 平台自动识别目标并构建 Agent | 开放式任务执行,最强大也最不确定 |
Open 模式尤其值得关注——系统可以从零组合多个 Provider 的 Actions,找到开发者未曾预设的解决方案路径。
Embabel Agent 是一个多模块 Maven 项目,主仓库包含 16 个核心模块:
embabel-agent-api — 核心 APIembabel-agent-common — 通用组件embabel-agent-code — 代码执行能力embabel-agent-domain — 领域模型embabel-agent-mcp — MCP (Model Context Protocol) 协议支持embabel-agent-rag — RAG 检索增强生成embabel-agent-shell — Shell 命令执行embabel-agent-skills — 技能库embabel-agent-observability — 可观测性(指标/追踪)embabel-agent-onnx — ONNX 本地模型支持支持的 LLM 提供商(通过 23 个 Starters 模块接入):OpenAI、Anthropic Claude、Google Gemini、Azure OpenAI、阿里通义千问、DeepSeek、Mistral、Ollama(本地)、LM Studio(本地)、Cohere、MiniMax 等,覆盖国内外主流模型。
Spring Boot 集成:框架天然融入 Spring 生态,支持通过 @Agent 注解声明 Agent 类,使用 Spring AOP 装饰函数,通过 Spring 的依赖注入管理 Agent 生命周期。
Python Agent 框架中,Prompt 和代码之间的交互往往依赖"魔法 Map"——字符串键值对,没有类型检查,重构即噩梦。Embabel Agent 中,Actions/Goals/Conditions 均由强类型领域模型驱动,享受完整的 IDE 自动补全、类型检查和重构支持。
框架对 Ollama 和 ONNX 的深度支持,使其成为少数真正重视本地部署隐私需求的 Agent 框架之一。在数据合规要求严格的金融、医疗场景,这一特性尤为关键。
Embabel Agent 的编程模型与运行时平台解耦。同一套 Agent 代码,理论上可以在不同 AgentPlatform 实现之间切换——本地开发用轻量平台,生产环境用高 QoS 平台,无需改代码。
embabel-agent-rag 模块提供开箱即用的检索增强能力;embabel-agent-mcp 支持 MCP 协议,使 Agent 可以调用外部工具生态。两者结合,构成一个完整的 Agent 工具调用体系。
Embabel Agent 提供两种编写 Flow 的方式:
注解式(Spring MVC 风格):
@Agent
class TravelAgent {
@Goal
fun planTrip(@Condition destination: String): TripPlan { ... }
@Action
fun searchFlights(from: String, to: String): List<Flight> { ... }
}
Kotlin DSL 式:
agent {
goal("plan a trip to Tokyo") {
action { searchFlights() }
action { bookHotel() }
}
}
两种方式各有适用场景,前者更符合企业 Java 开发者的习惯,后者对 Kotlin 开发者更友好。
虽然框架声称"从 Java 使用很自然",但 README 和大量示例以 Kotlin 为主。习惯 Java 8/11 风格的资深工程师可能需要额外时间适应 Kotlin 语法。
GOAP 和 Utility AI 的概念对没有游戏 AI 背景的开发者而言需要额外学习成本。加上强类型领域建模的要求,初学者上手门槛明显高于 LangChain。
截至目前约 4,200+ stars,主要贡献者集中于创始团队。虽然 Maven Central 发布规范,但社区生态(第三方扩展、模板市场)仍在早期。
对于期望快速 Demo 的用户,Embabel Agent 需要构建一个完整的 Spring Boot 项目。这与 LangChain 的"5行代码跑起来"形成鲜明对比。
Embabel Agent 的出现,填补了 JVM 生态在 AI Agent 领域的关键空白。它代表了一种趋势:将 AI Agent 的工程化从脚本语言推向企业级平台。
随着 Spring AI 项目的成熟,Embabel 与 Spring 生态的协同效应正在显现。可以预见,在企业 AI 应用落地的第二波浪潮中——当"能用"不再是问题,"能用好"成为核心竞争力时——强类型、可测试、事务安全的 JVM Agent 方案将迎来更大的舞台。
| 维度 | 评分(5星) | 简评 |
|---|---|---|
| 架构设计 | ⭐⭐⭐⭐⭐ | GOAP+OODA 动态规划,架构领先 |
| 企业就绪度 | ⭐⭐⭐⭐ | Spring 集成强,类型安全,但社区薄 |
| 上手门槛 | ⭐⭐⭐ | 需要 Kotlin + Agent 概念基础 |
| 部署便捷 | ⭐⭐ | 纯库框架,无一键部署 |
| 本地模型支持 | ⭐⭐⭐⭐⭐ | Ollama/ONNX 深度集成,隐私友好 |
| 文档质量 | ⭐⭐⭐ | 文档覆盖基本概念,深入内容偏少 |
适合场景:已有 JVM 技术栈的团队构建生产级 AI Agent;数据隐私要求高需本地部署的场景;追求强类型和工程化规范的 AI 应用开发。
慎用场景:快速原型验证(推荐 LangChain);纯 Python 技术栈团队(维护两套生态成本高);没有 Spring 背景的个人开发者。