导语:
截至 2026 年 3 月 30 日,Java 生态里和 AI 相关的讨论越来越热,但很多团队还停留在 demo 阶段:连一个模型、连一条向量库、起一个聊天接口,就觉得 Agent 系统差不多了。问题是,这套东西一旦进入企业代码库,很快就会遇到维护压力。Spring 在 3 月的几条官方内容其实给得很明确:Spring AI 2.0.0-M3、1.1.3、1.0.4 一起发布,MCP 注解和 transport 在移动,官方 Java MCP SDK 也在快速成型,社区开始出现 skillsjars 这类技能打包思路。这些都说明一件事:Java 团队做 Agent,真正该投入的不是花哨演示,而是包装、隔离和升级路径。
1. 为什么 Java 团队更容易在 Agent 项目里积债
Java 项目有个典型特点:它们活得久,依赖多,团队大,治理重。也正因为如此,很多在脚本语言里“先跑起来再说”的做法,到了 Java 这里就会立刻暴露问题。
最常见的坑有三个:
- 把 MCP server/client 直接散落在业务代码里。
- 把模型、工具、记忆、向量库配置混在同一层 starter 里。
- 没有稳定的技能封装,后面每个项目都复制一份 tool glue code。
这些问题在 PoC 里不明显,一旦扩到第二个、第三个应用,就会开始拖累升级和排障。
2. 我更推荐的包装思路
第一层,平台层。
把模型接入、重试、日志、审计、提示词基类、向量库连接统一在平台模块里。业务项目不直接依赖底层 SDK 细节。
第二层,技能层。
无论你叫 skill、toolset 还是 capability,都应该把“做什么”和“如何接模型、如何走 MCP”拆开。一个能力包,最好能被多个项目重复引用。
第三层,应用层。
应用层只负责装配:选择哪些技能,给哪些 endpoint 或 workflow 用,如何做权限和业务校验。
这种分层听起来保守,但对 Java 团队反而是省事的。因为你的未来成本,主要不在第一次接通,而在后面的版本演进。
3. 结合 3 月官方更新,推荐这样落地
第一步,别急着追 milestone。
Spring AI 的 2.0.0-M3 很新,能力也多,但 breaking changes 真实存在。生产团队可以先看 1.1.3 / 1.0.4 稳定线,把封装模式跑顺,再评估 milestone。
第二步,把 MCP 注解和 transport 单独包起来。
官方已经在迁移相关包,说明这块接口还在快速演进。越是变化快的部分,越应该被你自己的适配层隔住。
第三步,把技能以 jar 形式复用。
不一定非要用某个社区方案,但“把技能打包成可引用工件”这个方向非常值得跟。否则每个服务都手搓一遍工具定义,后面一定痛苦。
第四步,给每个技能单独写兼容测试。
别只测整条 agent 对话。模型能不能回答是一回事,技能的输入输出契约能不能稳定,才决定你敢不敢升级。
第五步,把 JDK 与 Spring AI 分开验。
如果还要同步推进 JDK 26 或别的 JVM 级升级,最好分阶段做。别把框架变化和运行时变化搅在一起。
4. 判断自己是不是还停在 demo 阶段,有个很简单的标准
问自己这四个问题:
- 这个技能能不能被第二个项目直接引用?
- MCP 包变化时,业务代码会不会大面积跟着改?
- 模型换掉时,日志和审计会不会还完整?
- 哪一层负责处理权限、速率和回退?
如果其中两个答不上来,你的 Agent 系统大概率还是 demo,不是平台能力。
5. 建议本周就做的动作
- 梳理现有 Java Agent 项目的模块边界。
- 把 MCP 和模型接入从业务层抽出来。
- 试做一个可复用的技能 jar,而不是复制粘贴工具代码。
- 为每个技能单独建契约测试。
- 评估当前版本该留在稳定线还是试 milestone 线。
6. 结语
Java 做 Agent 的优势,本来就不在“写个 demo 很快”,而在“把一套能力长期维护下去”。到了 2026 年 3 月,这个判断更明显了。Spring AI 和 Java MCP 生态都在快速变化,越是这个时候,越不能让业务代码直接贴着底层细节长。真正成熟的团队,会先把包装层、技能层和升级路径想明白,再去追更强的模型。
参考资料
- Spring Blog: Spring AI 2.0.0-M3, 1.1.3 and 1.0.4 Available Now
https://spring.io/blog/2026/03/17/spring-ai-2-0-0-M3-and-1-1-3-and-1-0-4-available/ - Spring Blog: This Week in Spring - March 3rd, 2026
https://spring.io/blog/2026/03/03/this-week-in-spring-march-3rd-2026 - OpenJDK: JDK 26
https://openjdk.org/projects/jdk/26/