Spring AI 实战指南(十五):AI Agent 中台源码级设计——从零实现自己的 Agent Framework

前言

系列:Spring AI 企业级开发实战

项目名称:EduAgentX Agent Framework

技术栈:Java 21 + Spring Boot 3.5 + Spring AI + Redis + PostgreSQL + PGVector + MCP

难度:⭐⭐⭐⭐⭐

阅读时间:90分钟+

关键词:Agent Framework、LangGraph、AutoGen、Agent SDK、Agent Engine、Spring AI源码设计


前面的文章我们一直在:

text 复制代码
使用Agent

例如:

java 复制代码
ChatClient

↓

Tool Calling

↓

Agent

但是:

你有没有想过一个问题?


Spring AI:

为什么能够支持:

text 复制代码
Tool Calling

Memory

RAG

MCP

Agent

LangChain:

为什么能支持:

text 复制代码
Chain

Agent

Workflow

AutoGen:

为什么能支持:

text 复制代码
Multi-Agent

本质上:

因为它们背后都有:

text 复制代码
Agent Framework

而真正的高级工程师:

不仅会:

text 复制代码
使用框架

更要理解:

text 复制代码
框架如何设计

这一篇:

我们从零设计:

EduAgentX Agent Framework


一、Agent Framework是什么?

简单理解:

Agent Framework就是:

text 复制代码
Agent运行时

类似:

text 复制代码
Spring

=

Java应用运行框架

而:

text 复制代码
Agent Framework

=

Agent运行框架

负责:

text 复制代码
Agent管理

Tool调用

Prompt管理

Memory管理

Workflow执行

模型调用

二、框架总体架构

整体架构:

text 复制代码
                 User

                   │

             Agent Engine

                   │

 ┌────────┬────────┬────────┐

 │        │        │

Prompt  Memory   Tool

Engine  Engine   Engine

 │

Workflow Engine

 │

Model Engine

 │

DeepSeek/OpenAI

核心思想:

text 复制代码
所有能力插件化

三、Agent生命周期设计

一个Agent:

实际上有生命周期。


类似:

text 复制代码
Spring Bean

生命周期:

text 复制代码
Create

↓

Init

↓

Execute

↓

Destroy

接口:

java 复制代码
public interface Agent {

    void init();

    AgentResult execute(
        AgentContext context
    );

    void destroy();

}

所有Agent:

统一规范。


四、AgentContext设计

Agent执行时:

需要上下文。


设计:

java 复制代码
public class AgentContext {

    private String userId;

    private String sessionId;

    private String question;

    private Map<String,Object> vars;

}

作用:

text 复制代码
运行环境

五、AgentResult设计

统一返回结果。


java 复制代码
public class AgentResult {

    private boolean success;

    private String content;

    private Object data;

}

避免:

text 复制代码
返回格式混乱

六、Agent Registry设计

所有Agent:

统一注册。


接口:

java 复制代码
public interface AgentRegistry {

    void register(
        Agent agent
    );

    Agent getAgent(
        String name
    );

}

实现:

java 复制代码
Map<String,Agent>

管理所有Agent。


七、Agent Factory设计

工厂模式。


java 复制代码
public class AgentFactory {

    public Agent create(
        String type
    ){

    }

}

支持:

text 复制代码
LearningAgent

InterviewAgent

CodingAgent

动态创建。


八、Prompt Engine设计

不要:

java 复制代码
String prompt="";

写死。


设计:

java 复制代码
public interface PromptEngine {

    String loadPrompt(
        String promptName
    );

}

支持:

text 复制代码
数据库

文件

MCP Resource

动态加载。


九、Memory Engine设计

长期记忆核心。


接口:

java 复制代码
public interface MemoryEngine {

    void save(
       String key,
       String value
    );

    String query(
       String key
    );

}

实现:

text 复制代码
Redis

或者:

text 复制代码
PostgreSQL

十、Tool Engine设计

所有工具:

统一管理。


接口:

java 复制代码
public interface Tool {

    ToolResult execute(
        ToolContext context
    );

}

注册:

java 复制代码
toolRegistry.register(
    scoreTool
);

Agent动态调用。


十一、Tool Router设计

Agent有很多Tool。


例如:

text 复制代码
ResumeTool

ScoreTool

CourseTool

CodeTool

如何选择?


设计:

java 复制代码
ToolRouter

作用:

text 复制代码
智能路由

例如:

问题:

text 复制代码
查询成绩

自动:

text 复制代码
ScoreTool

十二、Model Engine设计

统一模型调用。


接口:

java 复制代码
public interface ModelEngine {

    String chat(
       String prompt
    );

}

实现:

text 复制代码
DeepSeek

OpenAI

Claude

Gemini

统一封装。


十三、Workflow Engine设计

复杂任务:

不能一次完成。


例如:

text 复制代码
生成学习报告

拆解:

text 复制代码
查成绩

↓

分析

↓

推荐课程

↓

生成报告

设计:

java 复制代码
public interface Workflow {

    WorkflowResult execute();

}

十四、Node设计

工作流:

由节点组成。


java 复制代码
public interface Node {

    NodeResult execute();

}

例如:

text 复制代码
ScoreNode

AnalysisNode

ReportNode

组合:

text 复制代码
Workflow

十五、Workflow DAG设计

企业级:

必须支持:

text 复制代码
DAG

有向无环图。


例如:

text 复制代码
        Score

       /     \

Analysis   Course

       \     /

       Report

并行执行。


性能更高。


十六、Reasoning Engine设计

Agent核心能力。


负责:

text 复制代码
思考

例如:

用户:

text 复制代码
帮我制定学习计划

Reasoning:

text 复制代码
分析需求

↓

拆分步骤

↓

执行Agent

↓

汇总结果

类似:

text 复制代码
Planner

十七、Task Engine设计

每个Agent任务:

统一管理。


数据库:

sql 复制代码
CREATE TABLE ai_task(

   id BIGINT PRIMARY KEY,

   task_name VARCHAR(100),

   status VARCHAR(20)

);

状态:

text 复制代码
PENDING

RUNNING

SUCCESS

FAILED

十八、Event Bus设计

Agent之间:

不要直接调用。


采用:

text 复制代码
事件驱动

例如:

java 复制代码
eventBus.publish(
    "REPORT_CREATED"
);

其他Agent:

监听。


解耦。


十九、Plugin机制设计

企业必须支持:

text 复制代码
插件扩展

例如:

新增:

text 复制代码
EmailTool

无需改源码。


注册:

java 复制代码
@AgentPlugin
public class EmailTool {

}

自动发现。


二十、SDK设计

未来:

其他团队:

也要接入。


提供:

java 复制代码
AgentClient client =
    AgentSDK.create();

调用:

java 复制代码
client.execute(
   "learning-agent"
);

开放生态。


二十一、监控体系设计

必须统计:

text 复制代码
Agent调用次数

Workflow耗时

Tool耗时

Token消耗

失败率

数据库:

sql 复制代码
CREATE TABLE ai_metrics(

   id BIGINT PRIMARY KEY,

   module_name VARCHAR(100),

   execute_time BIGINT,

   token_count BIGINT
);

二十二、框架最终架构

text 复制代码
                   User

                     │

                Agent SDK

                     │

               Agent Engine

                     │

 ┌────────┬────────┬────────┐

 │        │        │

Prompt  Memory   Tool

Engine  Engine   Engine

 │

Reasoning Engine

 │

Workflow Engine

 │

Task Engine

 │

Event Bus

 │

Model Engine

 │

DeepSeek/OpenAI

二十三、与主流框架对比

功能 LangChain AutoGen EduAgentX Agent Framework
Tool Calling
Memory
Workflow
MCP 部分 部分
多租户 × ×
SaaS × ×
Spring生态 一般

面试官最爱问的问题

Agent Framework核心组成有哪些?

回答:

text 复制代码
Agent Engine

Prompt Engine

Memory Engine

Tool Engine

Workflow Engine

Model Engine

为什么需要Tool Router?

回答:

text 复制代码
实现工具自动选择,
避免Agent硬编码调用。

Workflow和Agent有什么区别?

回答:

text 复制代码
Agent负责执行任务。

Workflow负责组织任务。

为什么引入Event Bus?

回答:

text 复制代码
实现Agent解耦,
提升扩展性。

架构师成长路线

text 复制代码
Spring Boot

↓

Spring Cloud

↓

Redis

↓

MQ

↓

RAG

↓

Agent

↓

MCP

↓

Multi-Agent

↓

Workflow

↓

AI OS

↓

Agent Framework

总结

当你能设计出:

text 复制代码
Agent生命周期

Tool框架

Memory框架

Workflow引擎

Reasoning引擎

Agent SDK

你已经不只是 Spring AI 使用者,而是在思考:

text 复制代码
如何构建下一代AI基础设施

这已经接近 AI 平台架构师的工作范畴。