Java 团队做 Agent 系统,别先堆 demo:Spring AI 与 Java MCP SDK 该怎么包装成可维护能力


导语:
截至 2026 年 3 月 30 日,Java 生态里和 AI 相关的讨论越来越热,但很多团队还停留在 demo 阶段:连一个模型、连一条向量库、起一个聊天接口,就觉得 Agent 系统差不多了。问题是,这套东西一旦进入企业代码库,很快就会遇到维护压力。Spring 在 3 月的几条官方内容其实给得很明确:Spring AI 2.0.0-M31.1.31.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 阶段,有个很简单的标准

问自己这四个问题:

  1. 这个技能能不能被第二个项目直接引用?
  2. MCP 包变化时,业务代码会不会大面积跟着改?
  3. 模型换掉时,日志和审计会不会还完整?
  4. 哪一层负责处理权限、速率和回退?

如果其中两个答不上来,你的 Agent 系统大概率还是 demo,不是平台能力。

5. 建议本周就做的动作

  1. 梳理现有 Java Agent 项目的模块边界。
  2. 把 MCP 和模型接入从业务层抽出来。
  3. 试做一个可复用的技能 jar,而不是复制粘贴工具代码。
  4. 为每个技能单独建契约测试。
  5. 评估当前版本该留在稳定线还是试 milestone 线。

6. 结语

Java 做 Agent 的优势,本来就不在“写个 demo 很快”,而在“把一套能力长期维护下去”。到了 2026 年 3 月,这个判断更明显了。Spring AI 和 Java MCP 生态都在快速变化,越是这个时候,越不能让业务代码直接贴着底层细节长。真正成熟的团队,会先把包装层、技能层和升级路径想明白,再去追更强的模型。

参考资料


文章作者: 张显达
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 张显达 !
  目录