这套教程假设你已经写过十年 @Service、调过十年 Bean 生命周期、被 AOP 和责任链折磨过。
所以我们不重复"AI 很强大",而是回答:Spring AI 用什么抽象把非确定性的大模型,塞进确定性的 Spring 容器里?
十年 Java 老兵。信仰接口隔离与单元测试,看到"智能体"三个字先皱眉:
「不就是个带循环的 RPC?」
Spring AI 精灵。头顶 Spring 叶,手里常拿 ChatClient。
专治「这个 Bean 到底谁注入的」。
先按 01→06 顺序建立心智模型(抽象层 → 拦截链 → 记忆 → 工具),07/08 是能力扩展,09/10 是工程与生产化。不要跳着看 09,编排建立在工具与状态之上。
四层抽象(HTTP → ChatModel → ChatClient → Agent)、Spring AI 的端口-适配器定位、Agent 的严格定义与三大非确定性。先把世界观立起来。
第 02 话BOM 依赖、最小可运行代码、ChatClient.Builder 是谁注入的、为什么它是 prototype、ChatResponse 数据结构拆解、多模型共存与超时重试。
Message 体系、PromptTemplate 与 {} 转义坑、系统提示词外置、BeanOutputConverter 原理(FormatProvider + JSON Schema)、Record 与泛型、校验重试。
类比 Servlet Filter 与 MVC Interceptor;CallAroundAdvisor / BaseAdvisor / AdvisedRequest 上下文 / 终端 ChatModelCallAdvisor / order 语义;手写一个缓存 Advisor。
MessageWindowChatMemory 窗口算法、ChatMemoryRepository 持久化(JDBC 表结构)、两种 Memory Advisor 差异、conversationId 与多租户、摘要压缩双层记忆、工具消息必须一起存。
第 06 话工具调用协议全流程、@Tool / @ToolParam、MethodToolCallbackProvider、内部执行 vs 外部执行(人工审批)、ToolCallingManager 源码、工具设计十诫与安全边界。
ETL Pipeline(Reader/Transformer/Writer)、分块策略与元数据过滤、SearchRequest 参数语义、模块化 RAG(QueryTransformer → Retriever → Joiner → PostProcessor → Augmenter)与防幻觉配置。
第 08 话MCP 三角色与三种传输、Spring AI Client/Server Starter、@McpTool、工具动态发现、与本地 @Tool 的选型对比、stdio 进程管理与安全边界。
五种编排模式(链式/路由/并行/编排者-工作者/评估优化)在 Spring 里的落地写法,把专家 Agent 暴露成工具的技巧,状态机与图编排选型,人工介入与幂等。
第 10 话Micrometer 观测与 token 指标、Evaluator 评测集与回归、SafeGuard / 脱敏 / 成本闸门、重试限流熔断与多模型降级,最后拼出一个可运行的运维排障 Agent 骨架。
开工! 从 第 01 话 · 范式迁移 开始,老 K 会一路吐槽到第十话。