我用 Java 造了一个企业级 AI 智能体平台,2核4G就能跑|AgentX 专栏前言

AgentX 是一个基于 Java 生态构建的企业级 AI 智能体平台,专为金融风控、政务流程等高要求场景设计。平台在 2核4G 低配服务器上完整运行,采用 Spring Boot 3 + LangChain4j + Milvus + Redis 技术栈,具备工具系统、分层记忆、工作流编排等核心能力。本专栏将分享从架构设计到生产落地的完整实战经验,为 Java 开发者提供可复现的企业级 AI 解决方案。


本文速览:

  • 为什么 2025 年 Agent 才是 AI 应用的核心战场?
  • AgentX 是什么,解决什么问题,为什么用 Java 而不是 Python?
  • 这个专栏会写什么、写给谁看?
  • 作者是谁,怎么联系?

一、大多数 AI 教程,在回避一个真实问题

我见过太多这样的教程:

# 10行代码接入ChatGPT
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(...)
print(response.choices[0].message.content)

看起来很酷,实际上没什么用。

真实的业务场景根本不是这样的。客户说的是——

“帮我把这 50 份合同扫一遍,找出付款条款有问题的,和上个季度的财报对比一下,生成一份风险摘要发给法务部。”

这不是一次 chat.completions.create 能搞定的。这需要读文件、查数据、多步推理、调工具、反馈修正

这就是 Agent 和"接个 API"之间的本质差距。

而市面上关于 Java 生态如何构建生产可用 Agent 系统的资料,几乎是空白的。

这是我写这个专栏的原因。


二、AgentX 是什么

AgentX 是我利用业余时间,在一台低配服务器上从零搭建的企业级 AI 智能体平台

不是 Demo,不是玩具。

它专为金融风控、政务流程等对稳定性和合规性要求极高的场景设计,核心特性如下:

特性 说明
极限资源优化 2 核 4G 服务器完整运行,Milvus 压缩至 470MB,Spring Boot 后端仅 363MB
工具系统 内置文档、金融、风控工具,通过 MCP 协议无限扩展
分层记忆 Redis 短期会话 + Milvus 向量长期记忆,无缝协作
工作流编排 LangGraph 驱动的多步骤 Agent 自主决策
全链路可观测 OpenTelemetry 端到端追踪,每次 LLM 调用有迹可查
企业级安全 JWT 认证、敏感词过滤、审计日志、数据加密

技术栈:Java 21 + Spring Boot 3 + LangChain4j 1.13 + Milvus + Redis + OpenTelemetry


2核4G 服务器实际运行状态

为了直观展示 AgentX 平台的资源效率,下图模拟了在一台 2核4G 服务器上的实际运行状态:

# Docker 容器状态
$ docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
NAMES               STATUS              PORTS
agentx-backend      Up 2 hours          0.0.0.0:8080->8080/tcp
milvus-standalone   Up 2 hours          0.0.0.0:19530->19530/tcp, 0.0.0.0:9091->9091/tcp
redis               Up 2 hours          0.0.0.0:6379->6379/tcp
ollama              Up 2 hours          0.0.0.0:11434->11434/tcp

# 系统资源占用(top 命令精简输出)
$ top -bn1 | grep -E "(PID|agentx|milvus|redis|ollama)"
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 1234 java      20   0   2.8G   363M   120M S   2.3   9.1   2:34.56 java -jar agentx.jar
 2345 root      20   0   1.2G   470M    80M S   1.2  11.8   1:23.45 milvus
 3456 redis     20   0   120M    45M    12M S   0.5   1.1   0:45.67 redis-server
 4567 ollama    20   0   1.5G   680M   150M S   3.1  17.0   3:12.34 ollama serve

# Spring Boot 启动日志(关键片段)
2025-01-15 10:30:45.123 INFO 1234 --- [main] c.s.agentx.AgentXApplication : Starting AgentXApplication v1.0.0
2025-01-15 10:30:45.456 INFO 1234 --- [main] c.s.agentx.AgentXApplication : Running with Java 21.0.3
2025-01-15 10:30:46.789 INFO 1234 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080
2025-01-15 10:30:46.890 INFO 1234 --- [main] c.s.agentx.AgentXApplication : Started AgentXApplication in 1.845 seconds
2025-01-15 10:30:47.123 INFO 1234 --- [main] c.s.agentx.config.ToolRegistry : Registered 12 MCP tools
2025-01-15 10:30:47.456 INFO 1234 --- [main] c.s.agentx.memory.MemoryOrchestrator : Memory layers initialized (Redis + Milvus)

说明

  • Docker 容器:AgentX 后端、Milvus、Redis、Ollama 四个核心服务稳定运行,总内存占用约 1.5GB(含系统缓冲),完全满足 2核4G 服务器限制。
  • Spring Boot 应用:启动时间仅 1.845 秒,JVM 堆内存约 363MB,体现了 Java 21 + Spring Boot 3 的轻量级优化。
  • 资源分配:剩余约 2.5GB 内存可供业务处理,证明了 AgentX 在有限资源下的可行性。

核心架构图

AgentX 平台采用分层架构设计,各组件职责清晰,交互流程如下:

外部工具与服务

记忆存储层

AI 服务层

Spring Boot 后端层

前端层

HTTP/WebSocket

REST API

请求解析

工具调用

记忆检索

向量检索

Prompt 构建

工具执行

工具执行

工具执行

工具执行

LLM 请求

向量化

响应返回

向量存储/检索

会话上下文

相似记忆

工作流编排 (LangGraph)

全链路追踪 (OpenTelemetry)

Web 界面 (Vue/React)

API 客户端 (移动端/第三方)

API Gateway (JWT 认证)

Agent 调度引擎

工具执行器 (MCP 协议)

Prompt 工程与编排

LLM 服务 (OpenAI/本地模型)

Embedding 模型

Redis (短期会话记忆)

Milvus (向量长期记忆)

文档解析工具

金融数据 API

数据库查询引擎

其他 MCP 工具

架构说明

  1. 前端层:提供用户交互界面,通过 API Gateway 与后端通信

    • 典型组件:Vue.js SPA 应用,包含对话界面、文件上传组件、任务状态监控面板
    • 功能示例:用户上传 PDF 合同后,前端实时显示解析进度和 AI 分析结果
  2. 后端层:Spring Boot 应用,负责 Agent 调度、工具执行和流程编排

    • 典型组件:AgentScheduler(基于虚拟线程的并发调度)、ToolRegistry(MCP 工具注册中心)、WorkflowEngine(LangGraph 执行引擎)
    • 功能示例:接收"分析财报风险"任务,自动编排"文档解析→数据提取→风险计算→报告生成"多步骤工作流
  3. AI 服务层:LLM 处理推理任务,Embedding 模型处理向量化

    • 典型组件:OpenAIClient(对接 GPT-4/GPT-4o)、LocalLLMService(Ollama 集成)、EmbeddingService(text-embedding-3-small 向量化)
    • 功能示例:将用户查询"找出合同中的付款条款"转换为向量,在 Milvus 中检索相似历史案例
  4. 记忆存储层:Redis 存储短期会话状态,Milvus 存储向量化长期记忆

    • 典型组件:SessionMemoryStore(Redis 实现)、VectorMemoryStore(Milvus 实现)、MemoryOrchestrator(记忆分层调度器)
    • 功能示例:Redis 缓存当前对话的 10 轮上下文,Milvus 存储过去 1000 次相似任务的执行经验和结果
  5. 外部工具:通过 MCP 协议扩展,支持文档、金融、数据库等各类工具

    • 典型组件:PDFParserTool(Apache PDFBox)、FinancialDataTool(对接 Wind/同花顺 API)、SQLQueryTool(JDBC 连接池)
    • 功能示例:Agent 调用 SQLQueryTool 执行"SELECT * FROM financial_reports WHERE quarter=‘Q4’"查询数据库

三、为什么不用 Python

这是我最常被问到的问题。

原因很直接:企业的后端几乎都是 Java

如果用 Python 构建一套 AI 系统,你面临的问题不是"能不能跑起来",而是:

  • 怎么和现有的 Spring 应用集成?
  • 运维团队维护两套语言的成本怎么算?
  • Python 的 GIL 在高并发下怎么处理?

Java 21 引入了虚拟线程,Spring Boot 3 原生支持响应式编程,LangChain4j 提供了和 LangChain(Python)几乎对等的 AI 编程能力。

技术能力上,Java 生态已经完全够用了。

选 Java,是降低落地成本、接入现有系统的务实决策,不是情怀。


四、专栏路线图

整个专栏按"从地基到落地"规划,预计 15 篇以上

第一阶段:地基

  • 架构设计:在预算有限时如何做技术选型
  • LangChain4j 核心用法,以及和 Python 生态的异同对照
  • 2C4G 环境搭建:Milvus + Redis + Ollama 共存实战

第二阶段:核心能力

  • 工具系统设计:从内置工具到 MCP 协议扩展
  • 记忆管理:短期会话与向量长期记忆的分层协同
  • 工作流编排:LangGraph 实现多步骤 Agent 自主决策

第三阶段:进阶场景

  • Text-to-SQL:让 Agent 直接操作数据库回答业务问题
  • 复杂文档解析:财报、合同、多栏 PDF 的正确处理方式
  • GraphRAG:Neo4j 知识图谱增强检索精度,解决跨文档推理难题

第四阶段:生产落地

  • 企业级安全:JWT、敏感词过滤、审计日志实战
  • 性能调优:Java 21 虚拟线程在 Agent 高并发场景下的实践
  • 一键 Docker 部署 + 运维监控完整方案

每一篇都有可运行的完整代码,每个设计决策都会解释为什么这样做,以及有什么代价


五、写给谁看

最合适的读者:

  • Java 后端开发者,想进入 AI 应用领域,苦于缺少 Java 实践参考
  • 做过 RAG,想进一步探索 Agent 工作流和多步骤自主决策
  • 企业技术负责人,评估如何把 AI 能力接入现有 Java 系统
  • 独立开发者,想把一套 Agent 框架做成可复用的商业产品

不太合适的读者:

  • 只想看 “10行代码接入大模型” 的入门帖
  • 追求 Python/前沿框架的技术潮流者

这个专栏更关注的是:真实工程问题的取舍过程,而不是"最新 API 怎么用"。


六、快速部署指南

为了让读者能够快速体验 AgentX 平台,这里提供两种部署方式:Docker Compose 一键部署和手动部署。两种方式都包含验证步骤,确保部署成功。

方式一:Docker Compose 一键部署(推荐)

  1. 准备环境

    • 确保服务器满足:2核4G 内存,20GB 磁盘空间
    • 安装 Docker 和 Docker Compose
    • 开放端口:8080(后端)、19530(Milvus)、6379(Redis)、11434(Ollama)
  2. 下载部署文件

    git clone https://github.com/SuniaW/agentx.git
    cd agentx/deploy
    
  3. 一键启动

    # 使用 Docker Compose 启动所有服务
    docker-compose up -d
    
    # 查看服务状态
    docker-compose ps
    
  4. 验证部署

    # 检查后端健康状态
    curl http://localhost:8080/actuator/health
    
    # 预期返回:
    # {"status":"UP","components":{"db":{"status":"UP"},"diskSpace":{"status":"UP"},"ping":{"status":"UP"}}}
    
    # 检查 Milvus 连接
    curl http://localhost:9091/healthz
    
    # 检查 Redis
    docker exec deploy-redis-1 redis-cli ping
    # 应返回:PONG
    
    # 检查 Ollama
    curl http://localhost:11434/api/tags
    
  5. 访问平台

    • 打开浏览器访问:http://你的服务器IP:8080
    • 默认管理员账号:admin / admin123(首次登录后请立即修改)

方式二:手动部署(分步安装)

如果 Docker Compose 方式遇到网络或兼容性问题,可以按以下步骤手动部署:

  1. 安装依赖服务

    # 1. 安装 Redis
    docker run -d --name redis -p 6379:6379 redis:7-alpine
    
    # 2. 安装 Milvus(单机版)
    docker run -d --name milvus -p 19530:19530 -p 9091:9091 milvusdb/milvus:v2.4.0-rc.1
    
    # 3. 安装 Ollama(本地模型服务)
    docker run -d --name ollama -p 11434:11434 ollama/ollama:latest
    ollama pull llama3.2:3b  # 下载一个轻量级模型
    
  2. 部署 AgentX 后端

    # 下载最新 release
    wget https://github.com/SuniaW/agentx/releases/latest/download/agentx.jar
    
    # 创建配置文件 application.yml
    cat > application.yml << EOF
    server:
      port: 8080
    spring:
      data:
        redis:
          host: localhost
          port: 6379
    milvus:
      host: localhost
      port: 19530
    ollama:
      base-url: http://localhost:11434
    EOF
    
    # 启动应用
    java -jar agentx.jar --spring.config.location=application.yml
    
  3. 验证部署成功

    • 健康检查:访问 http://localhost:8080/actuator/health,应返回 {"status":"UP"}
    • API 测试:访问 http://localhost:8080/api/v1/tools,应返回已注册的工具列表
    • 日志检查:查看应用日志,确认无错误信息
    • 内存监控:使用 docker statstop 命令确认各服务内存占用正常

部署后验证清单

基础服务检查

  • AgentX 后端:curl -f http://localhost:8080/actuator/health
  • Milvus:curl -f http://localhost:9091/healthz
  • Redis:docker exec redis redis-cli ping
  • Ollama:curl -f http://localhost:11434/api/tags

功能验证

  • 访问 Web 界面:http://服务器IP:8080 可正常打开
  • 用户登录:使用默认账号可成功登录
  • 工具调用:尝试调用一个内置工具(如天气查询)
  • 对话测试:发送一条消息,确认 AI 能正常回复

性能监控

  • 内存占用:总内存使用 < 3.5GB(留出系统缓冲)
  • CPU 使用率:平均 < 70%
  • 启动时间:AgentX 后端启动 < 5 秒

常见问题排查

Q1:端口冲突怎么办?

# 查看端口占用
netstat -tlnp | grep :8080

# 修改端口(以 Docker Compose 为例)
# 编辑 docker-compose.yml,修改 ports 配置

Q2:内存不足怎么办?

  • 调整 JVM 参数:java -Xmx512m -Xms256m -jar agentx.jar
  • 减少 Ollama 模型大小:使用更小的模型如 llama3.2:1b
  • 调整 Milvus 配置:减少向量维度或使用量化索引

Q3:如何查看详细日志?

# 查看 AgentX 日志
docker logs -f agentx-backend

# 查看所有服务日志
docker-compose logs -f

下一步

部署成功后,建议:

  1. 修改默认密码:立即修改管理员密码
  2. 配置 HTTPS:生产环境务必启用 HTTPS
  3. 设置监控:集成 Prometheus + Grafana 监控面板
  4. 备份数据:定期备份 Redis 和 Milvus 数据

如需更详细的部署说明或遇到问题,请参考 GitHub 仓库的部署文档 或在 Issues 中提问。

🤝 写在最后:关于「关注」这件事

用 Java 做 AI Agent,市面上的完整实战教程真的不多——要不就是 Python 生态的,要不就是只讲概念不贴代码。这个系列 11 篇,从选型、架构、工具、RAG、记忆、可观测、工作流、MCP 到部署和 Eval,一条龙做完了。每篇都带可复现的源码和踩坑记录。

如果这篇对你有点用:

  • 👍 点赞 + 收藏:让更多 Java 做 AI 的同路人刷到,也方便你回头查;
  • 🔔 关注我:这个系列已完结,但 Python 金融反欺诈 GraphRAG 新系列正在连载,关注了主页随时看两个系列;
  • Star on GitHubgithub.com/SuniaW/agentx — 你的 star 是开源项目最好的投票
  • 📂 想按顺序系统学完 11 篇?点这里看完整阅读路线图,每篇一句话重点 + 源码地址,标好了先后顺序;
  • 💬 评论区聊聊:你正在做 AI 转型吗?卡在哪一步?

我是 SuniaCoder(汪旭 / Sunia),一个写了 12 年代码的全栈老兵,正在记录自己的 AI 突围。
这里只写能落地、可复现的硬核实战——不灌水,不空谈。我们下一篇见。

💬 评论区聊聊:你用 Java 做 AI 遇到过最奇葩的坑是什么?


Tags: Java Agent / LangChain4j / Spring Boot AI / 企业级AI / RAG进阶 / 智能体开发 / Milvus / MCP协议

更多推荐