基于Spring AI的AI Agent应用demo地址:https://github.com/q644266189/aiagentdemo

项目核心模块
本项目是一个基于Spring AI的AI Agent应用,主要包含以下六个模块

模块/功能 核心能力描述
AgentCore核心编排器 负责意图识别、记忆管理与大模型调用,协调各模块运行。
ChatMemory 对话记忆管理,支持三层上下文压缩:摘要压缩 → Assistant裁剪 → 滑动窗口。
Tool (Function Calling) 可插拔工具注册机制,通过InnerTool统一接口注册,LLM自主决策调用工具。
RAG 完整检索增强生成流水线:文档加载 → 分块 → 向量化 → 存储 → 多路召回(语义+BM25+查询改写)→ RRF融合 → 重排 → LLM生成。
Command & Skill Markdown驱动的Prompt模板机制:Command由用户主动触发,Skill作为Tool由LLM决策调用。
SubAgent 拥有独立记忆的子代理,支持内部SubAgent和外部IdeaLab Agent两种形态。
MCP 双向MCP支持:作为Client动态连接外部MCP服务,或作为Server对外暴露服务。

1.AgentCore

AgentCore 是整个系统的"大脑",负责编排对话的完整流程:意图识别 → RAG 注入 → 记忆管理 → 模型调用 → 工具执行。

2.ChatMemory 对话记忆(会话压缩)实现

三层递进上下文压缩策略(防 Token 溢出 / 成本失控)
第一层:摘要压缩(智能压缩,优先触发)
触发条件:历史消息 > 16 条
执行逻辑:自动用 LLM 将早期消息总结为300 字内摘要,注入 system prompt,原消息移除
核心设计
增量压缩:旧摘要 + 新对话合并总结,避免信息丢失
TOOL 消息保护:截断自动避开 TOOL 消息,保证工具调用上下文完整
第二层:Assistant 消息裁剪(精准裁剪,持续生效)
规则:仅保留最近 3 条LLM 回复,只将最近3条回复放到上下文
优势:LLM 回复占 Token 多,精准裁剪大幅减少上下文体积
第三层:滑动窗口(兜底保护,最后防线)
规则:消息总数 > maxRounds×4 时,直接丢弃最早消息
作用:硬性限制上下文大小,防止无限增长
三层协同逻辑
摘要压缩(保信息)→ Assistant 裁剪(省 Token)→ 滑动窗口(硬保护)

3.TOOL

所有工具实现统一的 InnerTool 接口,启动时,Spring 自动扫描所有 InnerTool Bean,调用 loadToolCallbacks() 收集所有工具,统一注册到 AgentCore。新增工具只需实现这个接口,无需修改任何已有代码。

4.RAG 模块:检索增强生成

在这里插入图片描述

一、RAG 整体流程(总览)

文档分块 → 向量入库 → 用户提问 → 多路召回 → RRF 融合 → Rerank 重排 → 拼接上下文 → 交给 LLM 回答

二、分步详细流程

  1. 文档预处理:分块(决定检索质量)
    使用递归语义分块 TextSplitter(默认)
    规则:500 字符 / 块,重叠 50 字符
    目标:保证语义完整,不破坏段落逻辑
  2. 向量存储
    用 EmbeddingModel 生成文本向量
    存入内存 VectorStore(生产可换 Milvus/Pinecone)
    支持余弦相似度检索
  3. 用户发起查询
    输入用户问题 question
  4. 多路召回(语义 + BM25 + 查询改写,共 9 个候选)
    同时启动 3 路召回,每路取若干候选,汇总成候选池:
    SemanticRecaller 语义召回:向量相似度,懂语义
    Bm25Recaller 关键词召回:BM25 算法,精准匹配
    QueryRewriteRecaller 查询改写召回:把问题转 3 种说法再检索,扩大覆盖
    → 输出:9 个候选文档
  5. RRF 融合(多路结果合并)
    对 3 路结果用 RRF 倒数排名融合
    不看原始分数,只看排名
    合并、去重、重新排序
    输出:排序后的候选集
  6. Rerank 重排(精检索,求精)
    将 9 个候选送入 LLM 重排模型
    按问题相关性重新精准打分
    取 TOP3 最相关文档
  7. 构建上下文
    把 TOP3 文档按格式拼接:
    【参考资料1】【参考资料2】【参考资料3】
    返回干净的上下文字符串
    供 LLM 基于事实回答

三、核心技术串讲

多路召回:向量 + BM25 + 查询改写,互补盲区
RRF 融合:按倒数排名合并多路结果
Rerank:精排提升相关性,只留最有用的 3 条
BM25:关键词匹配召回
TextSplitter:递归语义分块
Embedding + VectorStore:向量检索

四、精简流程

文档先分块、转向量入库;用户提问后,走三路召回 + RRF 融合,再经 Rerank 取 TOP3,最后拼接成上下文给大模型生成答案。

5.Command 与 Skill

Command 是"用户告诉 Agent 做什么",Skill 是"Agent 自己判断该做什么"

6.SubAgent

主 LLM 根据对话上下文自主决定是否需要创建 SubAgent。整个生命周期(创建 → 多轮对话 → 销毁)都由主 LLM 通过工具调用来驱动。

7.MCP

同时实现了 MCP Server(对外暴露能力)和 MCP Client(连接外部服务)。
MCP Server:对外暴露知识库检索能力。通过 SimpleMcpServer 对外提供知识库检索工具,其他 AI 应用可以通过 MCP 协议来调用。
MCP Client:动态连接外部 MCP 服务。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