跳到主要内容

Agents-Flex 对比 Spring AI

概述

Spring AI 是 Java AI 生态中重要的框架。它把模型、RAG、 Tool Calling 和 MCP 带入 Spring Boot,并提供 Fluent ChatClient、Advisor、结构化输出、Micrometer Observation 以及大量模型和向量库适配。

Agents-Flex 与 Spring AI 的目标并不完全相同。Spring AI 重点解决“如何在 Spring 应用中使用 AI”; Agents-Flex 要继续解决“如何构建一个能在生产环境中长期稳定运行的 Agent 系统”。

因此,Agents-Flex 不仅有 ChatModel、Tool 和 RAG,还把模型高可用、可恢复 Agent、审批表单、Worker Lease、Skills Runtime、 Sandbox 和执行级遥测路由纳入同一套框架。

对比基线

本文基于 2026-08-09 的本地代码核对。Spring AI 的范围同时包含核心代码 spring-ai2.0.1-SNAPSHOT)与 spring-ai-agent-utils0.11.0-SNAPSHOT,依赖 Spring AI 2.0.0); Agents-Flex 的版本为 2.2.7。

基础对话 ChatModel 对比

Agents-Flex 和 Spring AI 都提供统一 ChatModel,都支持 Prompt、Message、同步调用、流式响应、Tool Calling 和多模型 Provider。差异主要在运行依赖、高层 API、协议扩展方式和结构化输出。

对比项描述Agents-FlexSpring AI
统一的对话模型接口整体支持agents-flex-core 提供 ChatModelchat()chatStream() 均可接收 String 或 Prompt整体支持ChatModel 提供 call()stream(),流式结果使用 Flux<ChatResponse>
多模型厂商接入整体支持agents-flex-chat-* 已适配 OpenAI、DeepSeek、Qwen、Ollama、LiteLLM 及 OpenAI 兼容服务整体支持且 Provider 更多。包括 OpenAI、Anthropic、DeepSeek、Google、Bedrock、Ollama、Mistral 等
不依赖 Spring Framework 独立运行整体支持。核心不依赖 Spring,大部分主要模块支持 Java 8,可用于普通 Java 及其他 JVM 框架不支持
对话消息与记忆管理整体支持。提供统一 Prompt/Message、MemoryPromptChatMemory 以及可替换的 Store整体支持。提供 Prompt、Message、ChatMemory,以及 JDBC、Redis、MongoDB、Neo4j、Cassandra Repository
同步与流式对话统一拦截整体支持ChatInterceptorChatContext 共享请求上下文,可修改 Prompt、Options 和请求规格整体支持。Call/Stream Advisor 与 ChatClientRequest.context 提供相近的请求增强能力
分别替换请求构建、传输与响应解析整体支持ChatRequestSpecBuilderChatClientAiMessageParser 形成清晰的三层协议扩展边界⚠️ 部分支持。模型实现和 HTTP Client 可以扩展,但没有完全相同的三层协议适配边界
模型结构化输出部分支持responseFormat 支持 json_objectjson_schema,结果通常由业务反序列化整体支持且更完整ChatClient.entity(...)、Converter、原生 Schema 与校验重试可直接映射 POJO
Spring Boot 开箱即用集成整体支持agents-flex-spring-boot-starter 提供可选集成,同时保持核心框架独立整体支持且更深入。自动配置、Starter、Actuator、Testcontainers 与 Spring DSL 是其强项

Agents-Flex 的最小调用不需要容器:

java
ChatModel chatModel = OpenAIChatConfig.builder()
    .endpoint("https://api.openai.com")
    .apiKey(System.getenv("OPENAI_API_KEY"))
    .model("gpt-4o")
    .buildModel();

String answer = chatModel.chat("什么是 Tool Calling?");

Spring AI 的 ChatClient 在 Fluent API 和 POJO 结构化输出方面更完整;Agents-Flex 的优势是核心更轻、 运行环境更自由,并且 ChatModel 可以原样进入后续的模型路由和可恢复 Agent 运行时。

Tool 扩展对比

两边都能把 Java 方法转换为模型工具,也都能自动推进模型与工具的调用循环。Agents-Flex 进一步把 Tool 执行放入独立的 ToolExecutorToolInterceptor 与 Agent 状态机,使鉴权、审批、观测、错误策略和恢复 不会散落在业务方法中。

对比项描述Agents-FlexSpring AI
完整的工具调用数据模型与执行闭环整体支持agents-flex-core 以 Tool、ToolCall、ToolMessage 统一描述工具定义、模型请求、执行结果与消息回传整体支持。ToolCallback、ToolCallingManager 与 ToolResponseMessage 提供完整闭环
注解声明和运行时动态创建工具整体支持ToolScanner 支持注解扫描,Tool.builder() 支持动态构建整体支持。支持 @Tool、方法回调、Function 以及动态 ToolCallback
独立的工具执行拦截链整体支持ToolExecutorToolInterceptor 提供独立执行上下文和责任链,便于统一鉴权、审计与错误处理⚠️ 部分支持。ToolCallingAdvisor 和 Observation 可以扩展执行,但没有完全相同的独立 ToolInterceptor 分层
Tool 调用次数限制整体支持AgentBudget.maxToolCalls 限制一次 Agent Turn 的业务 Tool 调用总数,计数随快照持久化,恢复后继续生效整体支持且粒度更细ToolCallLimits 可分别限制单个 Tool 和当前 Turn 的总调用次数,并配置超限后抛出异常或返回错误响应
Tool 异常处理策略整体支持ToolErrorStrategy 可选择终止 Agent Turn,或把结构化错误作为原 ToolCall 的结果交回模型;错误消息还可通过 ToolErrorMessageFactory 定制整体支持ToolExecutionExceptionProcessor 可将错误消息交回模型,也可整体抛出或按异常类型选择性重新抛出
Tool 返回值转换为模型消息整体支持。Agent 自动把标量转换为文本、把结构化 Java 对象序列化为 JSON,并生成与原 ToolCall 关联的 ToolMessage整体支持且可替换。默认转换常见 Java 返回值,并可为方法 Tool 指定自定义 ToolCallResultConverter
Tool 结果直接返回调用方,不再请求模型不支持整体支持returnDirect 可跳过后续模型调用,直接把 Tool 执行结果作为本次调用结果返回
运行时按名称动态解析 Tool整体支持AgentToolResolver 可依据当前 Turn 中已持久化的租户、权限或 ToolSearch 激活状态解析可执行 Tool整体支持ToolCallbackResolver 支持静态、委托及应用自定义解析实现,由 ToolCallingManager 按名称查找 ToolCallback
不暴露给模型的 Tool 执行上下文整体支持ToolContext 可传递调用属性;Agent 进一步提供稳定 Turn/ToolCall 身份、幂等键、恢复表单数据、进度发布器和取消检查整体支持。默认和请求级 ToolContext 可合并上下文数据,并注入声明了该参数的 Tool 方法
扩展模型可见的 Tool 参数 Schema不支持整体支持AugmentedToolCallback 可用 Record 为现有 Tool Schema 增加结构化参数,并在委托执行前消费或移除扩展参数
Tool 执行进度事件整体支持。业务 Tool 可通过 AgentToolProgressEmitter 发布文本和结构化进度,统一转换为带 Turn 与 ToolCall 身份的 Agent 事件不支持
常用 Agent 工具集整体支持。提供 TodoWrite、WebFetch,以及基于 SkillRuntime 的 Shell、文件、Glob 和 Grep 等工具整体支持。提供 Shell、文件、Glob、Grep、TodoWrite 和 WebFetch 等工具
Subagent Tool整体支持。规划工具可把任务委派给子 Agent;父子 Turn、任务依赖、执行状态和结果都进入快照,可跨请求和进程恢复整体支持TaskTool 可同步或后台启动 Subagent,并通过 TaskOutput 查询结果和恢复已有 Agent;默认任务状态保存在进程内
AutoMemory Tool不支持整体支持AutoMemoryToolsAutoMemoryToolsAdvisor 提供基于文件的长期记忆创建、读取、更新、删除和上下文注入
后台 Shell 任务及输出管理不支持整体支持ShellTools 可在后台启动命令,通过 BashOutput 增量读取输出,并使用 KillShell 终止进程
可持久化的工具审批与表单整体支持。审批、拒绝和表单等待都能挂起并持久化到 AgentTurn,可跨请求、跨进程恢复不支持

Spring AI 的 ToolCallback 层在结果转换、returnDirect、参数增强和现成工具集方面更加丰富。Agents-Flex 的重点则是让 Tool 不只完成一次函数调用:调用身份、预算计数、审批决定、恢复输入、执行进度、错误结果以及 Subagent 状态都进入统一的 Agent Turn,并能随快照跨请求、跨进程继续执行。

Web Search 对比

agents-flex-websearch 不是绑定某一个搜索引擎的单一 Tool,而是一套可扩展的 Web Search 抽象。

对比项描述Agents-FlexSpring AI
Tavily Web Search整体支持agents-flex-websearch 提供 TavilySearchProvider不支持
Brave Web Search整体支持agents-flex-websearch 提供 BraveSearchProvider整体支持。提供 Brave Web Search Tool
Anthropic 原生 Web Search不支持整体支持AnthropicWebSearchTool 可为 Claude 启用原生联网搜索,并配置允许或禁止的域名、最大调用次数和用户位置
博查 Web Search整体支持agents-flex-websearch 提供 BochaSearchProvider不支持
百度千帆 Web Search整体支持agents-flex-websearch 提供 BaiduQianfanSearchProvider不支持
Firecrawl Web Search整体支持agents-flex-websearch 提供 FirecrawlSearchProvider不支持
与搜索厂商无关的统一结果模型整体支持。不同 Provider 的响应统一转换为 SearchResult,上层代码无需绑定厂商协议⚠️ 部分支持。Brave Tool 使用自身结果模型,尚未形成多 Provider 抽象
直接进入 Agent 工具执行链整体支持。Web Search 作为标准 Tool,可进入 ToolInterceptor、Agent 运行时和可观测链整体支持。可作为 Spring AI ToolCallback 进入工具调用流程

Web Fetch 对比

Agents-Flex 的 Web Fetch 不是单一 HTTP 请求实现。WebFetchTool 先尝试直接抓取,在内容为空或过短时, 再交给可插拔的 WebReaderProvider 链路处理。当前框架内置 HTTP 和 Jina Reader 两个 Provider,也允许 业务接入浏览器渲染、Firecrawl、Browserless 或内部网页解析服务。

对比项描述Agents-FlexSpring AI
可直接交给模型使用的网页获取工具整体支持agents-flex-tool-webfetch 提供 WebFetchTool整体支持。提供 SmartWebFetchTool
可插拔的网页读取 Provider 抽象整体支持WebReaderProvider 统一定义支持判断、静态评分与正文读取接口不支持
直接 HTTP 网页读取整体支持HttpReaderProvider 适合静态网页、JSON API 和开放文档整体支持SmartWebFetchTool 内部使用 Java HttpClient 直接抓取
Jina Reader 网页提取整体支持JinaReaderProvider 可通过 r.jina.ai 提取正文并去除页面噪音不支持
自定义网页读取实现整体支持。实现 WebReaderProvider 即可接入浏览器渲染、Firecrawl、Browserless 或内部解析服务不支持
多 Reader Provider 自适应路由整体支持AdaptiveWebReaderRouter 根据 URL 支持情况和 Provider 评分排列候选不支持
根据历史成功率动态调整 Provider 优先级整体支持AdaptiveScoreEngine 记录成功与失败次数,并将历史表现加入实时评分不支持
Reader 失败后的跨 Provider 自动降级整体支持。当前 Provider 失败或返回空内容时自动尝试下一个候选不支持
HTML 清洗并转换为 Markdown整体支持。移除 Script、Style 后通过 Flexmark 转换,并执行长度限制整体支持。通过 Flexmark 转换并执行长度限制
返回可复用的 Markdown 网页正文整体支持。返回经过清洗并受 maxContentLength 限制的 Markdown 正文,后续可以由 Agent、RAG 或 Skill 重复使用;默认最多保留 100,000 个字符⚠️ 部分支持。抓取后必须调用 ChatClient 按 Prompt 生成摘要,返回结果绑定本次问题并产生额外模型调用
缓存与瞬时故障重试整体支持。提供 15 分钟 LRU 缓存,并对 429、5xx 等错误重试整体支持。提供 15 分钟缓存,并对网络错误和 5xx 执行指数退避重试
抓取前的域名安全检查⚠️ 部分支持。校验 URL、Host 以及 HTTP/HTTPS 协议,没有内置远程域名信誉检查整体支持。可选调用 Claude Domain Info API,并配置检查失败时放行或拒绝
抓取任务的审批、恢复与追踪整体支持。执行可经过 ToolInterceptor、Agent 审批、错误策略与 OpenTelemetry Trace⚠️ 部分支持。支持缓存、重试和 Tool Observation;跨请求审批及恢复仍需业务实现
网页内容进入隔离的 Skill 工作空间整体支持。抓取结果可进入 SkillRuntime Workspace,并继续参与文件处理与产物发布不支持

ToolSearch 对比

ToolSearch 解决工具数量过多时的上下文膨胀问题:模型先搜索工具,再把命中的 Tool Schema 加入当前请求。 Agents-Flex 的默认实现强调轻量、丰富元数据和可恢复 Agent 集成;Spring AI 则提供了更多开箱即用的索引实现。

对比项描述Agents-FlexSpring AI
开箱即用的工具搜索机制整体支持agents-flex-toolsearch 提供 ToolSearchTool、Provider 与请求级拦截器整体支持。提供 Tool Search Tool、ToolSearchToolCallingAdvisor、自动配置和 Starter
按需披露 Tool Schema整体支持。只有搜索命中的 Tool 才进入当前模型请求,减少上下文和无关工具干扰整体支持。Tool Search Advisor 实现相同目标
无需 Embedding 的默认词法搜索整体支持InMemoryToolSearchProvider 对 Tool 元数据执行进程内加权搜索,无需部署外部索引整体支持RegexToolIndex 对名称和摘要执行不区分大小写的词法匹配
名称、描述、分类、标签与参数联合检索整体支持。默认 Provider 会对名称、描述、分类、标签及嵌套参数名称和描述分别加权⚠️ 部分支持。内置索引主要检索 Tool 名称与摘要,ToolReference 不包含对等的标签、参数树和业务元数据模型
Lucene 全文 Tool 索引不支持整体支持LuceneToolIndex 使用进程内 Lucene 索引和 StandardAnalyzer 执行全文检索
基于 VectorStore 的 Tool 语义搜索不支持整体支持VectorToolIndex 将 Tool 描述写入 Spring AI VectorStore,按语义相似度召回工具
替换工具搜索后端整体支持。实现 ToolSearchProvider 可接入数据库、Lucene、Elasticsearch 或向量检索服务整体支持。可实现 ToolIndex 接入其他索引或检索策略
Tool 元数据与本地执行函数分离整体支持ToolSearchManager 只把 ToolInfo 交给 Provider,搜索命中后再按名称解析进程内 Tool,无需序列化执行回调整体支持ToolIndex 保存 ToolReference,Advisor 负责将命中引用解析为可执行 ToolCallback
搜索目录的会话隔离整体支持。普通对话使用当前 Prompt 快照,Agent 按 Turn 保存已激活工具,不修改共享 Prompt整体支持ToolIndexsessionId 建立和查询隔离索引
会话 Tool 索引自动淘汰不支持整体支持。提供 TTL、LRU、Always、Never 和组合淘汰策略,可清理过期会话索引
普通对话接入 ToolSearch整体支持ToolSearchChatInterceptor 同时覆盖同步与流式 ChatModel 请求整体支持ToolSearchToolCallingAdvisor 可接入 ChatClient Advisor 链
ToolSearch 状态随 Agent 持久化和恢复整体支持ToolSearchAgentMiddleware 将已激活 Tool 名称写入 AgentTurn Metadata,并随 Snapshot 保存和恢复不支持

Spring AI 在内置索引种类上更丰富,尤其适合直接使用 Lucene 或 VectorStore 进行 Tool 召回的应用。 Agents-Flex 的默认搜索更轻量,可检索的 Tool 元数据更丰富,并且搜索结果能够成为可持久化 Agent 执行状态的一部分。

ToolGroup 对比

ToolGroup 把一组 Tool、配套 System Prompt 和 Matcher 组合成可按请求启用的能力单元。

对比项描述Agents-FlexSpring AI
工具、使用说明和启用规则封装为能力组整体支持ToolGroup 将 Tool、System Prompt 与 Matcher 一起管理,避免工具和提示词脱节不支持
按请求上下文自动启用工具组整体支持。Matcher 可根据最新用户消息或自定义 Context 决定本次请求启用哪些能力不支持
动态工具组的请求隔离整体支持。匹配结果只作用于当前 Prompt,不修改 ChatModel 的共享配置不支持

Text2SQL 对比

对比项描述Agents-FlexSpring AI
可直接使用的 Text2SQL 模块整体支持agents-flex-text2sql 提供从 Schema 探索、SQL 生成到查询执行的完整工具链不支持
数据库 Schema 渐进披露整体支持。先发现相关表,再按需读取字段,避免将全库结构一次性塞入 Prompt不支持
面向大模型生成 SQL 的安全治理整体支持。提供参数化 SQL、只读校验、LIMIT、租户隔离与审计拦截器不支持

MCP 能力对比

MCP 让 Agent 可以通过标准协议发现和调用外部工具。Agents-Flex 当前聚焦 MCP Client, 将多个外部 MCP Server 的工具统一转换为框架 Tool;Spring AI 除了客户端,还提供了 完整的 MCP Server 与 Spring Boot 集成。

对比项描述Agents-FlexSpring AI
MCP Client整体支持agents-flex-mcp 提供 McpClientManager,可统一管理多个本地或远程 MCP Server整体支持。提供标准与 WebFlux MCP Client Starter,支持管理多个命名连接
Stdio Client 传输整体支持。可启动并连接本地 MCP Server 进程整体支持。提供 Stdio Client Transport 与 Starter 配置
HTTP/SSE Client 传输整体支持。提供 HttpSseTransportFactory整体支持。提供 JDK HttpClient 与 WebFlux SSE Client Transport
Streamable HTTP Client 传输整体支持。提供 HttpStreamTransportFactory整体支持。提供 HttpClient、WebFlux 以及 Stateless Streamable HTTP Client
MCP Tool 转换为框架统一工具整体支持。远程 Tool Schema 会转换为 Agents-Flex Tool整体支持。MCP Tool 可转换为 Spring AI ToolCallback
MCP Tool 进入统一工具执行链整体支持。MCP Tool 与 Java Tool 使用相同的 ToolExecutorToolInterceptor 和 Agent Middleware整体支持。MCP ToolCallback 可进入 ChatClient、ToolCallingManager 与 Advisor 执行链
MCP Tool 持久化审批整体支持。MCP Tool 可使用 Agent 的统一审批策略,审批或拒绝状态保存在 AgentTurn不支持
MCP Tool 挂起与跨请求恢复整体支持。等待审批时可挂起当前 Turn,并在后续请求或其他进程中恢复不支持
MCP Tool 执行可观测整体支持ToolObservabilityInterceptor 为 MCP Tool 执行生成 OpenTelemetry Trace 和 Metrics整体支持。Tool Calling Observation 可观测 MCP ToolCallback 的执行与结果
MCP Server不支持整体支持。提供 MCP Server Starter,可向客户端暴露 Tool、Resource、Prompt 与 Completion
MCP Server 传输不支持整体支持。支持 Stdio、SSE、Streamable HTTP 与 Stateless Streamable HTTP,并提供 WebMVC/WebFlux 实现
注解式 MCP Client/Server 开发不支持整体支持。提供 Client 和 Server 注解,可声明式实现 Handler 与 Server 能力

Agents-Flex 已经覆盖 Agent 消费外部 MCP 能力的主要场景,而且 MCP Tool 不是一条独立的旁路, 它与本地 Tool 共用同一套 Agent 运行时。如果需要使用 Java 构建并发布 MCP Server, Spring AI 当前提供的服务端范围更完整。

Agent 运行时对比

Tool Calling 能让模型调用方法,但它本身不等于生产级 Agent。真正的 Agent 运行时需要知道任务执行到哪一步、 为什么暂停、如何恢复、是否超预算,以及多个 Worker 如何避免重复执行。

对比项描述Agents-FlexSpring AI
有状态的 Agent 执行模型整体支持agents-flex-agentAgentTurnAgentRunner 运行任务,每次执行都有明确 Phase 与状态迁移⚠️ 部分支持。ToolCallingAdvisor 能推进工具循环,但没有对等的持久化 Turn 状态机
完整快照并恢复 Agent 执行现场整体支持AgentTurnSnapshot 保存消息、ToolCall、Phase、预算、挂起原因及父子关系,可从中断点继续不支持
可跨进程共享的 Agent Store整体支持agents-flex-agent-store-jdbc/redis 持久化 Snapshot、CAS、取消/恢复命令与 Lease不支持
多 Worker 安全领取和执行任务整体支持AgentWorker 使用 Lease 与 fencing token 防止过期 Worker 重复提交结果不支持
跨请求的审批、表单、暂停与恢复整体支持。等待是可持久化的正常状态,用户或外部系统可通过另一个请求恢复执行不支持
Agent 执行预算整体支持AgentBudget 统一限制迭代、Step、Tool、Token 与执行耗时,达到上限后由 Agent 状态机终止 Turn不支持
可持久化的 Agent 重试调度整体支持AgentRetryPolicy 定义重试次数、退避间隔和最大等待时间,下一次重试时间随 Turn 快照持久化,可由 Worker 在到期后继续执行不支持
持久化任务计划、依赖和子 Agent 状态整体支持。计划、依赖、进度、父子 Turn 及子 Agent 状态统一保存在运行时模型中不支持
完整 Agent 生命周期事件与中间件整体支持。Turn、Step、Model、Tool 均有生命周期事件,并提供三层 Middleware 扩展点⚠️ 部分支持。Advisor 和 Observation 覆盖调用链,但没有同层级的 Turn 生命周期模型

这部分是两者最根本的差异。Spring AI 可以构建会调用工具和 Subagent 的应用;Agents-Flex 进一步保证 这些任务在等待审批、模型限流、进程重启和多实例调度之后仍能可靠继续。

Skills 能力对比

两边都能读取 Markdown/YAML Skill,并按需把 Skill 内容提供给模型。Agents-Flex 的重点不只在“加载 Skill”,还在于 Skill 如何安装、在哪里执行、文件如何进出以及产物如何交付。

对比项描述Agents-FlexSpring AI
Skill 发现与渐进式披露整体支持agents-flex-skills 兼容开放 Skill 格式,只在需要时向模型加载 Skill 内容整体支持。SkillsTool 可以发现并加载 Markdown/YAML Skill
统一且可替换的 Skill 执行运行时整体支持SkillRuntime 与 Workspace 统一命令执行、文件系统、环境变量、超时和文件传输不支持
受控本地工作空间执行可信 Skill整体支持LocalSkillRuntime 管理本地 Workspace 和完整执行生命周期⚠️ 部分支持。Shell/FileSystem 可以在本机执行,但不属于独立 Skill Runtime 生命周期
按需创建远程隔离 Sandbox整体支持agents-flex-skills-open-sandbox 可为任务按需创建 OpenSandbox 隔离环境不支持
接入独立的 AIO Sandbox 服务整体支持agents-flex-skills-aio-sandbox 将 AIO Sandbox 接入统一 SkillRuntime不支持
Skill 包的完整安装与缓存生命周期整体支持agents-flex-skills-artifact-core 负责安装、摘要校验、安全解压、物化、删除与节点缓存不支持
通过主流对象存储分发 Skill 包整体支持。Artifact 子模块覆盖 OSS、COS、OBS、TOS、S3,可在多节点环境统一分发不支持
Skill 二进制产物统一交付整体支持。产物可从 Runtime 下载,再由 FilePublisher 发布到业务可访问的位置不支持

Spring AI 已经具备 Skill 的发现和宿主机执行工具;Agents-Flex 提供的是从 Skill 包到隔离 Runtime、对象 存储、节点缓存和最终产物的完整执行链。对于第三方 Skill、多租户或用户文件场景,这是明确的安全边界。

图片能力对比

对比项描述Agents-FlexSpring AI
统一的图像生成模型抽象整体支持agents-flex-image-* Provider 统一实现 ImageModel整体支持。提供统一 ImageModel
OpenAI 图像生成整体支持agents-flex-image-openai 提供 OpenAIImageModel整体支持。提供 OpenAiImageModel
Google Gemini 图像生成整体支持agents-flex-image-gemini 提供 GeminiImageModel整体支持。提供 Google GenAI ImageModel
Stability AI 图像生成不支持整体支持。提供 StabilityAiImageModel
阿里云图像生成整体支持agents-flex-image-aliyun 提供 AliyunImageModel不支持
火山引擎图像生成整体支持agents-flex-image-volcengine 提供 VolcengineImageModel不支持
Gitee AI 图像生成整体支持agents-flex-image-gitee 提供 GiteeImageModel不支持

Agents-Flex 用统一 ImageModel 承载不同厂商的图像生成能力,业务可以在不改变上层调用方式的情况下 选择国际模型或国内云服务。

音频能力对比

对比项描述Agents-FlexSpring AI
统一的语音模型抽象整体支持。统一提供 TTS、流式 TTS 与 STT 接口整体支持。提供 TTS 与 STT 抽象
OpenAI 语音不支持整体支持。提供 OpenAI TTS 与 STT 模型
ElevenLabs 语音不支持整体支持。提供 ElevenLabs TTS 模型
阿里云语音整体支持agents-flex-audio-aliyun 提供 TTS、流式 TTS 与 STT 模型不支持
腾讯云语音整体支持agents-flex-audio-tencent 提供 TTS、流式 TTS 与 STT 模型不支持
火山引擎语音整体支持agents-flex-audio-volcengine 提供 TTS、流式 TTS 与 STT 模型不支持

Agents-Flex 的三个国内云语音模块都同时覆盖语音识别、语音合成和流式语音合成,不需要为同一厂商 分别拼接多套框架接口。

视频能力对比

对比项描述Agents-FlexSpring AI
统一的视频生成模型与异步任务管理整体支持。统一 VideoModel 负责视频生成请求、异步任务与结果轮询不支持
阿里云视频生成整体支持agents-flex-video-aliyun 提供万相与 HappyHorse 视频模型不支持
火山引擎视频生成整体支持agents-flex-video-volcengine 提供 VolcengineVideoModel不支持
Gitee AI 视频生成整体支持agents-flex-video-gitee 提供 GiteeVideoModel不支持

Spring AI 的独立媒体模型抽象主要覆盖图像生成和语音;Agents-Flex 进一步提供统一的视频生成接口、 国内主流 Provider 和异步任务轮询,并能与 ChatModel、Tool 和 Agent 组合成同一业务系统。

多模态 Agent 协作对比

ChatModel 接收多模态输入与使用独立模型生成图片、音频或视频是两类能力。双方都允许在对话消息中携带 多模态内容;Agents-Flex 进一步让 Agent 根据完整上下文自动选择普通或多模态 ChatModel。

对比项描述Agents-FlexSpring AI
ChatModel 消息携带多模态内容整体支持。统一消息模型可以携带图片、音频、视频和文件,并交给支持相应能力的 ChatModel 处理整体支持。UserMessage 可通过 Media 携带图片、音频或视频等内容,具体可用类型取决于模型 Provider
Agent 根据上下文中的多模态内容切换 ChatModel整体支持。Agent 会扫描完整 MemoryPrompt;上下文中仍有图片、音频、视频或文件时,选择配置的 multimodalChatModel,否则使用普通 chatModel不支持

LLM Wiki 对比

LLM Wiki 将企业知识组织为模型可以主动导航的知识树。模型先看到顶层主题的标题和摘要,只有确定某个主题 与当前问题相关时,才通过 Tool 按路径读取正文,并继续发现下一层子主题。

对比项描述Agents-FlexSpring AI
开箱即用的 LLM Wiki 模块整体支持agents-flex-wiki 提供 Wiki 数据模型、Provider 与 Tool不支持
层级知识树整体支持。每个 Wiki 节点包含 Path、Title、Summary、Content 与 Children不支持
递归渐进式知识披露整体支持。模型先查看节点摘要,再通过 get_wiki_content 按需进入子节点,不把整棵知识树放入上下文不支持
可替换的 Wiki 内容来源整体支持。框架定义按路径获取 Wiki 的 WikiProvider 接口;应用可以实现该接口,从文件、数据库、Git 仓库或业务知识服务加载内容不支持
Wiki Front Matter 与扩展元数据整体支持。节点可以携带版本、标签、作者、更新时间等 Front Matter,并随摘要提供给模型不支持
无需向量化的精确路径读取整体支持。知识通过目录导航和路径读取,不强制依赖 Embedding 或 Vector Store不支持
作为标准 Tool 接入 ChatModel 与 Agent整体支持WikiTool 构建为标准 Tool,可直接加入 Prompt、ToolGroup 或 Agent不支持

RAG 能力对比

文档解析能力对比

RAG 的质量首先取决于能否把原始文档稳定地转换为可检索内容。Agents-Flex 通过统一的 DocumentExtractionService 自动选择专用 Extractor,再使用 Tika 覆盖长尾格式;Spring AI 提供多种 DocumentReader,并可通过 TikaDocumentReader 解析 Apache Tika 支持的格式。

对比项描述Agents-FlexSpring AI
统一的文档解析入口与解析器路由整体支持DocumentExtractionService 通过 ExtractorRegistry 按文件类型和优先级自动选择 Extractor,失败时可尝试后续候选⚠️ 部分支持。提供统一 DocumentReader 接口,但 PDF、Markdown、HTML 和 Tika Reader 需由应用按格式选择
PDF整体支持PdfTextExtractor 按页提取文本和页内图片,并组织为 Markdown 风格内容;当前不识别或重建 PDF 表格整体支持。提供 PagePdfDocumentReaderParagraphPdfDocumentReader,也可使用 Tika Reader
Word(DOC、DOT)整体支持DocExtractor 专门解析段落、表格与图片,文档内表格自动转换为 Markdown 表格整体支持。通过 TikaDocumentReader 提取文本,不支持将 Word 表格自动输出为 Markdown 表格
Word(DOCX、DOTX、DOCM、DOTM)整体支持DocxExtractor 专门处理段落、列表、表格和嵌入图片,表格自动转换为 Markdown整体支持。通过 TikaDocumentReader 提取文本,不支持将 Word 表格自动输出为 Markdown 表格
Excel(XLS、XLSX、XLSM、XLT、XLTX、XLTM)整体支持ExcelExtractor 支持多 Sheet 和公式计算,每个 Sheet 的单元格数据自动输出为 Markdown 表格整体支持。通过 TikaDocumentReader 提取文本,不支持将 Sheet 自动输出为 Markdown 表格
PowerPoint(PPT、PPS、POT)整体支持PptExtractor 专门解析 PowerPoint 97-2003 的文本、表格和图片,幻灯片表格自动转换为 Markdown整体支持。通过 TikaDocumentReader 提取文本,不支持将幻灯片表格自动输出为 Markdown 表格
PowerPoint(PPTX、PPSX、POTX、PPTM、PPSM、POTM)整体支持PptxExtractor 提取文本、表格与嵌入图片,幻灯片表格自动转换为 Markdown整体支持。通过 TikaDocumentReader 提取文本,不支持将幻灯片表格自动输出为 Markdown 表格
HTML、HTM、XHTML 与 MHTML整体支持HtmlExtractor 清理页面并转换为 Markdown 风格文本整体支持JsoupDocumentReader 支持元素选择、链接和元数据提取,Tika Reader 可补充通用解析
Markdown整体支持PlainTextExtractor 直接读取 MD 与 Markdown 文件并保留原文整体支持MarkdownDocumentReader 可按标题、段落和水平分隔线组织 Document
纯文本、CSV、TSV、JSON、XML、YAML、配置与代码文件整体支持PlainTextExtractor 覆盖常见文本、数据、配置和编程语言扩展名,并自动检测常见中文编码整体支持TikaDocumentReader 可读取文本及 Tika 能识别的结构化文本格式
RTF 与 OpenDocument(ODT、ODS、ODP、ODG 等)整体支持TikaDocumentExtractor 内置对应扩展名与 MIME 类型整体支持。通过 TikaDocumentReader 解析
邮件(EML、MSG)整体支持TikaDocumentExtractor 支持 RFC 822 邮件与 Outlook MSG整体支持。通过 TikaDocumentReader 解析
EPUB、XLSB 与 Apple iWork(Pages、Numbers、Keynote)整体支持TikaDocumentExtractor 内置这些长尾文档的扩展名和 MIME 识别整体支持。通过 TikaDocumentReader 解析 Tika 已安装 Parser 支持的格式
压缩格式识别与包内文档解析(ZIP、TAR、TGZ、GZ、BZ2、XZ、7Z、RAR)整体支持TikaDocumentExtractor 可识别压缩格式,并通过嵌入文档提取器递归解析包内文档⚠️ 部分支持TikaDocumentReader 引入的 Tika Standard Parsers 可以识别归档与压缩格式,但当前实现未显式配置嵌入文档提取器,不将递归提取包内文档作为框架保证
压缩包递归解析的安全治理整体支持。内置最大递归层级、条目数、单条大小和总解压大小限制不支持
文件、URL、InputStream 与字节数组输入整体支持。提供 File、HTTP、ByteArray、ByteStream 和临时文件 DocumentSource整体支持。DocumentReader 基于 Spring Resource,可使用文件、URL、InputStreamResource 和 ByteArrayResource
PDF、Word、PowerPoint 与长尾文档的嵌入图片提取整体支持。PDF、DOC/DOCX、PPT/PPTX 专用 Extractor 以及 Tika 长尾解析器可提取图片并在内容中生成 Markdown 图片引用不支持
可替换的文档图片处理机制整体支持ExtractedImageHandler 统一接收图片字节、MIME 类型和文件名,应用可将图片上传对象存储、写入本地或转换为自定义 URL不支持
嵌入图片默认转换为 Base64 Data URI整体支持Base64ExtractedImageHandler 可在不依赖外部存储的情况下直接生成可用的 Markdown 图片地址不支持

Agents-Flex 不只是把所有格式交给一个通用 Parser,而是为 PDF、Word、Excel、PowerPoint 和 HTML 提供专用 Extractor。Word、Excel、PPT 和 PPTX 中的表格会转换为 Markdown 表格,比打平后的纯文本更容易被模型正确理解; 该表格转换能力不包含 PDF。PDF、Word 和 PowerPoint 中的图片统一交给 ExtractedImageHandler 处理,最后 再由 Tika 补齐邮件、OpenDocument、iWork 和压缩包等长尾格式。

RAG 核心能力对比

对比项描述Agents-FlexSpring AI
标准文档模型和多种切分策略整体支持。统一 Document、Metadata,并内置多种 Splitter整体支持。提供 DocumentReader、Transformer、TokenTextSplitter 等 ETL 组件
多个 Embedding Provider整体支持agents-flex-embedding-* 已适配 OpenAI、Qwen 与 Ollama整体支持且 Provider 更多。还包括 Google、Vertex、PostgresML 等
独立于向量库的全文检索抽象整体支持agents-flex-search-engine-* 以统一 SearchEngine 接入 Lucene、Elasticsearch 与远程 Search Service⚠️ 部分支持。具备 VectorStore/RAG 检索,但没有对等的通用 SearchEngine 层
可复用于任意召回结果的统一重排模型整体支持agents-flex-rerank-* 提供独立 RerankModel,不限定召回来源⚠️ 部分支持。RAG 提供 PostProcessor,Bedrock KB 支持 Rerank,但没有通用对等 RerankModel
向量、数据库、层级知识与互联网检索统一接入 Agent整体支持。RAG 可与 WebSearch、Text2SQL、Wiki 组合,让 Agent 按问题选择知识来源⚠️ 部分支持。RAG 与 Web Tool 可以组合,但缺少现成的 Text2SQL 和 Wiki 模块

Spring AI 的模块化 RAG Advisor 很成熟。Agents-Flex 在基础 RAG 之外继续提供独立 Rerank、SearchEngine、 Wiki、Text2SQL 和 WebSearch,使企业知识不必全部压缩成向量检索。

Vector Store 能力对比

两边都通过统一抽象屏蔽不同向量数据库的写入、删除、相似度查询和元数据过滤差异。Provider 覆盖各有侧重: Agents-Flex 对国内基础设施和分析型数据库覆盖更直接;Spring AI 的 Provider 总量更多。

对比项描述Agents-FlexSpring AI
统一的向量存储抽象整体支持VectorStoreDocumentStoreStoreOptionsSearchWrapper 统一存储及查询接口整体支持VectorStoreSearchRequest 与 Filter Expression 提供统一接口
Apache Cassandra整体支持agents-flex-store-cassandra整体支持spring-ai-cassandra-store
Chroma整体支持agents-flex-store-chroma整体支持spring-ai-chroma-store
Elasticsearch整体支持agents-flex-store-elasticsearch整体支持spring-ai-elasticsearch-store
MariaDB Vector整体支持agents-flex-store-mariadb整体支持spring-ai-mariadb-store
Milvus整体支持agents-flex-store-milvus整体支持spring-ai-milvus-store
MongoDB Atlas Vector Search整体支持agents-flex-store-mongodb-atlas整体支持spring-ai-mongodb-atlas-store
OpenSearch整体支持agents-flex-store-opensearch整体支持spring-ai-opensearch-store
PostgreSQL PGvector整体支持agents-flex-store-pgvector整体支持spring-ai-pgvector-store
Qdrant整体支持agents-flex-store-qdrant整体支持spring-ai-qdrant-store
Redis整体支持agents-flex-store-redis整体支持spring-ai-redis-store
Weaviate整体支持agents-flex-store-weaviate整体支持spring-ai-weaviate-store
阿里云 DashVector整体支持agents-flex-store-aliyun 使用 DashVector 官方 Java SDK不支持
ClickHouse整体支持agents-flex-store-clickhouse不支持
Infinity整体支持agents-flex-store-infinity不支持
Azure AI Search不支持整体支持spring-ai-azure-store
Amazon Bedrock Knowledge Bases不支持整体支持spring-ai-bedrock-knowledgebase-store
Oracle Coherence不支持整体支持spring-ai-coherence-store
Couchbase Search不支持整体支持spring-ai-couchbase-store
GemFire不支持整体支持spring-ai-gemfire-store
Neo4j不支持整体支持spring-ai-neo4j-store
Oracle Database不支持整体支持spring-ai-oracle-store
Pinecone不支持整体支持spring-ai-pinecone-store
Amazon S3 Vectors不支持整体支持spring-ai-s3-vector-store
Typesense不支持整体支持spring-ai-typesense-store
Redis Semantic Cache不支持整体支持。提供 SemanticCache、Redis DefaultSemanticCacheSemanticCacheAdvisor,可按语义相似度复用已有对话结果
进程内简易向量存储不支持整体支持SimpleVectorStore 使用进程内存保存向量与文档,支持相似度检索、元数据过滤与文件持久化,适合测试和小型应用

Spring AI 在 Vector Store Provider 数量上更丰富,并额外提供进程内 SimpleVectorStore 和基于 Redis 的 Semantic Cache;Agents-Flex 则原生覆盖 DashVector、ClickHouse 和 Infinity,对国内云服务、实时分析数据库及 混合检索场景更友好。两边共同支持的 11 个主流存储,已经覆盖大多数企业现有的 Redis、关系型数据库、 搜索引擎和专用向量数据库部署。

路由和高可用能力对比

对比项描述Agents-FlexSpring AI
对业务透明的多 ChatModel 路由整体支持RoutedChatModel 将多个模型节点包装成标准 ChatModel,上层无需感知路由过程不支持
Embedding 高可用路由整体支持RoutedEmbeddingModel 将节点选择、故障转移与恢复能力扩展到 Embedding不支持
按业务上下文动态选择模型候选整体支持ChatModelSelector 可按 Prompt、租户、区域、成本与请求 Metadata 选择节点不支持
基于模型能力标签进行路由整体支持。节点可以标记 vision、reasoning、cheap 等标签,请求先按所需能力筛选不支持
面向模型节点的负载均衡策略整体支持。提供最少活跃与加权随机策略,并与节点实时状态协同不支持
单个模型调用失败重试整体支持。模型 Provider 和路由层均可配置重试次数与退避策略,对限流和瞬时故障重新发起调用整体支持。模型实现普遍通过 RetryTemplate 对可重试错误执行退避重试
跨模型节点故障切换整体支持。失败节点会被排除并自动选择备用节点,同步和流式调用使用统一策略不支持
节点级熔断与半开探测恢复整体支持。内置失败计数、熔断、半开探测与自动恢复,避免持续请求故障节点不支持
模型调用指标采集整体支持。OpenTelemetry Metrics 记录模型调用次数、耗时、Token 与成功失败结果整体支持。Micrometer Observation 记录模型调用、耗时、Token 与错误信息
节点实时运行指标参与路由决策整体支持。活跃请求数、成功/失败记录与熔断状态都会影响节点选择不支持

Spring AI 能管理多个模型实例,但“存在多个模型”和“提供模型高可用”不是同一件事。Agents-Flex 的 Router 已经把节点选择、负载、失败、重试和恢复封装在标准 ChatModel 后面,Agent 与业务代码无需感知。

可观测能力对比

对比项描述Agents-FlexSpring AI
Chat、Tool 与框架 HTTP 的链路和指标整体支持。OpenTelemetry Trace 与 Metrics 覆盖同步/流式 Chat、Tool 及框架 HTTP 调用整体支持。Micrometer Observation 覆盖 ChatClient、Model、Tool、VectorStore 等
HTTP 子 Span 与上下文传播整体支持AgentsFlexHttpClient 自动创建 Client Span 并传播 Trace Context整体支持。通过 Micrometer 与 HTTP Client 观测体系传播上下文
模型内容按需采集与隐私保护整体支持。内容采集默认关闭,开启后执行递归脱敏与长度限制整体支持。提供 Prompt、Completion、Tool 内容采集开关,并明确提示隐私风险
标准遥测后端和自定义 Exporter整体支持。可复用全局 OpenTelemetry,也可由框架管理 OTLP、Logging 或自定义 Exporter整体支持。可通过 Micrometer Tracing 与 OTel Bridge 接入监控后端
Span 和 Metric 直接保存到业务数据库整体支持agents-flex-observability-jdbc 可直接复用应用 DataSource 持久化遥测数据不支持
按单次 Agent 或业务执行动态路由遥测数据整体支持。Telemetry Runtime Routing 可为一次执行选择一个或多个 Destination,支持租户及业务隔离不支持

Spring AI 的 Micrometer 集成非常适合已经使用 Actuator 的 Spring Boot 应用。Agents-Flex 直接采用 OpenTelemetry,同时提供 JDBC 持久化和执行级路由,因此既能进入标准 APM,也能服务需要私有存储、 多租户隔离或不同业务对象分流的系统。

总结

结论: Spring AI 更适合在 Spring Boot 应用中快速接入模型、Tool Calling 和 RAG,其 Provider 覆盖、自动配置、ChatClient 与 Spring 生态集成是明确优势。Agents-Flex 解决的问题更进一步:它不仅让 应用能够调用模型和工具,还提供一套可以持续执行、暂停、恢复、扩展和观测的完整 Agent 运行时。

在 Agents-Flex 中,ChatModel、Tool、MCP、Skills、RAG、Wiki、Text2SQL 和多模态能力不是彼此独立的 功能集合。它们共享 Agent Turn、执行预算、审批与表单、快照恢复、Worker Lease、模型路由以及遥测链路。 模型节点故障、用户审批等待、进程重启或任务转移到其他 Worker 后,Agent 仍然可以从原有状态继续执行。

如果系统只需要为现有 Spring 应用增加 AI 调用能力,Spring AI 已经提供了成熟的开发体验;如果目标是 构建需要模型高可用、长任务恢复、分布式执行、隔离 Skills 和多知识源协作的生产级 Agent,Agents-Flex 提供的能力边界更完整,也能显著减少业务团队自行拼装运行时、状态机和治理设施的工作。

扩展阅读