# fly-agent
**Repository Path**: haer7751/fly_agent
## Basic Information
- **Project Name**: fly-agent
- **Description**: multi wonderful java agent project !
- **Primary Language**: Java
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2026-04-24
- **Last Updated**: 2026-04-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Fly Agent Platform
**企业级 AI 智能体平台** | 基于 AgentScope Java 构建
[](https://openjdk.org/)
[](https://spring.io/projects/spring-boot)
[](https://github.com/modelscope/agentscope)
[](LICENSE)
[功能特性](#功能特性) • [快速开始](#快速开始) • [技术架构](#技术架构) • [API 文档](#api-文档) • [开发指南](#开发指南)
---
## 简介
Fly Agent 是一个功能完备的企业级 AI 智能体平台,基于阿里巴巴开源的 [AgentScope Java](https://github.com/modelscope/agentscope) 框架构建。平台提供完整的 Agent 生命周期管理、Skill/Tool 扩展机制、分布式任务调度和现代化的 Web 界面。
### 核心亮点
- **渐进式披露 Skill 系统** - 按需加载,优化 Token 使用
- **双模 Skill 存储** - 内置 Skills(文件系统)+ 自定义 Skills(数据库)
- **分布式任务调度** - 基于 XXL-Job 的高可用任务调度
- **现代化 Web 界面** - React 19 + TypeScript + Tailwind CSS
- **企业级特性** - 完整的可观测性、监控和日志管理
---
## 功能特性
### Agent 管理
- **生命周期管理** - 创建、启动、停止、删除 Agent
- **配置管理** - 灵活的 Agent 配置系统
- **状态监控** - 实时监控 Agent 运行状态
### Skill 系统
- **渐进式披露** - 按需加载 Skill 内容,优化上下文窗口使用
- **双模存储** - 支持文件系统(内置)和数据库(自定义)两种存储方式
- **Tool 绑定** - Skill 可以绑定多个 Tool,实现复杂功能组合
- **版本管理** - 支持 Skill 版本控制和灰度发布
### 对话服务
- **多轮对话** - 支持连续的多轮对话交互
- **上下文管理** - 自动维护对话历史和上下文
- **流式响应** - 支持实时流式输出
- **会话持久化** - 对话记录持久化存储
### LLM 集成
- **智谱 AI** - 默认集成 GLM-5 模型(支持 glm-4-plus, glm-4-air, glm-4-flash)
- **统一接口** - 抽象的 LLM 调用接口,易于扩展
- **多模型支持** - 可扩展支持其他 LLM 提供商
### 任务调度
- **多种任务类型** - 简单任务、参数化任务、分片任务
- **业务场景示例** - 9 个开箱即用的 Demo Job
- **可视化调度** - XXL-Job Admin 提供可视化的任务管理界面
- **高可用** - 支持集群部署和故障转移
---
## 技术架构
### 后端技术栈
| 技术 | 版本 | 说明 |
|------|------|------|
| **JDK** | 17+ | Java 开发工具包 |
| **Spring Boot** | 3.2.0 | 应用框架 |
| **AgentScope Java** | 1.0.9 | AI 智能体框架 |
| **MySQL** | 8.0+ | 关系型数据库 |
| **Redis** | 6.0+ | 缓存和会话存储 |
| **XXL-Job** | 2.4.0 | 分布式任务调度 |
| **MyBatis-Plus** | 3.5.5 | ORM 框架 |
### 前端技术栈
| 技术 | 版本 | 说明 |
|------|------|------|
| **React** | 19.2.0 | UI 框架 |
| **TypeScript** | 5.9.3 | 类型系统 |
| **Vite** | 7.3.1 | 构建工具 |
| **Tailwind CSS** | 4.2.1 | CSS 框架 |
| **Framer Motion** | 12.34.3 | 动画库 |
| **Zustand** | 5.0.11 | 状态管理 |
| **React Query** | 5.90.21 | 数据获取 |
### 模块结构
```
fly-agent/
├── fly-agent-common/ # 公共组件层
│ ├── 响应对象封装 (Result)
│ ├── 异常处理 (Exception)
│ └── 工具类 (Utils)
│
├── fly-agent-dao/ # 数据访问层
│ ├── Entity (实体类)
│ ├── Mapper (MyBatis 接口)
│ └── XML (MyBatis 配置)
│
├── fly-agent-service/ # 业务服务层
│ ├── agent/ # Agent 管理服务
│ ├── conversation/ # 对话服务
│ ├── llm/ # LLM 服务(智谱AI)
│ ├── skills/ # Skill 管理
│ └── tools/ # Tool 管理
│
├── fly-agent-task/ # 任务调度模块
│ ├── config/ # XXL-Job 配置
│ └── job/ # 9 个 Demo Job
│
├── fly-agent-server/ # 服务启动模块(REST API)
│ ├── AgentApplication.java
│ └── api/controller/
│ ├── AgentController.java
│ └── ChatController.java
│
├── fly-agent-web/ # 前端 Web 应用
│ ├── src/
│ │ ├── components/ # React 组件
│ │ ├── hooks/ # 自定义 Hooks
│ │ ├── store/ # 状态管理
│ │ └── lib/ # 工具库
│ └── package.json
│
└── skills/ # Skill 文件系统
├── builtin/ # 内置 Skills
│ ├── code-review/
│ ├── data-analysis/
│ └── document-generation/
└── custom/ # 自定义 Skills
```
---
## 快速开始
### 前置要求
确保你的开发环境已安装以下软件:
- **JDK 17+** - [下载 OpenJDK](https://openjdk.org/)
- **Maven 3.8+** - [下载 Maven](https://maven.apache.org/)
- **Node.js 18+** - [下载 Node.js](https://nodejs.org/)
- **MySQL 8.0+** - [下载 MySQL](https://dev.mysql.com/)
- **Redis 6.0+** - [下载 Redis](https://redis.io/)
- **Docker** - [下载 Docker](https://www.docker.com/) (用于运行 XXL-Job Admin)
### 数据库初始化
#### 1. 创建数据库
```bash
# 创建 Fly Agent 数据库
mysql -u root -p -e "CREATE DATABASE fly_agent CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# 创建 XXL-Job 数据库
mysql -u root -p -e "CREATE DATABASE xxl_job DEFAULT CHARACTER SET utf8mb4;"
```
#### 2. 导入 XXL-Job 表结构
```bash
# 下载 XXL-Job SQL 脚本
curl -o /tmp/xxl-job.sql https://raw.githubusercontent.com/xuxueli/xxl-job/master/doc/db/tables_xxl_job.sql
# 导入数据库
mysql -u root -p xxl_job < /tmp/xxl-job.sql
```
#### 3. 启动 XXL-Job Admin
```bash
docker run -d --name xxl-job-admin --restart=always \
-p 9090:8080 \
-p 9091:8081 \
-e PARAMS="--spring.datasource.url=jdbc:mysql://host.docker.internal:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai \
--spring.datasource.username=root \
--spring.datasource.password=YOUR_MYSQL_PASSWORD" \
-e JAVA_OPTS="-Djavax.xml.accessExternalDTD=all" \
xuxueli/xxl-job-admin:2.4.0
```
访问 XXL-Job Admin:http://localhost:9090/xxl-job-admin (admin/123456)
### 配置应用
编辑 `fly-agent-server/src/main/resources/application.yml`:
```yaml
server:
port: 8081 # API 服务端口
spring:
datasource:
url: jdbc:mysql://localhost:3306/fly_agent
username: root
password: YOUR_MYSQL_PASSWORD
redis:
host: 127.0.0.1
port: 6379
database: 0
password: YOUR_REDIS_PASSWORD # 可选
agent:
zhipu:
api-key: YOUR_ZHIPU_API_KEY # 替换为实际的智谱AI API Key
```
### 启动服务
#### 启动后端
```bash
# 设置 JAVA_HOME(根据你的实际路径调整)
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
# 编译项目
mvn clean package -DskipTests
# 启动后端服务
cd fly-agent-server
mvn spring-boot:run
# 或使用 jar 包启动
java -jar target/fly-agent-server-1.0.0-SNAPSHOT.jar
```
#### 启动前端
```bash
# 进入前端目录
cd fly-agent-web
# 安装依赖(首次运行)
npm install
# 启动开发服务器
npm run dev
```
### 访问应用
- **前端界面**: http://localhost:3000
- **后端 API**: http://localhost:8081
- **XXL-Job Admin**: http://localhost:9090/xxl-job-admin
---
## API 文档
### Agent 管理
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | `/api/v1/agents` | 创建 Agent |
| GET | `/api/v1/agents/{id}` | 查询 Agent 详情 |
| GET | `/api/v1/agents` | 获取 Agent 列表 |
| POST | `/api/v1/agents/{id}/start` | 启动 Agent |
| POST | `/api/v1/agents/{id}/stop` | 停止 Agent |
| DELETE | `/api/v1/agents/{id}` | 删除 Agent |
### 对话接口
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | `/api/v1/chat/conversations` | 创建对话会话 |
| POST | `/api/v1/chat/completions` | 发送消息并获取响应 |
| GET | `/api/v1/chat/conversations/{id}` | 获取对话详情 |
| GET | `/api/v1/chat/conversations` | 获取对话列表 |
---
## 开发指南
### 添加自定义 Skill
1. **创建 Skill 目录**
```bash
mkdir -p skills/custom/my-skill
```
2. **编写 SKILL.md 文件**
```markdown
# My Custom Skill
## 描述
这是一个自定义技能的描述。
## 使用场景
- 场景一
- 场景二
## 使用方式
在使用时,请提供以下参数:
- param1: 参数说明
- param2: 参数说明
```
3. **添加资源文件**(可选)
在 Skill 目录下添加任何需要的资源文件(如代码示例、模板等)。
4. **重启服务或调用刷新 API**
```bash
# 重启后端服务
mvn spring-boot:restart
```
### 添加自定义 Tool
1. **创建 Tool 类**
在 `fly-agent-service` 模块中创建 Tool 类:
```java
package com.fly.agent.service.tools;
import io.agentscope.core.tool.ToolDescription;
import io.agentscope.core.tool.ToolExecutionException;
@ToolDescription(name = "myTool", description = "我的自定义工具")
public class MyTool {
public String execute(String param) throws ToolExecutionException {
// 实现工具逻辑
return "执行结果";
}
}
```
2. **注册 Tool**
在 `ToolRegistry` 中注册你的 Tool:
```java
toolRegistry.register(new MyTool());
```
### 添加新的 XXL-Job 任务
1. **创建 Job 类**
在 `fly-agent-task/src/main/java/com/fly/agent/task/job/` 创建新类:
```java
@Slf4j
@Component
public class MyCustomJob {
@XxlJob("myCustomJobHandler")
public void execute() {
log.info("执行自定义任务");
String param = XxlJobHelper.getJobParam();
try {
// 业务逻辑
doSomething();
XxlJobHelper.handleSuccess("任务执行成功");
} catch (Exception e) {
log.error("任务执行失败", e);
XxlJobHelper.handleFail("任务执行失败: " + e.getMessage());
}
}
}
```
2. **在 XXL-Job Admin 中配置任务**
- 进入「执行器管理」,确认执行器已注册
- 进入「任务管理」,点击「新增任务」
- 填写任务信息并选择 JobHandler 名称
---
## 配置说明
### 服务端口
| 服务 | 端口 | 说明 |
|------|------|------|
| Fly Agent Server | 8081 | REST API 服务 |
| XXL-Job Executor | 8082 | 任务执行器 |
| XXL-Job Admin | 9090 | 任务调度管理界面 |
| Frontend Dev Server | 3000 | 前端开发服务器 |
### 环境变量
| 变量名 | 说明 | 默认值 |
|--------|------|--------|
| `SERVER_PORT` | 后端服务端口 | 8081 |
| `DB_HOST` | 数据库主机 | localhost |
| `DB_PORT` | 数据库端口 | 3306 |
| `DB_NAME` | 数据库名称 | fly_agent |
| `REDIS_HOST` | Redis 主机 | 127.0.0.1 |
| `REDIS_PORT` | Redis 端口 | 6379 |
| `ZHIPU_API_KEY` | 智谱 AI API Key | - |
---
## 相关文档
- [XXL-Job 配置指南](docs/XXL-JOB_SETUP.md) - 详细的 XXL-Job 配置和使用说明
- [Task 模块 README](fly-agent-task/README.md) - 任务调度模块详细文档
- [配置总结](CONFIGURATION_SUMMARY.md) - 项目配置说明
- [实现指南](IMPLEMENTATION_INSTRUCTIONS.md) - 开发实现指南
- [前端技术栈](docs/FRONTEND_STACK.md) - 前端技术栈说明
---
## 许可证
本项目采用 [Apache License 2.0](LICENSE) 开源协议。
---
## 联系方式
- **项目地址**: [GitHub](https://github.com/your-org/fly-agent)
- **问题反馈**: [Issues](https://github.com/your-org/fly-agent/issues)
- **文档**: [Wiki](https://github.com/your-org/fly-agent/wiki)
---
**如果这个项目对你有帮助,请给我们一个 ⭐️ Star**
Made with ❤️ by Fly Agent Team