Skip to content
kobewlPublic

About

AgentJ 是一个旨在利用 Java 语言实现类似 Manus AI 自主智能体功能和架构的项目。 Manus 是一款先进的通用 AI 助手,它能够独立规划、执行和交付复杂的现实世界任务,而不需要持续的人工监督。

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

67 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

AgentJ

AgentJ Logo Spring Boot Vue 3 TypeScript License

一个功能强大的AI智能体工作台平台

快速开始 · 功能特性 · 架构设计 · 文档

项目简介

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+

后端启动

  1. 克隆项目
git clone https://github.com/yourusername/AgentJ.git
cd AgentJ/AgentJ_backend
  1. 配置数据库
# 创建数据库
mysql -u root -p
CREATE DATABASE agentj CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  1. 配置应用

编辑 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
  1. 启动 Qdrant
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant:latest
  1. 启动应用
./mvnw spring-boot:run -Dspring-boot.run.profiles=dev

前端启动

  1. 进入前端目录
cd AgentJ/AgentJ_frontend
  1. 安装依赖
npm install
  1. 配置 API 地址

编辑 .env.development:

VITE_API_BASE_URL=http://localhost:8080
  1. 启动开发服务器
npm run dev
  1. 访问应用

打开浏览器访问 http://localhost:5173

生产构建

后端打包

cd AgentJ_backend
./mvnw clean package -DskipTests
java -jar target/AgentJ_backend-0.0.1-SNAPSHOT.jar

前端打包

cd AgentJ_frontend
npm run build

项目结构

AgentJ/
├── 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后端文档

RAG 系统

AgentJ 集成了完整的 RAG(检索增强生成)系统,支持:

  • 文档加载: 支持多种文档格式(Markdown、PDF、Word 等)
  • 向量化存储: 基于 Qdrant 的向量数据库
  • 智能检索: 支持相似度检索和关键词检索
  • 质量评估: 多维度文档质量评估
  • 查询增强: 查询重写、关键词提取、意图识别

详细文档请参考 RAG 系统文档

工作流设计器

可视化工作流编排工具,支持:

  • 节点拖拽和连线
  • 多种节点类型(开始、结束、工具、条件等)
  • 工作流执行和监控
  • 执行步骤可视化

知识库管理

  • 知识库创建和管理
  • 文档上传和解析
  • 向量化存储和检索
  • 基于知识库的智能问答

AI 代码生成 ⭐

基于 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 文档

启动后端服务后,访问以下地址查看 API 文档:

  • Swagger UI: http://localhost:8080/doc.html
  • Knife4j UI: http://localhost:8080/doc.html

新增API - 智能模板选择器缓存监控

  • GET /api/plan-template/template-selector/stats - 获取缓存统计信息
  • POST /api/plan-template/template-selector/clear-cache - 清除所有缓存
  • POST /api/plan-template/template-selector/clear-selection-cache - 清除选择结果缓存

新增API - AI 代码生成 ⭐

应用管理

  • 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集成 | 智能选择
零维护设计 | 用户体验优先 | 架构设计 | 系统优化

开发指南

添加新的智能体

  1. 在 agent/ 目录下创建新的智能体类
  2. 继承 BaseAgent 或实现相应接口
  3. 在配置文件中注册智能体
  4. 在前端添加对应的 UI 组件

添加新的工具

  1. 在 agent/model/Tool.java 中定义工具接口
  2. 实现工具逻辑
  3. 在智能体中注册工具
  4. 在工作流设计器中添加工具节点

添加新的页面

  1. 在 src/pages/ 下创建新的 Vue 组件
  2. 在 router/index.ts 中添加路由
  3. 在 layouts/AppLayout.vue 中添加菜单项

测试

后端测试

cd AgentJ_backend
./mvnw test

前端测试

cd AgentJ_frontend
npm run test

部署

Docker 部署

# 构建后端镜像
cd AgentJ_backend
docker build -t agentj-backend .

# 构建前端镜像
cd AgentJ_frontend
docker build -t agentj-frontend .

# 启动服务
docker-compose up -d

传统部署

参考 生产构建 章节。

贡献指南

欢迎贡献代码!请遵循以下步骤:

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 提交 Pull Request

许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件

联系方式

致谢

感谢以下开源项目:


如果这个项目对您有帮助,请给我们一个 Star ⭐

Made with ❤️ by AgentJ Team

About

AgentJ 是一个旨在利用 Java 语言实现类似 Manus AI 自主智能体功能和架构的项目。 Manus 是一款先进的通用 AI 助手,它能够独立规划、执行和交付复杂的现实世界任务,而不需要持续的人工监督。

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages