# RuoYi-AI 后端项目审查报告 > 审查时间:2026-03-26 > 项目路径:/data/ruoyi-ai/ruoyi-ai/ --- ## 一、项目概述 ### 1.1 基本信息 | 属性 | 内容 | |------|------| | 项目名称 | RuoYi-AI | | 定位 | 企业级AI助手平台 | | 版本 | 3.0.0 | | 技术栈 | Spring Boot 3.5.8 + Spring AI + LangChain4j | | Java版本 | JDK 17 | ### 1.2 核心能力 - **多模型接入**:OpenAI、DeepSeek、通义、智谱等 - **多模态理解**:文本、图像、文档解析 - **RAG知识库**:Milvus/Weaviate向量库支持 - **MCP工具生态**:标准化工具协议集成 - **流程编排**:可视化工作流设计器 - **多智能体**:基于LangChain4j的Agent框架 --- ## 二、项目结构分析 ### 2.1 整体架构 ``` ruoyi-ai/ ├── pom.xml # 父POM,版本统一管理 ├── ruoyi-admin/ # 管理后台模块(Spring Boot启动类) ├── ruoyi-common/ # 公共组件库(25个子模块) │ ├── ruoyi-common-core # 核心工具类 │ ├── ruoyi-common-chat # AI相关公共类 │ ├── ruoyi-common-satoken # Sa-Token认证 │ ├── ruoyi-common-redis # Redis封装 │ ├── ruoyi-common-mybatis # MyBatis Plus封装 │ └── ... # 其他公共模块 ├── ruoyi-extend/ # 扩展模块 └── ruoyi-modules/ # 业务模块 ├── ruoyi-chat/ # AI核心模块(聊天、知识库、MCP) ├── ruoyi-aiflow/ # 流程编排模块 ├── ruoyi-workflow/ # 工作流模块 ├── ruoyi-system/ # 系统管理模块 └── ruoyi-generator/ # 代码生成器 ``` ### 2.2 模块依赖关系 ``` ruoyi-admin (启动模块) ├── ruoyi-modules/* (业务模块) │ └── ruoyi-common/* (公共组件) ``` **设计特点**: - 采用 Maven 多模块架构 - 父 POM 统一管理依赖版本 - 公共组件高度复用 - 业务模块独立可插拔 --- ## 三、关键技术栈分析 ### 3.1 核心框架版本 | 技术 | 版本 | 用途 | |------|------|------| | Spring Boot | 3.5.8 | 应用框架 | | Spring AI | 2.0+ | AI抽象层 | | LangChain4j | 1.11.0 | LLM开发框架 | | LangGraph4j | 1.5.3 | 工作流引擎 | | MyBatis Plus | 3.5.14 | ORM框架 | | Sa-Token | 1.44.0 | 认证授权 | | Redisson | 3.51.0 | Redis客户端 | ### 3.2 AI相关依赖 ```xml 1.11.0 1.11.0-beta19 1.5.3 1.19.6 1.0.7 ``` --- ## 四、核心模块详解 ### 4.1 ruoyi-chat 模块(AI核心) #### 4.1.1 功能架构 ``` ruoyi-chat/ ├── controller/ │ ├── chat/ # 聊天会话管理 │ ├── knowledge/ # 知识库管理 │ └── mcp/ # MCP工具管理 ├── agent/ # 智能体实现 │ ├── SqlAgent.java # SQL数据库Agent │ ├── WebSearchAgent.java # 网页搜索Agent │ └── tool/ # Agent工具集 ├── service/ # 业务服务层 └── enums/ # 枚举定义 ``` #### 4.1.2 SQL Agent实现分析 **设计模式**:基于 LangChain4j 的声明式 Agent ```java public interface SqlAgent extends Agent { @SystemMessage(""" This agent is designed for MySQL 5.7 You are an intelligent database query assistant... CRITICAL REQUIREMENT: - You MUST ALWAYS use queryAllTables first - Only after understanding the database schema can you... """) @UserMessage("Answer the following question: {{query}}") @Agent("Intelligent database query assistant...") String getData(@V("query") String query); } ``` **关键设计点**: 1. **SystemMessage**:定义Agent角色和约束 2. **工具声明**:明确可用工具及其使用顺序 3. **类型安全**:通过接口定义输入输出 ### 4.2 ruoyi-aiflow 模块(流程编排) #### 4.2.1 架构设计 基于 **LangGraph4j** 的状态图执行引擎: ``` 工作流定义 (t_workflow) ↓ 工作流节点 (t_workflow_node) ↓ 工作流边 (t_workflow_edge) ↓ 图构建器 (WorkflowGraphBuilder) ↓ 状态图 (StateGraph) ↓ 执行引擎 (WorkflowEngine) ``` #### 4.2.2 节点类型 | 类型 | 节点 | 功能 | |------|------|------| | 基础 | Start/End | 工作流入口/出口 | | AI | Answer | 大模型问答 | | AI | Dalle3/Tongyiwanx | 图像生成 | | 数据处理 | KnowledgeRetrieval | 知识库检索 | | 控制流 | Switcher | 条件分支 | | 交互 | HumanFeedback | 人机交互 | | 集成 | HttpRequest/MailSend | 外部调用 | #### 4.2.3 流式响应机制 **SSE事件类型**: - `NODE_RUN_节点UUID`:节点执行开始 - `NODE_INPUT_节点UUID`:节点输入数据 - `NODE_OUTPUT_节点UUID`:节点输出数据 - `NODE_CHUNK_节点UUID`:流式内容块 - `NODE_WAIT_FEEDBACK_BY_节点UUID`:等待用户输入 ### 4.3 MCP工具模块 #### 4.3.1 架构设计 **MCP(Model Context Protocol)**:标准化工具协议 ``` MCP工具类型: ├── LOCAL # 本地工具 ├── REMOTE # 远程HTTP工具 └── BUILTIN # 内置工具 ``` #### 4.3.2 API设计 **核心接口**: - `GET /api/mcp/tool/list`:工具列表 - `POST /api/mcp/tool/{id}/test`:连接测试 - `GET /api/mcp/market/{marketId}/tools`:市场工具 - `POST /api/mcp/market/tool/{toolId}/load`:加载工具 --- ## 五、数据库设计分析 ### 5.1 核心表结构 | 表名 | 用途 | |------|------| | t_chat_session | 聊天会话 | | t_chat_message | 聊天消息 | | t_knowledge_info | 知识库信息 | | t_knowledge_fragment | 知识库片段(向量存储)| | t_mcp_tool | MCP工具定义 | | t_workflow | 工作流定义 | | t_workflow_node | 工作流节点 | | t_workflow_edge | 工作流边 | | t_workflow_runtime | 工作流运行时 | ### 5.2 知识库RAG设计 **文档处理流程**: ``` 文档上传 → 格式解析 → 文本分割 → 向量化 → Milvus存储 ``` **检索流程**: ``` 用户查询 → 向量化 → 向量检索 → 重排序 → 上下文构建 → LLM生成 ``` --- ## 六、安全设计 ### 6.1 认证授权 - **Sa-Token**:轻量级权限认证框架 - **JWT**:Token令牌机制 - **双重保障**:Sa-Token + JWT 组合 ### 6.2 多租户支持 ```xml com.ruoyi ruoyi-common-tenant ``` --- ## 七、HZHub借鉴点 ### 7.1 架构设计借鉴 | 方面 | RuoYi-AI实践 | HZHub应用 | |------|-------------|-----------| | 模块化 | 25个common子模块 | 提取ERP适配公共组件 | | 多模块 | modules独立部署 | AI/ERP/Gateway分离 | | 版本管理 | 父POM统一管理 | 统一Spring Boot 4.0版本 | | Agent框架 | LangChain4j声明式 | ERP智能助手Agent | ### 7.2 功能复用建议 **可直接复用**: - 多模型接入配置(OpenAI/DeepSeek/通义) - 知识库RAG实现(Milvus向量检索) - MCP工具框架(标准化工具协议) - 流程编排引擎(LangGraph4j) **需要改造**: - SQL Agent:从MySQL适配到SQL Server 2008 R2 - 工作流节点:增加ERP业务节点 - 知识库:增加ERP文档类型支持 ### 7.3 代码组织借鉴 ``` 推荐HZHub模块结构: hzhub-ai/ ├── common/ # 公共组件 │ ├── hzhub-common-core │ ├── hzhub-common-erp # ERP连接公共类 │ └── hzhub-common-chat # AI公共类 ├── modules/ │ ├── hzhub-chat/ # AI聊天(复用ruoyi-chat) │ ├── hzhub-erp/ # ERP服务(新增) │ └── hzhub-aiflow/ # 流程编排(复用ruoyi-aiflow) └── hzhub-admin/ # 启动模块 ``` --- ## 八、技术风险与建议 ### 8.1 已知风险 | 风险 | 说明 | 建议 | |------|------|------| | Spring Boot版本 | 实际3.5.8,非4.0 | 升级至4.0需测试兼容性 | | LangChain4j版本 | 1.11.0较新 | 关注API稳定性 | | SQL Server支持 | 原生支持MySQL | ERP服务需自定义JDBC | ### 8.2 升级建议 1. **保持RuoYi-AI版本**:使用当前稳定版3.5.8 2. **独立ERP服务**:避免双数据源复杂性 3. **逐步迁移**:先复用chat模块,再扩展ERP功能 --- ## 九、总结 ### 9.1 核心收获 1. **架构成熟**:多模块设计合理,公共组件复用度高 2. **AI能力完整**:模型接入、RAG、Agent、工作流全覆盖 3. **代码质量高**:规范清晰,文档完善 4. **扩展性强**:MCP协议、流程编排支持自定义 ### 9.2 下一步行动 1. 复用 `ruoyi-chat` 模块作为 `hzhub-ai` 基础 2. 复用 `ruoyi-aiflow` 模块作为流程编排引擎 3. 开发 `hzhub-erp` 模块,参考SQL Agent模式 4. 整合三个模块,构建HZHub完整后端 --- **审查完成时间**:2026-03-26 08:30 UTC **审查人**:大壮