編輯 | Tina
在 Java 世界,Rod Johnson 是一個無法忽視的名字,作為 Spring 框架的締造者,他曾深刻改變了企業級 Java 應用的開發方式。
如今,隨著生成式 AI 席卷各行各業,軟件開發范式正面臨新一輪重構。與此同時,Python 憑借其強大的生態系統,在這場 AI 浪潮中占據了主導地位。而此時,Johnson 再次站了出來。他親手打造并開源了一個全新的項目——Embabel,這是一個專為 JVM 生態設計的 AI 智能體(Agent)框架,旨在為企業級 AI 應用提供堅實基礎,彌合生成式 AI 的“承諾”與“現實”之間的巨大鴻溝。
“自從我創立 Spring 框架以來,我從未如此堅定地相信一個新項目的必要性?!?Johnson 表示?!拔艺嫘恼J為,Embabel 有潛力成為 JVM 世界中的一個關鍵項目。我不僅希望它追上 Python 生態,更希望借此構建最強的 Agent 模型,釋放真正的商業價值?!?/p>
作為一個開源項目,Embabel 和 Spring 一樣采用的是 Apache 2.0 協議,目前已在 GitHub 上公開:
https://github.com/embabel/embabel-agent
Spring 之父為何重構 AI 應用基礎?
“九成可用”相當于“完全沒用”,GenAI 不該止步于驚艷。
Rod Johnson 不僅是 Spring 創始人,更是推動現代企業級 Java 編程范式變革的關鍵人物。Spring 框架的誕生頗具傳奇色彩,它最初源于 Johnson 撰寫的一本書——《Expert One-on-One J2EE Design and Development》。這本書傳遞了一個明確的信息:“親愛的 Java 企業開發者們,你們的痛苦到此為止了,你們再也不需要 EJB 了?!?/p>
當時的 EJB 開發流程繁復至極,僅實現一個 Hello World 就需要準備多個 XML 文件和類接口。所以 Spring 一出現就徹底改變了 Java 企業開發,并迅速成為了 Java 生態中最成功、最持久的開源項目之一。
Spring 作為開源框架已走過二十余年,依然活躍在全球無數企業的系統中,而 Johnson 也始終沒有遠離這個社區。他最新關注的技術焦點,則是生成式 AI。
“我認為,這是我們這個行業自互聯網以來最重要的技術,”Johnson 在一次訪談中表示,“它不是一個可以忽視的東西,我必須深入理解它,也要盡我所能讓它變得更有用?!?/p>
但生成式 AI 這項技術的“承諾”和現實之間存在著巨大的差距。他回憶起兩三年前第一次使用 ChatGPT 時的震撼:“你居然可以和這個東西對話!”然而,幾年過去了,我們在企業場景中其實并沒有看到太多真正的成功案例。
“生成式 AI 在某些場景表現出色,比如個人助理。大約 90% 的回答都很不錯,但 10% 完全不靠譜。”Johnson 強調,對于企業應用而言,這“10% 的錯誤”意味著系統的不可信,甚至是無法使用?!澳銓嶋H上是在用一個‘九成時間有效、一成時間無效’的東西去構建系統,從效果上看,它就等于‘完全沒用’。因為業務應用容不得這 10% 的錯誤。”
不僅如此,它“10% 的失敗”還是設計上的必然結果。生成式 AI 是一種隨機的、非確定性的系統,它給同一個提示生成的結果也會有所不同。這對應用開發者提出了新的挑戰:“你要處理極其不可靠的系統、高失敗率、非確定性行為,甚至還要與自然語言交互?!迸c此同時,一些 20 年前就遇到過的經典問題也依然存在——如何訪問企業數據?系統記錄源(system of record)在哪里?事務如何管理?系統如何擴展?
在 Johnson 看來,解決這一切問題,JVM 社區具備天然優勢。“我覺得 JVM 和 JVM 社區,在讓這些事情‘變得有用’方面擁有巨大的潛力?!?/p>
Johnson 的這番判斷并非沒有實戰經驗支撐。在過去 10 到 15 年里,他使用過包括 Scala、Node 、TypeScript 和 Python 在內的多種語言,尤其是在 2019 年真正開始接觸 AI 領域(不是 Gen AI)后,寫了大量 Python 代碼。然而,當他認真思考如何真正把生成式 AI 用在企業系統中時,他發現——“解決這些問題所需要的技能,JVM 社區比 Python 社區更加具備。”
盡管 Johnson 承認 “Python 是一門很棒的語言,也非常容易上手”,他也坦言:“我不會說我‘熱愛’ Python,但我很慶幸自己對它很熟練?!彼踔習滩蛔∮?Python 去重寫復雜的 Bash 腳本,讓維護變得更輕松。
但說到構建復雜的企業級軟件系統,Python 并不是一個特別優秀的語言?!氨热缢鼘梢娦裕╲isibility)的支持幾乎沒有,泛型(generics)也很原始?!备匾氖牵髽I系統通常要集成各種已有的代碼資產,而這些資產絕大部分是基于 JVM 和 Java 的,而不是 Python 的。所以,這也讓他下定決心:“如果我們要填補 GenAI 的承諾與現實之間的鴻溝,讓它真正對企業有用,JVM 必須發揮作用?!庇谑?,Embabel 應運而生了。
遲早,AI 能力將會成為應用開發中的“新常態”。閱讀文檔后,我的第一印象是:它將有望像當年 Spring 簡化 Java 開發那樣,簡化 AI 驅動應用的開發過程。非常期待它的發展。
Embabel 的架構之道
在 Rod Johnson 看來,MCP 是試圖填補這個鴻溝的一種嘗試?!白鳛橐粋€服務器平臺,它在理論上是語言無關的,這意味著大家可以跨不同平臺共享功能?!钡?MCP 只是“解決方案的一部分”,“它并沒有解決很多實際問題,比如 discoverability(可發現性)、security(安全性)等?!?/p>
針對當下流行的“工具堆砌型” Agent 方案,Johnson 更是毫不掩飾自己的質疑:“我并不認同那種觀點:只要給一個 LLM 一堆工具,它就能解決任何問題?!彼J為,這不僅會造成巨大的算力和資源浪費,還存在混亂與不可控的結構性風險?!凹词故亲钕冗M的模型,在面對 200 個工具時,也會迷失方向?!?/p>
相比之下,Johnson 更支持“Agentic 模型”的做法——以小提示驅動、精簡聚焦的工具集、合理邊界控制的架構方式:“這些工具可能來自 MCP,但一定是有限且高效的;也可以接入本地模型,獲得隱私與成本上的優勢。”在他看來,這種方式才更有可能實現企業級 AI 所需的三大目標:更高的確定性、更低的成本和更強的安全性。
他強調,這些 Agentic 應用并非只與 LLM 對話,它們同樣需要與企業的系統記錄源、消息總線、已有代碼資產深度集成——“這些需求,顯然更適合在 JVM 上完成,而不是 Python?!?/p>
有趣的是:Embabel 最初其實是以一個 Python 框架的形式起步的,直到我最終得出結論——JVM 更適合構建我認為真正需要的東西,也更適合作為 Agentic 應用的平臺。
因此,Embabel 被設計為了一個用于在 JVM 上構建 Agentic 應用的框架,面向所有 JVM 開發者,尤其是使用 Spring 的開發者。
Embabel 基于 Spring AI 構建,并擁抱 Spring 組件模型。但與 Spring AI 不同,Embabel 工作在更高的抽象層之上。
“Embabel 的層級比 LangChain4j 和 Spring AI 要高得多。它建立在這一層級之上,之所以選擇 Spring AI,是因為它與 Spring 生態系統的密切關系,但它提供了更高層次的抽象,并引入了獨到的理念。代理框架層級在 Python 中已經很常見,但在 JVM 上卻非常新。而 Java 要想在企業級及其他領域保持領先地位,就迫切需要它?!?/p>
如果說 Johnson 曾經打造的 Spring 框架是在為企業級 Java 提供更好的編程模型,那么 Embabel 的出現就是向著 AI 智能體編程邁出的重要一步。
智能體編程,能否既聰明又可靠?
與 Spring 使用基于依賴項注入與控制反轉這一新型編程模型顛覆企業級 Java 類似,Embabel 致力于建立一種編程模型,幫助開發者使用符合生產代碼要求的最佳實踐來構建智能體,同時繼續為智能體追求特定目標、執行工作流任務并自主做出動態運行時決策留出充裕的空間。
確定性似乎一直是 AI 模型難以達成的核心指標。當我們構建應用程序時,習慣于其應用行為具備確定性——換句話說,對于相同的輸入與初始狀態,我們的代碼應當始終產生相同的輸出和行為結果。
而大模型的運作方式并非如此。大模型會產生幻覺——有人說,人類不也充滿了不確定性嗎?但也正是因為存在不確定性,在被賦予自由發揮的創造力時,人類反而能夠做出令人意外但卻成效出眾的成果。
對于基于提示詞的簡單人類交互循環來說,這種不確定性往往令人頭痛,但影響還不算太大。而對于需要在無人交互的前提下采取行動的全閉合 OODA 循環(即觀察、調整、決策與行動)的智能體來說,結果的確定性則變得至關重要。
建立對智能體工作流程的信任,要求我們找到一種保證智能體在整個工作流程中實現確定性的可行方法。簡單來講,我們既希望智能體拿出令人眼前一亮的開發成果,又要確保對工作的推進方式保留一定的知情權與控制權。為此,Embabel 采用了 GOAP 方法。
這套機制的第一步被稱為“Planning Step”,是 Embabel 最有特色的一環,并且是可插拔的。比如在 Crew AI 中,執行流程是順序嵌套的;在 LangChain 或 LangGraph 中,你需要手動搭建狀態機。用狀態機去定義流程,系統只能做你預先設想過的事。要想做出調整或擴展,就需要改動很多邏輯,每次都得重新跑一遍。但 Embabel 不同,它工作在一個更高的抽象層上。
Embabel 還引入了“行為(Actions)”“目標(Goals)”和“智能體(Agents)”的語義建模,每個目標和行為都有清晰的前置條件和預期后置條件。這使得 Embabel 能夠使用非 LLM 的 AI 算法進行“規劃”。它采用的是一種路徑規劃算法(path finding algorithm),用于從當前世界狀態出發,尋找通往目標的路徑。這樣的機制其中一個優勢是:系統可以執行那些你沒有顯式編程指令的操作,但前提是這些操作是“安全的”。
“你給它相同的世界狀態和目標,它每次都會生成同樣的計劃。”Johnson 表示,“而不像 LLM 一樣,背后藏著 3000 億個參數,讓你根本無法解釋它為何那樣決策。”
這一機制的另一個亮點在于彈性執行與動態重規劃:它可以圍繞失敗情況來重新規劃。當流程中某個行為失敗,比如嘗試提取信息失敗、數據源訪問異常,系統會自動切換路徑尋找替代方案,而無需顯式寫出復雜的 if-else 判斷邏輯。這種“圍繞失敗自動重規劃”的能力,讓 Embabel 既具備傳統工程體系的可控性,也擁有現代 AI 系統的柔性應對力。
最好的 Agent 框架?!
AI 智能體的構建尚處于起步階段,Embabel 項目同樣處在萌芽期。但 Johnson 的目標并不止于 JVM。他直言:“我們并不是想做 JVM 上最好的 Agent 框架,而是想做最好的 Agent 框架。”
目前 Embabel 項目 95% 使用 Kotlin 語言編寫,同時亦支持用純 Java 代碼開發智能體。
如果你是 JVM 開發者,使用 Embabel 啟動一個運行中的 AI Agent,只需一分鐘。
另外幾個點也很有意思,可能會讓人感到驚喜——Embabel 與 Spring 緊密集成。如果你是一個 Spring 開發者,使用 Embabel 創建一個 Agentic 流程會像寫一個 Spring MVC 應用一樣簡單?!爱吘箽w根結底,這一切都是組件抽象,差別只是你用這些組件來做什么?!?/p>
而且在模型調用的可移植性方面,因為 Embabel 是建立在 Spring AI 的基礎之上的,這也是為什么它有著非常強的 MCP 支持——得益于之前社區在 Spring AI MCP 上的出色工作,所以 Embabel 能夠在 Spring 的基礎上構建這些能力。并且,除了 MCP 支持之外,Embabel JVM 代理框架現在還實現了 Google A2A 服務器。
Spring AI 正迅速成為企業領域的 MCP(Model-Connected Platform)首選。它是目前這一方向上最值得關注的方案,結合了 Spring Security 實現認證與信任機制,以及 Actuator 提供可觀測性能力。更關鍵的是,大多數企業本就使用 Spring,因此切換到 MCP 模式變得異常順滑。
在 Embabel 框架中,可測試性被視為一項基本能力。得益于與 Spring 提供的強大能力,開發者不僅可以像測試 Spring 服務一樣對每個 Action 方法進行單元測試,還可以驗證提示詞是否包含正確的數據元素、是否調用了合適的 MCP 工具、是否指定了超參數等。
Embabel 另一個重要理念是對 LLM 使用的“分級控制”。開發者可以定義哪些工具可暴露給模型使用、哪些只能只讀訪問,并在運行時動態驗證是否具備執行權限。以編碼 Agent 為例,文件系統的訪問權限被明確劃分為讀取和寫入兩類。模型在執行寫入操作前,會先驗證例如項目是否成功構建等前置條件,只有在滿足要求時才允許真正執行寫入。這種設計既保證了流程的可控性,也提升了系統整體的安全性與穩定性。
為了進一步提升 LLM 生成內容的可控性,Embabel 引入了“意圖完整性鏈(Intent Integrity Chain)”的設計機制?!?strong>確保在流程的最后,生成的代碼與我們最初的意圖完全一致?!?/p>
整個流程鏈條從 prompt 構建開始,依次經過規范生成、規范審核、測試用例編譯,最終進入代碼生成階段。每一個環節都可以嵌入人工審查或自動化驗證機制,測試集則以只讀形式鎖定預期行為,確保結果可控。
LLM 的角色則被聚焦在“不斷嘗試通過測試”這一任務上——它需要反復生成代碼,直到全部通過測試為止?!耙坏┻_成這一點,我們就能 100% 確認生成的代碼與 prompt 所表達的意圖一致,或至少與我們審核過的規范保持一致?!?/p>
“我真心相信,AI 是生產力的游戲規則改變者?!盝ohnson 表示,“不論你是開發者還是市場人員,都應該被 AI 增強。我們的理念是:最大限度增強人的能力,而不是依賴任何商業化或封閉的 AI 工具?!?/p>
https://www.youtube.com/watch?v=3Qtc0yQTsyw&list=PLqcGn3yCaveQN33xDe2goHlQrUE1TuHlF&index=1
https://thenewstack.io/meet-embabel-a-framework-for-building-ai-agents-with-java/
https://www.infoq.com/news/2025/06/introducing-embabel-ai-agent/
聲明:本文為 InfoQ 翻譯整理,不代表平臺觀點,未經許可禁止轉載。
6 月 27~28 日的 AICon 北京站將繼續聚焦 AI 技術的前沿突破與產業落地,圍繞 AI Agent 構建、多模態應用、大模型推理性能優化、數據智能實踐、AI 產品創新等熱門議題,深入探討技術與應用融合的最新趨勢。歡迎持續關注,和我們一起探索 AI 應用的無限可能!
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.