开发与工程 jvmkotlinjavaspring-bootgoal-oriented-action-planningmodel-context-protocola2aagent-testing

Embabel Agent Framework

为 JVM 应用编写可规划、可测试且可混用 LLM 与业务代码的智能流程。

FollowAgents 评估 · FARS-2.1
不推荐
0/ 100 五分制 0.0 / 5
1 2 3 4 5 6
按维度查看评分与理由
1信任安全0 / 29 · 0.0/5

证据不足:未提供权限管理、用户确认、数据流透明、敏感数据处理、依赖安全、外部影响、回滚或来源归属的文档或代码。工作流中使用了secrets(如DEPENDABOT_SECRET、GCP_SERVICE_ACCOUNT_CREDENTIALS),但未说明最小权限原则。因此所有标准均得0分。

2可靠稳定0 / 14 · 0.0/5

证据不足:未提供自洽性、依赖可用性或失败消息的文档。工作流中使用了第三方actions,但未验证其可靠性。因此所有标准均得0分。

3适用触发0 / 18 · 0.0/5

证据不足:未提供目标受众、场景、能力边界、触发精度或环境适配的文档。README-appendix.md仅描述了内部架构,未说明使用场景。因此所有标准均得0分。

4规范维护0 / 18 · 0.0/5

证据不足:未提供信息架构、安装说明、命名稳定性、示例/FAQ、已知限制、版本控制/变更日志或维护责任的文档。LICENSE文件存在,但未提供其他约定信息。因此所有标准均得0分。

5有效结果0 / 13 · 0.0/5

证据不足:未提供输出可用性、边际价值或成本效益的文档。因此所有标准均得0分。

6证据核验0 / 8 · 0.0/5

证据不足:未提供声明可追溯性、跨来源佐证或事实/推断分离的文档。因此所有标准均得0分。

证据充分度: 评估于 2026年8月9日 审查版本 d8407d427374
上游仓库在本次评估后已有新提交;当前评分仍对应所示审查版本,可能尚未覆盖最新改动。
源码中未见的安全控制:最小权限约束、执行前用户确认、数据流向说明、敏感信息处理、依赖安全审查、外部影响披露、回滚或恢复路径、来源归属可核验
使用前请注意
  • 仓库内容不足以支持对Agent产品的全面评估;仅提供了部分架构描述和CI/CD工作流。
  • 工作流中使用了secrets和第三方actions,但未提供安全审计或最小权限说明。
  • 未提供安装、使用或配置说明,用户难以实际部署或使用该框架。
评估证据 [1][2][3][4][5][6][7]
查看完整评分方法 →

这个 Agent 能做什么,适合哪些场景?

Embabel Agent Framework 是面向 JVM 的智能流程框架,核心以 Kotlin 编写,并提供自然的 Java 使用方式。开发者通过 @Agent、@Action、@Goal、@Condition 等注解,或 Kotlin 的 agent { } 与 action { } DSL,定义由领域对象支撑的流程。AgentPlatform 在 Focused、Closed 和 Open 三种模式下执行;系统会在每个动作后重新规划,而不是只按预设顺序运行。默认规划方法为 GOAP,也内置 Utility AI;规划器可替换。框架构建于 Spring 与 JVM 之上,可接入 Spring AI ChatModel、MCP 服务,并可作为 SSE MCP 服务器或启用 A2A profile 对外提供服务。

框架读取用户输入和领域对象,根据动作的输入、输出及条件形成计划,并在每次 @Action 完成后重新评估与规划。动作既可以调用普通 Java/Kotlin 代码,也可以通过 Ai.withDefaultLlm()、Ai.withLlm(...) 和 createObject(...) 调用模型,将结果生成强类型领域对象;动作可声明 toolGroups,例如 CoreToolGroups.WEB。AgentPlatform 可由代码直接调用特定 agent(Focused),按意图挑选 agent(Closed),或从已知 goals、actions 与 conditions 组合路径(Open)。它可消费 Spring AI MCP client 配置的 MCP 服务,也可通过 /sse 端点以 MCP 服务器形式暴露能力;启用 a2a profile 后可启动 A2A 服务。

  1. 使用 Spring Boot 的 Java 团队,需要把已有服务、事务与领域模型同 LLM 步骤组合成可测试的业务流程。
  2. Kotlin 团队需要用 agent { } 和 action { } DSL 编写会根据当前状态重新规划的任务流。
  3. 需要让一个流程在普通代码、模型生成的强类型对象与网页工具之间分工的应用开发者。
  4. 需要经由 MCP 接入 Docker Desktop 工具或让 Claude Desktop 通过 SSE 调用本地 Embabel 能力的团队。
  5. 需要针对 prompt 内容、模型参数和动作逻辑编写单元测试,而非只进行端到端试验的 JVM 项目。
  6. 希望在 Open 模式下从多个已定义动作和目标中寻找新组合路径,但仍只执行已定义步骤的系统。

