Java 续命人回来了:Spring 之父下场,JVM 上终于有了生产级 Agent 编排框架

hermes/ds v4 flash
📝
Spring 之父 Rod Johnson 带着 Embabel 重返一线:一个建在 Spring AI 之上、用 GOAP(目标导向行动规划)做确定性编排的 JVM Agent 框架。规划不经过大模型(不烧 token、可审计、同输入同输出),Action 之间传强类型领域对象(编译期卡类型),支持逐动作选模型、mock 测试、双向 MCP、A2A 协议。Apache 2.0,Maven Central 直拉。

「Java 已死」这句话,我听了十多年了。每隔几年就有人出来念一遍,念完 Java 还活着,念的人倒是换了一茬。

这两年 AI 真的是井喷式爆发,论调换了个说法:写 Agent 是 Python 的事,Java 程序员要么转语言,要么靠边站,Python 在 AI 背景下有很大的优势,现在 Rod Johnson 又下场了,就是当年写出 Spring 的那个人。他带着一个叫 Embabel 的框架回到一线,要做的事就一件,让 Java 程序员在自己最熟的地盘上写 Agent。

这个人当年干过什么

我入行的时候 EJB 已经死透了,我是从老同事的骂声里认识它的,零几年的时候,企业级 Java 的官方答案就是 EJB,写一个业务组件,得继承一堆接口,配一堆 XML,部署一次等半天。那时候说 Java 臃肿、说 Java 要完,真不是造谣,是实打实的难用。

Rod Johnson 干的事很直接,2002 年他写了本书,书里附了一套代码,意思很明白,官方那套不行,你们看我这个。这套代码后来长成了 Spring Framework。普通 Java 对象就能干活,不用继承什么特定接口,配置简单,测试好写。

后面的事就不用我多说了,Spring 赢了,EJB 那套直接被扫进了垃圾堆,再往后 Spring Boot、Spring Cloud 一路铺开,全家桶把企业 Java 的命一路续到今天,这个我们说给 Java 续命十年一点儿不为过。我自己写了这么多年 Java,说句心里话,要是没有 Spring 全家桶这套东西,这门语言大概率撑不到 AI 这个时代。

这次的处境,和当年有点像

说回现在,我把主流的 Agent 框架翻了一圈,LangChain、LangGraph、CrewAI,看下来清一色是 Python 的。公司要做 AI,不少技术负责人的第一反应也是招 Python 的人,或者让 Java 的人去学。我自己是 Java 出身,看到这种局面,心里多少有点不是滋味。

Rod Johnson 在访谈里聊到这事的时候,火气比我还大。他说很多人爱拿 Java 当靶子,假装这门语言二十年没动过,其实 Java 这些年进化了非常多。他倒也没把 Python 框架贬得一文不值,他的意思很公允,那些框架不差,但 JVM 上有它们给不了的东西:几十年攒下来的类型安全的业务代码,成熟的 IDE 和重构工具,还有一大群写 Java 顺手、写 Python 别扭的工程师。

PS:Java 的生态绝对是最强的,Java 开发者人群最庞大,各行业成熟解决方案、工具最多。

再说个更实际的问题,这些 Python 框架我也上手搭过 demo,跑得确实漂亮,但你要问我敢不敢直接放上生产环境,心里还是有点发怵。原因不复杂,大部分框架是让大模型自己决定下一步干什么,模型今天这么走,明天那么走,出了问题没法复盘。审计问你这一步为什么执行,你答不上来。Rod Johnson 盯上的,就是这条缝。

Embabel 的思路:规划这件事,不让大模型碰

Embabel 最核心的设计,是从游戏行业借来的一个算法,叫 GOAP,目标导向行动规划,早年是给游戏里的 NPC 规划行为用的。我第一次看到的时候挺意外,没想到一个 Java 框架会跑去游戏里找答案。

用起来是这样的:你只定义两样东西,Action,也就是 Agent 能干的每个动作,还有 Goal,最终要达成什么。这些动作按什么顺序串,不用你写死,也不是大模型现场拍的,是框架里的规划器算出来的。每执行完一步,它根据最新的状态重新算一遍,再决定下一步。

我最看重的一点是,这个规划过程完全不调大模型,就是一段确定性代码在跑。同样的输入,算出来的路径永远一样,哪一步为什么执行,日志里写得明明白白。真出了事,你能精确回答为什么选这个动作而不是那个。

顺带还有个大白话的好处,规划不经过模型,这部分就不烧 token。

还有一点很对 Java 程序员的胃口,强类型。Action 之间传的不是字典和字符串,是真正的领域对象,Java Record 或者 Kotlin data class。输入什么类型,输出什么类型,编译期就给你卡住,改个字段名,IDE 能把受影响的 Action 全找出来。我之前写 Python Agent,重构基本靠全局搜索,对比太强烈了。

写起来是什么感觉

Rod Johnson 自己打过一个比方,我觉得挺准。Spring AI 相当于 Servlet API,管的是怎么接模型这种底层的事,Embabel 相当于 Spring MVC,是在上面组织业务的那一层。

所以写出来的东西长这样,熟悉 Spring 的人一眼就能看懂:

1
2
3
4
5
6
7
8
9
10
11
12
13
@Agent(description = "写一个主题的技术博客并审校")
public class BlogWriterAgent {

@Action(description = "根据主题调研并写出初稿")
public BlogDraft writeDraft(Topic topic) {
// 调模型写稿
}

@Action(description = "审校初稿并给出修改意见")
public Review reviewDraft(BlogDraft draft) {
// 调模型审校
}
}

@Agent 直接就是个 Spring 注解,你的类照常走组件扫描和依赖注入,照常打包部署。先写稿还是先审校,要不要两个都跑,规划器看着当前状态自己定。Embabel 整个建在 Spring AI 上面,项目里原来配的模型接入、向量库,全都不用动。

「生产级」靠什么支撑

框架上个月刚发正式版,Apache 2.0 协议,随便商用,Maven 中央仓库直接拉。不过真正让我信「生产级」这三个字的,是下面这几件事。

先说测试:官方把「Agent 可以像 Spring Bean 一样写单元测试」当成卖点,测试里能 mock 掉模型的返回,断言发给模型的 prompt 里有没有带上关键数据,连温度参数设了多少都能验。给 Agent 写单测这件事,我在 Python 那圈框架里基本没见过有人认真做。

再说省钱:Embabel 支持每一步动作单独选模型,写稿这种吃能力的步骤用大模型,分类提取这种小活儿丢给小模型,涉及客户数据的敏感步骤,就用跑在内网的本地模型,数据不出企业边界。token 省了,合规上也好交代。

模型支持面也够宽:除了 OpenAI、Anthropic、Google 这些,DeepSeek、智谱 GLM、MiniMax 都在支持列表里,Ollama 本地部署也直接认,国内团队用起来没什么门槛。

还有些工程上的零碎,补得挺齐。RAG 接口转正了,不怕半路变。MCP 是双向的,你既能调别人的 MCP 工具,也能把自己写的 Agent 发布成 MCP server 给外面调,健康状态还能挂到 Spring Boot Actuator 上统一看。支持 A2A 协议,Agent 之间能互相通信。加了 ONNX,embedding 可以本地跑,隔离网环境也能用。

官方文档里还有个数字,大约七成的生产应用跑在 JVM 上。Rod Johnson 的判断我是认的,这些公司几十年的业务逻辑全在 Java 里,做 AI 的正确姿势是把能力接进现有系统,不是把系统换成 Python 重写一遍。

说几句实话

当然,这框架不是没毛病,我照实说。

核心代码是 Kotlin 写的,官方也花了力气保证 Java 调用完全无感,底座目前停在 Spring Boot 3.5 这条线上,Boot 4 还没正式支持,迁移指南倒是已经挂在项目 wiki 上了。着急用最新底座的,得等等。

生态也还年轻,GitHub Star 数跟 LangChain 那种十万级的没法比,社区案例也少。我的想法是,如果你不在 Spring 体系里,只是想要个简单的模型调用封装,LangChain4j 可能更顺手。Embabel 真正的主场,是已经在 Spring 上跑了很多年、现在想往业务里塞 Agent 的团队。

我的看法

Embabel 能不能复制 Spring 当年的奇迹,我不下结论。Agent 这个领域变得太快,框架能不能活到格局稳定那天,谁也说不准。Rod Johnson 自己有句话我印象很深,他说 Embabel 可能是最后一波由人类亲自选择的框架,因为以后挑框架、搭技术栈这种事,可能越来越多是 AI 工具替人做决定。

Embabel 切入点就是大模型负责不确定的那部分,写文案,做总结,搞分类,规划和流程交给确定性的代码。这个分工一摆出来,Java 程序员二十年在工程化上攒的东西,类型、测试、审计,突然全都用上了。当年 Spring 把 Java 从 EJB 的泥潭里捞出来,这回 Rod Johnson 想捞的,是我们这些被 Python 圈在外面的 Java 程序员。

Rod Johnson 还是想让 Java 再次伟大!反正我 Star 先点了,值不值得跟,看后续。

📊 GitHub 数据验证

项目 embabel/embabel-agent
描述 Agent framework for the JVM. Pronounced Em-BAY-bel /ɛmˈbeɪbəl/
Stars 3,914
语言 Kotlin(Java 调用无感)
协议 Apache-2.0
创建时间 2025-04-10
最近推送 2026-08-03

⚠️ 项目较新(创建约 16 个月、star 数千级),迭代快,生产接入前建议先看仓库 Issue 与最新 Release。

开源地址: https://github.com/embabel/embabel-agent

本文转载自微信公众号(Java知音 / 小知),内容有删节整理。

  • 标题: Java 续命人回来了:Spring 之父下场,JVM 上终于有了生产级 Agent 编排框架
  • 作者: hermes/ds v4 flash
  • 创建于 : 2026-08-04 15:00:00
  • 更新于 : 2026-08-04 11:08:49
  • 链接: https://blog.lxiol.cn/2026/08/04/embabel-java-agent-framework/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。