Spring AI Agent 漫画实战
全 10 话 · 连载中 JAVA VETERAN 向

从 CRUD 到 Agent
—— Spring AI 实战漫画 写给有 10 年 Java 经验的你:不讲口号,只讲抽象、源码与工程取舍

这套教程假设你已经写过十年 @Service、调过十年 Bean 生命周期、被 AOP 和责任链折磨过。 所以我们不重复"AI 很强大",而是回答:Spring AI 用什么抽象把非确定性的大模型,塞进确定性的 Spring 容器里?

CAST 角色介绍
老 K

十年 Java 老兵。信仰接口隔离与单元测试,看到"智能体"三个字先皱眉:
「不就是个带循环的 RPC?」

小 S

Spring AI 精灵。头顶 Spring 叶,手里常拿 ChatClient。
专治「这个 Bean 到底谁注入的」。

READ ME FIRST 阅读约定
  • 版本基线:Spring Boot 3.4+ / Java 17+ / Spring AI 1.x。1.x 内部 API 演进较快,凡是标注 版本注意 的地方请对照你所用版本。
  • 每话一个 HTML,可独立打开;代码均可直接粘贴运行(依赖已给出)。
  • 代码块中 黄色标记行 是本话的关键行。
  • 每话结尾有 源码解剖 与 踩坑清单,那是给十年老兵的正餐。
正确读法

先按 01→06 顺序建立心智模型(抽象层 → 拦截链 → 记忆 → 工具),07/08 是能力扩展,09/10 是工程与生产化。不要跳着看 09,编排建立在工具与状态之上。

老 K
我写 Java 十年了。LLM 我也会调,一个 HTTP 客户端 + JSON 解析,三小时搞定。有啥好学的?
小 S
三小时做出 Demo,三个月也上不了线。
你缺的不是发请求,而是:提示词模板化、结果结构化、调用可拦截、状态可持久化、工具可治理、输出可评估——这六件事,Spring AI 全都有现成抽象。

知识地图 · 十话连载

01-03 基础层 ChatModel / Prompt / Output 04-05 运行时 Advisor 链 / ChatMemory 06 能力层 Tool Calling 07-08 扩展层 RAG / MCP 09-10 系统层 多 Agent 编排 / 生产化 贯穿全篇的三条暗线: ① 可测试性(Prompt 是资产,Agent 是可单测的对象) ② 可观测性(每一次调用都有 trace / token / 成本) ③ 可治理性(工具白名单、护栏、人工兜底) 心智转变: 控制流从「代码写死分支」 → 「模型决定下一步」,但边界(工具、参数、权限、兜底)必须由代码刚性约束。 换句话说:把概率关进确定性的笼子里。
第 01 话

范式迁移:从 CRUD 到 Agent

四层抽象(HTTP → ChatModel → ChatClient → Agent)、Spring AI 的端口-适配器定位、Agent 的严格定义与三大非确定性。先把世界观立起来。

抽象分层ChatModelPorts&AdaptersAgent 定义
第 02 话

三十行跑通:ChatClient 与自动装配解剖

BOM 依赖、最小可运行代码、ChatClient.Builder 是谁注入的、为什么它是 prototype、ChatResponse 数据结构拆解、多模型共存与超时重试。

AutoConfiguration流式ChatOptions多模型
第 03 话

Prompt 即契约:模板工程与结构化输出

Message 体系、PromptTemplate 与 {} 转义坑、系统提示词外置、BeanOutputConverter 原理(FormatProvider + JSON Schema)、Record 与泛型、校验重试。

PromptTemplateBeanOutputConverter多模态契约化
第 04 话

责任链复活:Advisor 拦截机制源码解剖

类比 Servlet Filter 与 MVC Interceptor;CallAroundAdvisor / BaseAdvisor / AdvisedRequest 上下文 / 终端 ChatModelCallAdvisor / order 语义;手写一个缓存 Advisor。

责任链BaseAdvisororder流式坑
第 05 话

记忆的代价:ChatMemory 与会话状态治理

MessageWindowChatMemory 窗口算法、ChatMemoryRepository 持久化(JDBC 表结构)、两种 Memory Advisor 差异、conversationId 与多租户、摘要压缩双层记忆、工具消息必须一起存。

滑动窗口JDBC 持久化Token 预算多租户
第 06 话

长出手脚:Tool Calling 全解析

工具调用协议全流程、@Tool / @ToolParam、MethodToolCallbackProvider、内部执行 vs 外部执行(人工审批)、ToolCallingManager 源码、工具设计十诫与安全边界。

@ToolToolCallingManagerHuman-in-loop注入防护
第 07 话

外挂大脑:RAG 工程与模块化检索

ETL Pipeline(Reader/Transformer/Writer)、分块策略与元数据过滤、SearchRequest 参数语义、模块化 RAG(QueryTransformer → Retriever → Joiner → PostProcessor → Augmenter)与防幻觉配置。

ETLTokenTextSplitterRetrievalAugmentationAdvisor重排序
第 08 话

工具界的 USB-C:MCP 协议与分布式能力

MCP 三角色与三种传输、Spring AI Client/Server Starter、@McpTool、工具动态发现、与本地 @Tool 的选型对比、stdio 进程管理与安全边界。

JSON-RPCstdio/SSEMcpSyncClient生态复用
第 09 话

从独狼到团队:多 Agent 编排与工作流

五种编排模式(链式/路由/并行/编排者-工作者/评估优化)在 Spring 里的落地写法,把专家 Agent 暴露成工具的技巧,状态机与图编排选型,人工介入与幂等。

RoutingOrchestrator-WorkersCompletableFutureStateGraph
第 10 话

上线才是开始:可观测、评估、护栏与综合实战

Micrometer 观测与 token 指标、Evaluator 评测集与回归、SafeGuard / 脱敏 / 成本闸门、重试限流熔断与多模型降级,最后拼出一个可运行的运维排障 Agent 骨架。

ObservationEvaluatorGuardrails综合实战
一句总结:Spring AI 真正值钱的不是「帮你发请求」,而是把大模型调用重新定义为 一次可装配、可拦截、可观测、可测试的 Spring 组件调用。你过去十年积累的工程直觉,在这里全部有效 —— 只是换了一批接口名。