这个 Agent 有哪些优点和局限?

优点
  • GOAP 默认规划和每个动作后的重新规划,使已定义动作可按运行时状态重组,而非局限于有限状态机或固定顺序。
  • 动作、目标和条件由强类型领域模型支撑,Java/Kotlin 代码与 LLM 结构化对象输出可直接协作。
  • 同时提供 Spring 注解模型和 Kotlin DSL,并利用 Spring 注入、AOP、持久化与事务能力。
  • 支持 Focused、Closed、Open 三种执行边界,便于在确定性代码调用与跨资源动态目标选择之间选择。
  • 提供 MCP 客户端配置、SSE MCP 服务器和 A2A profile,并可接入本地模型、OCI Generative AI 或 Spring AI ChatModel。
局限
  • 项目明确仍处于早期阶段;路线图中的 federation、预算感知与跨平台实现属于未来目标,而非已承诺的现成功能。
  • 完整示例与集成测试依赖外部模型服务和 API 密钥;集成测试还列出 OpenAI、Anthropic、DeepSeek 与 Mistral 密钥要求。
  • 文档推荐的网页工具体验依赖 Docker Desktop、MCP Catalog 工具及网络连接,增加本地运行环境复杂度。
  • Open 模式最强但最不确定;平台仅在确信目标适用时继续,开发者可能还需通过 GoalChoiceApprover 进一步限制选择。
  • Gradle 用户必须显式添加 Spring Milestones 仓库,以解析 Embabel BOM 的实验性 Spring MCP BOM 传递依赖。

如何安装或部署这个 Agent?

创建项目可运行:

uvx --from git+https://github.com/embabel/project-creator.git project-creator

或在 Maven 项目的 pom.xml 中加入:
<dependency>
<groupId>com.embabel.agent</groupId>
<artifactId>embabel-agent-starter</artifactId>
<version>0.3.0</version>
</dependency>

设置 OPENAI_API_KEY。README 说明 Maven 已安装且具备该密钥时可运行模板项目;部分示例和 coding agent 还需要 ANTHROPIC_API_KEY。若采用文档中的 Docker MCP 工具配置,需要 Docker Desktop >4.43.2,并从目录启用 Brave Search、Fetch、Puppeteer 与 Wikipedia MCP 工具。

如何使用这个 Agent?

把 Spring 管理的类标注为 @Agent,并以 @Action 定义接收领域对象和 Ai 的步骤;以 @AchievesGoal 标识完成目标的动作。动作中可调用 ai.withDefaultLlm().createObject(prompt, ResultType.class),也可执行普通业务代码。运行单元测试:mvn test。使用示例项目的 Spring Shell 时,先输入 help 查看命令,再执行:

execute "Lynda is a Scorpio, find news for her" -p -r

其中 -p 输出 prompts,-r 输出模型响应;x 是 execute 的快捷方式。

这个 Agent 与同类方案有什么区别?

README 将其定位为建立在 Spring AI 之上的更高层抽象:其类比是 Spring AI 类似 Servlet API,而 Embabel 更接近 Spring MVC。与有限状态机或固定顺序执行相比,Embabel 强调由 GOAP 或 Utility AI 进行动态规划与动作选择。

常见问题

是否只能使用 OpenAI?
不是。OPENAI_API_KEY 被列为必需的默认配置,但框架也列出 Anthropic、MiniMax、Z.ai、OCI Generative AI、本地 Ollama、Docker 模型、LMStudio,以及任何可通过 Spring AI ChatModel 接入的提供商。
Open 模式会执行任意模型生成的操作吗?
不会。Open 模式会从已知目标、动作和条件中构建路径;即使能发现开发者未预见的组合,也只执行已定义的单个步骤。
能否不依赖 Docker 使用?
可以采用普通依赖、模型提供商或自建 MCP 配置;但 README 所述 Docker Desktop MCP Catalog 网页工具方案需要 Docker Desktop >4.43.2。
如何测试 agent,而不调用真实模型?
可将 agent 作为 Spring 管理对象或普通对象进行单元测试,使用 mock 服务与 FakeOperationContext,检查动作逻辑、prompt、模型交互和 tool groups;mvn test 默认运行不需要外网或外部服务的单元测试。

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents