Skip to content

About

This is a data analysis platform built with Java + Agent, a personal small project designed to provide everyone with learning materials for Java + Agent. If you find it helpful, feel free to give it a star. We also welcome your suggestions and guidance — let's learn about Agents together!

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

数据智能分析 Agent 平台

AI 驱动的 BI 数据分析 + 智能体编排平台(仅后端)。上传 Excel/CSV,描述分析目标,大模型自动产出分析结论与可渲染的 ECharts 图表;在「单次出图」之上,用 Agent 编排(意图路由 / Plan-Execute / Agent 交接)处理复杂多步分析,并通过 MCP 工具模块对接数据库、文件系统、浏览器。

这个项目在做什么

一句话:把「上传数据 → 提问 → 拿到图表和结论」这件事,做成一个会自己规划、会调用工具、能多轮记忆的智能体平台。

  • 你上传一份销售 Excel,说「分析复购率和退货率的关系并画图」——平台调用 Qwen-Plus 给出结论 + ECharts 配置。
  • 你说「先清洗异常值,再分析,再画图」——Agent 把它拆成多步,调用数据清洗工具,再把干净数据交回分析师 Agent 出图。
  • 你接着追问「那按地区拆一下」——它记得上一轮的数据,直接继续。

核心特性

  • 🤖 Agent 编排:意图路由判定单轮问答 vs 多步规划,复杂意图走 Plan-Execute-Loop,Agent 间可交接(data_analyst ↔ data_cleaner / sql_analyst,web_scraper → 知识沉淀)。
  • 📊 三条分析路径:同步、线程池异步(WebSocket 推送)、MQ 异步(RabbitMQ + 手动 ACK,可分布式),共享同一套图表状态机。
  • 🎯 推荐引擎:数据画像驱动图表类型推荐 + 分析方法论推荐,相似历史分析走统一多查询召回。
  • 🔍 RAG 知识检索:启动时把行业语料向量化入 Redis(HSNW),分析时多查询改写 + 混合检索(向量 + BM25)+ 重排注入。
  • 🧰 MCP 工具模块:独立的 database / filesystem / browser 三个 MCP Server,按 agent.mcp.bindings 绑定到对应 Agent。
  • 🗂️ 大文件智能采样:分层抽样保留分布特征,压缩到适合大模型处理的规模。

技术栈

Java 17 · Spring Boot 3.4.5 · Spring AI 1.1.1 + Spring AI Alibaba · MyBatis-Plus · MySQL 8 · Redis + Redisson(兼向量库)· RabbitMQ · MinIO · Elasticsearch · EasyExcel · Shiro + JWT · Playwright · Knife4j。

快速开始

1. 启动中间件

本地或 Docker 启动:MySQL 8、Redis、RabbitMQ、MinIO、Elasticsearch。

2. 初始化数据库

CREATE DATABASE data_analysis DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 执行 db/ 下脚本:data_analysis.sql、agent_session.sql、agent_memory.sql、
-- agent_trace.sql、agent_skills.sql、user_knowledge.sql

3. 配置

application.yml 及各环境 profile(application-local.yaml 等)已 gitignore。在 data-agent-platform/src/main/resources/ 下创建 application-local.yaml,配置数据源 / Redis / RabbitMQ / MinIO / ES / DashScope & DeepSeek Key / JWT 密钥 / MCP 绑定。关键项:

spring:
  datasource: { url: jdbc:mysql://localhost:3306/data_analysis, username: root, password: *** }
  data: { redis: { host: localhost, port: 6379 } }
  rabbitmq: { host: localhost, port: 5672, username: guest, password: guest }
  ai:
    dashscope: { api-key: ${DASHSCOPE_KEY}, base-url: https://dashscope.aliyuncs.com/compatible-mode/v1 }
minio: { endpoint: http://localhost:9000, access-key: minioadmin, secret-key: minioadmin, bucket: data-analysis }
suke: { jwt: { secret-key: ${JWT_SECRET}, ttl: 86400000, token-name: Authorization } }
agent:
  mcp:
    bindings: { web_scraper: browser, data_cleaner: filesystem, sql_analyst: database }

4. 构建与运行

mvn clean package -DskipTests
java -jar data-agent-platform/target/data-agent-platform-0.0.1-SNAPSHOT.jar   # 主应用 :8080

# 可选:启动 MCP Server 以启用对应 Agent 工具
mvn -pl mcp-server-browser    -am spring-boot:run   # :8081
mvn -pl mcp-server-filesystem -am spring-boot:run   # :8082
mvn -pl mcp-server-database   -am spring-boot:run   # :8083

启动后打开接口文档:http://localhost:8080/doc.html

主要接口

所有 /chart/**、/api/agent/** 接口需 JWT(先 POST /user/register + POST /user/login 拿 Token,请求头带 Authorization)。

方法 路径 说明
POST /chart/gen 同步生成图表(结论 + ECharts JSON)
POST /chart/gen/async 线程池异步(WebSocket 推送状态)
POST /chart/gen/async/mq MQ 异步(分布式)
POST /api/agent/session 创建 Agent 会话
POST /api/agent/chat/stream SSE 流式对话(前端主入口,经意图路由)
POST /api/agent/chat/plan-stream Plan-Execute 流式(复杂多步意图)
GET /api/agent/list 列出已注册 Agent

已注册 Agent:data_analyst(CSV 分析出图)、data_cleaner(清洗)、sql_analyst(数据库分析)、web_scraper(网页抓取→知识沉淀)、chitchat(闲聊兜底)。

项目结构

data-analysis/
├── data-agent-platform/      # 主应用(BI 主链路 + Agent 编排 + RAG + 推荐)
├── mcp-server-common/        # MCP 共享库
├── mcp-server-browser/       # 浏览器抓取工具(Playwright)
├── mcp-server-filesystem/    # 文件操作工具
├── mcp-server-database/      # 只读 SQL / 表结构工具
├── db/                       # 建表 SQL
├── doc/                      # 架构与模块设计文档(见下方)
├── test-data/                # 评测样例数据集
└── pom.xml                   # 父 POM(聚合)

📐 设计文档

想深入理解架构与各模块设计,请进入 doc/:

文档 内容
系统架构总览 项目定位、技术栈、分层、演进路线、文档导航
整体架构与模块设计 多模块结构、分层依赖、包结构、设计原则
数据流向与分析路径 主链路、三条路径对比、图表状态机
关键时序图 同步生成 / MQ 异步 / Agent 流式对话时序
Agent 编排层 意图路由、Plan-Execute、Agent 交接、5 个 Agent、会话记忆
推荐引擎与推荐场景 图表/方法论推荐、统一召回、test-data 推荐场景
RAG 知识检索 知识库构建、多查询检索、混合检索 + 重排
MCP 工具模块 4 个 MCP 模块、工具清单、Agent 绑定

🧪 评测

test-data/ 提供开箱即用的数据集:

数据集 规模 适合验证
电商月度销售数据.xlsx 12 行 入门首选,同步主链路 + 折线/柱状图
企业季度财务数据.xlsx 8 行 多指标对比,雷达图 + 方法论推荐
产品季度对比数据.xlsx 8 行 分组对比,图表类型推荐
区域销售分布数据.xlsx 15 行 地域分布,DataProfiler 画像
用户行为分析数据.xlsx 50 行 RFM 分群,统计分析 + 多查询召回
设备传感器数据.xlsx 360 行 大文件,智能采样 + 异步链路

数据由 test-data/generate_test_files.py 生成,可调整参数制造更大/更脏的数据测试 data_cleaner。E2E 测试位于 data-agent-platform/src/test/java/com/suke/e2e/(如 ConversationFlowE2ETest、ThreePathsE2ETest、ChartRecommendationE2ETest)。

运行截图

贡献

欢迎通过 Issues / Pull Requests 参与。正在完善的方向:向量检索解决各行业差异化分析、扩充 Agent 工具集、通过 MCP 实现可插拔工具方案。

License

本项目遵循开源协议,具体见根目录 LICENSE 文件。

About

This is a data analysis platform built with Java + Agent, a personal small project designed to provide everyone with learning materials for Java + Agent. If you find it helpful, feel free to give it a star. We also welcome your suggestions and guidance — let's learn about Agents together!

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages