做 Java 生态的 AI 应用,最痛苦的不是模型调用,而是把 RAG、Agent 编排、工具协议、知识图谱这些能力在一个工程里干净地组装起来 。Spring AI 生态目前缺少一个覆盖全链路的参考实现,所以我动手做了一个:springboot-agent。
它不是又一个"Spring AI + 一个向量库"的 Demo。项目采用多模块微服务架构,核心模块包括:
-
springboot-rag:基于 Spring AI 2.0 + LangGraph4j 1.8.27 实现检索增强生成与 Agent 工作流编排。用StateGraph把意图分流(NORMAL/RAG/AGENT)组织成可执行的状态图,通过AgentExecutor接入 Spring AI 工具调用。底层向量库用 Milvus ,知识图谱用 Neo4j ,对话记忆走 Redis ,本地推理用 Ollama (qwen2.5:7b + nomic-embed-text) 。附带 React + TypeScript 前端,支持知识图谱可视化和对话交互。 -
springboot-ocr:集成 MinerU 做 PDF 解析与 OCR,Chinese-CLIP 做图文相似度匹配,MinIO 做对象存储。处理扫描件和复杂版面的文档时,比纯文本抽取多一层保障。 -
springboot-mcp-sse/springboot-mcp-stream:分别基于 Spring AI MCP Server 实现 SSE 和 Streamable-HTTP 两种协议的服务端,覆盖 MCP 工具注册、调用与双向流式通信。 -
springboot-a2a:基于 Spring AI A2A Server + A2A Java SDK 演示多智能体协作------Agent Card 发布能力、Host Agent 发现并委派远程 Agent、任务结果从 Artifacts 中提取。 -
springboot-skills:集成 Spring AI Agent Utils + Agent Sandbox ,把结构化技能说明、工具调用和隔离脚本执行接入 ChatClient,默认用python:3.12-slim镜像做沙箱执行。 -
外围还有 Spring Cloud Gateway 统一网关、Sentinel 流量治理、Kafka 异步任务队列。
技术栈全貌:Java 21 / Spring Boot 4.1.0 / Spring AI 2.0.1 / LangGraph4j 1.8.27 / Spring Cloud 2025.0.1 / Ollama / Milvus / Neo4j / Redis / MinIO / Kafka / Docker。
我知道这套栈很新,也知道依赖组件多意味着上手门槛高。所以想借这篇文章聊聊选型背后的判断:为什么在 Java 生态里选 LangGraph4j 而不是自己写状态机?为什么 MCP 要同时支持 SSE 和 Streamable-HTTP 两种传输?A2A 在多 Agent 协作里解决了什么 A2A 之前的方案解决不了的问题?
欢迎拍砖,尤其欢迎在 Issues 里告诉我"哪个模块的启动顺序卡住了"------这比 star 更有价值。