AgentJ 是一个基于 Spring AI 和 Vue 3 的 AI 智能体工作台平台,集成了对话管理、知识库检索、工作流编排、计划模板、定时任务等核心功能,支持多种大模型接入和 RAG(检索增强生成)能力。
- 🤖 AI 对话系统 - 支持流式对话、多会话管理、Markdown 渲染和代码高亮
- 📚 知识库管理 - 支持文档上传、向量化存储、智能检索和问答
- 🔄 工作流设计器 - 可视化工作流编排,支持节点拖拽、连线编辑
- 📋 智能计划模板 - 两种执行模式(autonomous/guided),支持AI自动选择,零硬编码规则
- ⏰ 定时任务 - 动态 Cron 任务调度,支持任务状态监控
- 💾 记忆管理 - 用户个人记忆存储,支持长期记忆和上下文关联
- 🔧 配置中心 - 统一配置管理,支持热更新和参数验证
- 🎯 统一代理 - 多代理协作,支持工具调用和执行计划
- ✨ AI 代码生成 - 基于自然语言生成 HTML/CSS/JS 代码,支持可视化编辑和实时预览 ⭐
- 🔍 RAG 系统 - 基于 Qdrant 的向量检索,支持多种文档格式
- 🌐 多模型支持 - 集成 DashScope(通义千问)、支持自定义模型
- 🚀 性能优化 - 智能模板选择器性能提升99.5%(1170ms → 5ms)
- 📊 执行追踪 - 完整的执行记录和步骤可视化
- 🔐 身份认证 - JWT Token 认证,支持权限控制
- 📱 响应式设计 - 移动端适配,支持深色模式
- ♿ 无障碍优化 - ARIA 属性、键盘导航、跳转链接
- ⚡ 高并发支持 - 线程安全设计,支持无限并发用户
┌─────────────────────────────────────────────────────────────┐
│ 前端层 (Vue 3) │
├─────────────────────────────────────────────────────────────┤
│ ChatDialog │ WorkflowDesigner │ KnowledgeManage │
│ UnifiedAgent│ PlanTemplates │ CronTasks │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 后端层 (Spring Boot) │
├─────────────────────────────────────────────────────────────┤
│ Agent │ Conversation │ Knowledge │ Planning │
│ Runtime │ Service │ Service │ Service │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 数据层 │
├─────────────────────────────────────────────────────────────┤
│ MySQL/PostgreSQL │ Qdrant │ H2 │ File System │
└─────────────────────────────────────────────────────────────┘
- 框架: Spring Boot 3.5.8
- 语言: Java 21
- AI 框架: Spring AI 1.1.0-M4
- 大模型: DashScope(通义千问)
- 向量数据库: Qdrant
- ORM: MyBatis Plus 3.5.9
- API 文档: Knife4j 4.4.0
- 工具库: Hutool 5.8.38, Lombok 1.18.42
- 框架: Vue 3.4.37
- 语言: TypeScript 5.5.4
- 构建工具: Vite 5.4.10
- UI 组件: Element Plus 2.9.2
- 路由: Vue Router 4.3.2
- HTTP 客户端: Axios 1.7.7
- Markdown: Marked 17.0.1
- 代码高亮: Highlight.js 11.11.1
- 工作流: Vue Flow 1.48.1
- JDK 21+
- Node.js 18+
- Maven 3.6+
- MySQL 8.0+ / PostgreSQL 12+
- Qdrant 1.7+
- 克隆项目
git clone https://github.com/yourusername/AgentJ.git
cd AgentJ/AgentJ_backend- 配置数据库
# 创建数据库
mysql -u root -p
CREATE DATABASE agentj CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;- 配置应用
编辑 src/main/resources/application-dev.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/agentj
username: root
password: your_password
ai:
dashscope:
api-key: your_dashscope_api_key
embedding:
model: text-embedding-v4
chat:
options:
model: qwen-flash
vectorstore:
qdrant:
host: localhost
port: 6334
collection-name: knowledge_base- 启动 Qdrant
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant:latest- 启动应用
./mvnw spring-boot:run -Dspring-boot.run.profiles=dev- 进入前端目录
cd AgentJ/AgentJ_frontend- 安装依赖
npm install- 配置 API 地址
编辑 .env.development:
VITE_API_BASE_URL=http://localhost:8080- 启动开发服务器
npm run dev- 访问应用
打开浏览器访问 http://localhost:5173
cd AgentJ_backend
./mvnw clean package -DskipTests
java -jar target/AgentJ_backend-0.0.1-SNAPSHOT.jarcd AgentJ_frontend
npm run buildAgentJ/
├── AgentJ_backend/ # 后端项目
│ ├── src/main/java/
│ │ └── com/wangliang/agentj/
│ │ ├── agent/ # 智能体核心
│ │ ├── auth/ # 身份认证
│ │ ├── codegen/ # AI 代码生成 ⭐
│ │ ├── config/ # 配置管理
│ │ ├── conversation/ # 对话管理
│ │ ├── cron/ # 定时任务
│ │ ├── knowledge/ # 知识库
│ │ ├── llm/ # 大模型服务
│ │ ├── planning/ # 计划模板
│ │ ├── rag/ # RAG 系统
│ │ ├── runtime/ # 运行时执行
│ │ └── mcp/ # MCP 服务
│ ├── src/main/resources/
│ │ ├── application.yml # 主配置文件
│ │ ├── application-dev.yml # 开发环境配置
│ │ └── document/ # 知识库文档
│ └── sql/ # 数据库脚本
└── AgentJ_frontend/ # 前端项目
├── src/
│ ├── api/ # API 接口
│ ├── components/ # 公共组件
│ ├── layouts/ # 布局组件
│ ├── pages/ # 页面组件
│ │ └── CodeGen/ # 代码生成模块 ⭐
│ ├── router/ # 路由配置
│ ├── styles/ # 全局样式
│ └── utils/ # 工具函数
├── index.html
├── package.json
└── vite.config.ts
AgentJ 提供灵活的计划模板系统,支持两种执行模式和AI自动选择:
-
两种执行模式:
autonomous(完全自主)- AI拥有所有工具,自主决定执行步骤guided(模板引导)- 工具受控,步骤有框架,可触发自动规划
-
AI自动选择 - 用户无需手动选择模板,AI根据任务自动选择最合适的执行模式
- 零硬编码规则 - 基于模板元数据和LLM语义理解
- 性能优化99.5% - 三级缓存策略(规则1ms + 缓存0ms + LLM 500ms)
- 支持无限并发 - 线程安全设计
详细文档请参考 AgentJ后端文档
AgentJ 集成了完整的 RAG(检索增强生成)系统,支持:
- 文档加载: 支持多种文档格式(Markdown、PDF、Word 等)
- 向量化存储: 基于 Qdrant 的向量数据库
- 智能检索: 支持相似度检索和关键词检索
- 质量评估: 多维度文档质量评估
- 查询增强: 查询重写、关键词提取、意图识别
详细文档请参考 RAG 系统文档
可视化工作流编排工具,支持:
- 节点拖拽和连线
- 多种节点类型(开始、结束、工具、条件等)
- 工作流执行和监控
- 执行步骤可视化
- 知识库创建和管理
- 文档上传和解析
- 向量化存储和检索
- 基于知识库的智能问答
基于 Spring AI 实现的智能代码生成功能,支持:
- 自然语言生成代码 - 通过对话方式描述需求,AI 自动生成 HTML/CSS/JS 代码
- SSE 流式响应 - 实时代码生成,用户体验流畅
- 可视化编辑 - 在预览区域直接点击元素进行选中修改
- 对话记忆 - 保持对话上下文(最近20条),支持增量修改
- 应用管理 - 创建、编辑、删除、部署代码生成应用
- Markdown 渲染 - AI 响应使用 Markdown 格式渲染,支持代码高亮
- 代码下载 - 支持下载生成的代码(ZIP 格式)
- 静态部署 - 将生成的代码部署为静态网页访问
详细文档请参考 AgentJ 代码生成功能集成 或 Obsidian 文档
主要配置文件位于 src/main/resources/:
application.yml: 主配置文件application-dev.yml: 开发环境配置application-prod.yml: 生产环境配置
主要配置文件:
vite.config.ts: Vite 构建配置tsconfig.json: TypeScript 配置.env.development: 开发环境变量.env.production: 生产环境变量
启动后端服务后,访问以下地址查看 API 文档:
- Swagger UI:
http://localhost:8080/doc.html - Knife4j UI:
http://localhost:8080/doc.html
GET /api/plan-template/template-selector/stats- 获取缓存统计信息POST /api/plan-template/template-selector/clear-cache- 清除所有缓存POST /api/plan-template/template-selector/clear-selection-cache- 清除选择结果缓存
应用管理
POST /api/codegen/app- 创建应用GET /api/codegen/app/:id- 获取应用详情GET /api/codegen/app- 获取用户的应用列表PUT /api/codegen/app/:id- 更新应用信息DELETE /api/codegen/app/:id- 删除应用POST /api/codegen/app/:id/deploy- 部署应用GET /api/codegen/app/:id/download- 下载应用代码
代码生成
GET /api/codegen/generate/stream- SSE 流式生成代码GET /api/codegen/chat/history/:appId- 获取对话历史
静态资源
GET /static/html/:deployKey/*- 访问部署的静态页面
1. Spring AI深度应用
- ToolCallback机制 - 编程式工具管理
- ChatClient API - LLM调用封装
- Function Calling - AI函数调用
- 三种智能体模式 - BaseAgent、ReActAgent、DynamicAgent
2. 性能优化实战
- 从1170ms优化到5ms,性能提升99.5%
- 三级缓存策略 - 规则匹配 + 结果缓存 + LLM兜底
- 线程安全设计 - volatile + ConcurrentHashMap + 双重检查锁
- 高并发支持 - 支持无限并发用户,无数据库压力
3. 架构设计能力
- 模板系统设计 - 平衡灵活性和可控性
- 工厂模式应用 - 静态工厂、动态创建、Spring Bean三种方式
- 智能选择系统 - LLM驱动的模板选择,零硬编码规则
- 零维护设计 - 添加新模板无需修改代码
4. 系统设计思维
- 两种执行模式 - autonomous(完全自主)vs guided(模板引导)
- 自动化决策 - AI自动选择最合适的执行模式
- 用户体验优先 - 减少用户决策成本
- 渐进式优化 - 从硬编码规则到语义理解
| 指标 | 优化前 | 优化后 | 提升 |
|---|---|---|---|
| 平均响应时间 | 1170ms | ~5ms | 99.5% ⬆️ |
| 规则匹配 | 不支持 | ~1ms (80%任务) | 新功能 |
| 缓存命中 | 不支持 | ~0ms (15%任务) | 新功能 |
| LLM调用 | 100% | 5% | 95% ⬇️ |
| 并发支持 | 有压力 | 无压力 | 巨大提升 |
| 成本/1000次 | ~$1.0 | ~$0.05 | 95% ⬇️ |
Q1: 如何实现智能模板选择?
- 零硬编码规则 - 基于模板元数据
- LLM语义理解 - 理解用户任务和模板描述
- 三级缓存策略 - 规则1ms + 缓存0ms + LLM 500ms
- 性能提升99.5% - 从1170ms优化到5ms
Q2: ToolCallback和@Tool注解的区别?
- @Tool注解 - 声明式,自动注册
- ToolCallback - 编程式,更灵活
- AgentJ选择ToolCallback的原因 - 运行时动态管理、工具分组、白名单机制
Q3: 如何将性能优化99.5%?
- 问题分析 - 每次查数据库(170ms)+ 调用LLM(1000ms)
- 优化方案 - 模板元数据缓存 + 选择结果缓存 + 快速规则匹配
- 技术细节 - volatile、ConcurrentHashMap、双重检查锁
- 效果 - 99.5%任务<1ms,LLM调用减少95%
Spring AI | ToolCallback | ReAct Agent | 动态工具选择
性能优化 | 缓存策略 | 并发控制 | 线程安全
模板系统 | 工厂模式 | LLM集成 | 智能选择
零维护设计 | 用户体验优先 | 架构设计 | 系统优化
- 在
agent/目录下创建新的智能体类 - 继承
BaseAgent或实现相应接口 - 在配置文件中注册智能体
- 在前端添加对应的 UI 组件
- 在
agent/model/Tool.java中定义工具接口 - 实现工具逻辑
- 在智能体中注册工具
- 在工作流设计器中添加工具节点
- 在
src/pages/下创建新的 Vue 组件 - 在
router/index.ts中添加路由 - 在
layouts/AppLayout.vue中添加菜单项
cd AgentJ_backend
./mvnw testcd AgentJ_frontend
npm run test# 构建后端镜像
cd AgentJ_backend
docker build -t agentj-backend .
# 构建前端镜像
cd AgentJ_frontend
docker build -t agentj-frontend .
# 启动服务
docker-compose up -d参考 生产构建 章节。
欢迎贡献代码!请遵循以下步骤:
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
本项目采用 MIT 许可证 - 详见 LICENSE 文件
- 项目主页: https://github.com/yourusername/AgentJ
- 问题反馈: https://github.com/yourusername/AgentJ/issues
- 邮箱: your.email@example.com
感谢以下开源项目:
如果这个项目对您有帮助,请给我们一个 Star ⭐
Made with ❤️ by AgentJ Team