# AerotopMultiAgents
**Repository Path**: starboot/aerotop-multi-agents
## Basic Information
- **Project Name**: AerotopMultiAgents
- **Description**: 🚀 AerotopMultiAgents - 企业级多智能体开发框架的模板项目
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 3
- **Forks**: 0
- **Created**: 2026-01-10
- **Last Updated**: 2026-02-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Agent, AI
## README
# 🚀 AerotopMultiAgents - 企业级多智能体开发框架模板项目
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
[](https://github.com/modelscope/agentscope)
[](https://github.com/astral-sh/uv)
[](https://www.docker.com/)
[](https://docs.docker.com/compose/)
**基于AgentScope构建的下一代企业级多智能体开发框架的模板项目**
[特性](#特性) • [快速开始](#快速开始) • [项目结构](#项目结构) • [部署指南](#部署指南) • [贡献指南](#贡献指南)
## 📖 项目简介
**AerotopMultiAgents** 是一个基于 [AgentScope](https://github.com/modelscope/agentscope) 框架构建的企业级多智能体开发框架的**模板项目**。针对当前**AgentScope多智能体开发框架**开源时间较短、社区资料不足的痛点,我提供了一套**完整、可扩展、生产就绪**的多智能体系统开发解决方案。
本项目不仅修复了原生 AgentScope 框架(v1.0.10)的已知问题,还提供了完整的开发范式、工程化最佳实践和容器化部署方案,帮助开发者快速构建和部署复杂的多智能体系统。
## ✨ 核心特性
### 🐛 框架增强
- **稳定性改进**:修复 AgentScope v1.0.10 的已知 BUG,提供更稳定的运行环境
- **性能优化**:优化智能体间通信机制,降低延迟,提高吞吐量
### 🏗️ 完整开发模板
- **即用型模板**:提供开箱即用的 MultiAgent 系统模板,支持快速启动和定制
- **模块化设计**:清晰的层次结构和代码规范,便于团队协作和维护
### 🌐 全场景覆盖
- **MCP 集成**:支持 Model Context Protocol,统一模型交互接口
- **RAG 增强**:内置检索增强生成流程,支持多种向量数据库
- **记忆系统**:短/长时记忆管理,支持对话历史和知识持久化
- **智能路由**:动态请求路由和负载均衡机制
- **技能库**:可扩展的技能插件系统,支持自定义功能扩展
### 👥 多用户管理
- **多租户支持**:完善的用户和会话隔离机制
- **会话持久化**:支持会话状态的保存和恢复
- **并发处理**:优化多用户并发访问性能
### 🐳 容器化部署
- **Dockerfile**:提供生产级容器镜像构建方案
- **Docker Compose**:一键式部署,集成记忆系统中间件(Neo4j、向量数据库等)
- **健康检查**:完善的健康检查和服务发现机制
### 🔌 开放兼容
- **OpenAI 兼容**:完整实现 OpenAI API 接口规范
- **流式响应**:支持 Server-Sent Events (SSE) 流式输出
- **通用客户端**:可接入任意 OpenAI 兼容的客户端和应用
### ⚙️ 配置管理
- **配置中心**:集中式配置管理,支持环境变量覆盖
- **数据类封装**:类型安全的配置对象,支持 IDE 智能提示
- **热重载**:支持运行时配置更新,无需重启服务
## 🚀 快速开始
### 前置要求
- Python 3.12 或更高版本
- [UV 包管理工具](https://github.com/astral-sh/uv)(推荐)
- 可选:Docker v2.39.4 和 Docker Compose 28.4.0
```bash
# docker compose version
Docker Compose version v2.39.4
# docker --version
Docker version 28.4.0, build d8eb465
# docker version
Client:
Version: 28.4.0
API version: 1.51
Go version: go1.24.7
<...>
```
### 方式一:使用 UV(推荐)
#### 1. 安装 UV
```bash
# 使用官方安装脚本
curl -LsSf https://astral.sh/uv/install.sh | sh
# 或通过 pip 安装
pip install uv
```
#### 2. 克隆并安装项目
```bash
# 克隆项目
git clone https://github.com/*****/AerotopMultiAgents.git
cd AerotopMultiAgents
# 同步依赖(使用 uv)
uv sync
# 或使用传统方式
pip install -e .
```
#### 3. 配置环境
```bash
# 复制环境配置文件
cp .env.example .env
# 编辑配置文件,添加你的 API Keys 等配置
vim .env
```
#### 4. 运行示例
```bash
# 启动MCP Server服务
python ./mcp/mcp_add.py
python ./mcp/mcp_multiply.py
# 运行完整的多智能体系统
python main.py
```
### 方式二:Docker 启动
```bash
# 构建镜像
docker build -t aerotop-multiagents .
# 运行容器
docker run -p 10085:10085 \
-e OPENAI_MODEL_THINKING=Qwen/Qwen3-32B \
-e OPENAI_MODEL_INSTRUCTION=Qwen/Qwen2.5-32B-Instruct \
-e OPENAI_MODEL_EMBEDDING=Qwen/Qwen3-Embedding-8B \
-e OPENAI_MODEL_RERANK=BAAI/bge-reranker-v2-m3 \
-e OPENAI_API_KEY=ms-ac180211-50aa-4a0e-99fc-**** \
-e OPENAI_API_BASE_URL=https://api-inference.modelscope.cn/v1/ \
-e DATA_FOR_SESSION=./data/session/session.db \
-e DATA_FOR_LONG_MEMORY_PATH=./data/memory/qdrant_data \
-e LOG_LEVEL=info \
-e NEO4J_URI=bolt://neo4j:7687 \
-e NEO4J_USER=neo4j \
-e NEO4J_PASSWORD=aerotop \
-e NEO4J_DATABASE=aerotop \
-e MILVUS_HOST=milvus \
-e MILVUS_PORT=19530 \
-e MILVUS_COLLECTION_NAME=embeddings \
-e MILVUS_VECTOR_DIMENSION=1536 \
-v $(pwd)/data:/app/data \
aerotop-multiagents
```
### 方式三:Docker Compose 启动(推荐生产使用)
```bash
# 一键启动所有服务(包括记忆系统中间件)
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f app
# 停止服务
docker-compose down
```
## 📁 项目结构
```
AerotopMultiAgents/ # 主源码目录
├── agents/ # 智能体定义
│ ├── worker/ # 智能体定义
│ │ ├── chat_agent.py # 通用智能体类
│ │ └── code_agent.py # 编程智能体
│ └── master_agent.py/ # 主智能体
├── config/ # 系统配置
│ └── setting.py # 系统环境变量配置类
├── conversion/ # 消息块转换目录
│ └── convert_to_text_block.py # 工具使用转文本
├── data/ # 系统数据持久化存储
│ ├── memory/ # 记忆系统持久化目录
│ ├── milvus/ # 向量库数据持久化
│ ├── session/ # 会话持久化
│ ├── get-docker.sh # docker安装脚本
│ └── neo4j.sh # 知识图谱安装脚本
├── doc/ # 系统技术白皮书(暂未编写)
├── docker/ # 系统依赖容器镜像
├── formatter/ # 格式化目录
│ └── custom_openai_formatter.py # 自定义格式化工具
├── hooks/ # 钩子目录
│ ├── agent/ # 智能体钩子回调函数
│ │ └── pre_print.py # 格式化输出
│ └── tool/ # 工具钩子回调函数
│ └── search_tool_post_func.py # 工具钩子回调实例
├── knowledge/ # 智能体知识系统目录
│ ├── chat_knowledge.py # 通用智能体知识系统
│ ├── coder_knowledge.py # 编程智能体知识系统
│ └──master_knowledge.py # 主智能体知识系统
├── mcp/ # MCP Server目录
│ ├──mcp_add.py # SSE MCP Server服务
│ └──mcp_multiply.py # streamable-http MCP Server服务
├── memory/ # 记忆系统
│ ├── long_term_memory/ # 长时记忆系统
│ └── short_term_memory/ # 短时记忆系统
├── models/ # 结构体模型目录
│ ├── chat_agent/ # 通用智能体结构体模型目录
│ │ └── model.py # 通用智能体结构体模型
│ └── RoutingChoiceModel.py/ # 路由结构体模型
├── plans/ # 任务规划目录
│ └── main_manual_plan.py # 主智能体任务规划
├── prompts/ # 系统提示词目录
│ └── constants.py # 系统提示词枚举类
├── runtime/ # 系统运行时目录
│ └── runtime.py # 系统运行时类
├── session/ # 系统会话管理目录
│ └── sqlite_session.py # 会话持久化方案实现类
├── skill/ # 智能体技能目录
├── spi/ # 系统程序接口目录
│ └── aerotop_openai_token_counter.py # 自定义token计数器
├── tools/ # 智能体工具目录
│ └── search_tool.py # 搜索工具
├── .env.example # 环境变量示例
├── .gitignore # git忽略文件
├── .python-version # 项目Python版本
├── docker-compose.yml # 完整编排配置
├── docker-healthcheck.sh # 健康状态监测脚本
├── Dockerfile # 生产环境 Dockerfile
├── LICENSE # 开源协议
├── main.py # 主程序入口
├── pyproject.toml # 项目配置和依赖
├── README.md # 项目说明
├── start.sh # 系统启动脚本
└── uv.lock # UV 锁定文件
```
## 🐳 部署指南
### Docker Compose 详细配置
AerotopMiltiAgent项目的 `docker-compose.yml` 包含以下服务:
```yaml
version: '3.8'
# 定义网络,确保服务间可以相互通信
networks:
app-network:
driver: bridge
# 定义所有服务
services:
# Neo4j 图数据库服务
neo4j:
image: neo4j:5.26.19-community
container_name: neo4j-db
restart: unless-stopped
environment:
# 设置 Neo4j 认证信息
- NEO4J_AUTH=neo4j/aerotop
# 允许从容器外部访问
- NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
# 性能优化配置
- NEO4J_server_memory_heap_initial__size=1G
- NEO4J_server_memory_heap_max__size=2G
- NEO4J_server_memory_pagecache_size=1G
# 允许使用 APOC 插件
- NEO4J_PLUGINS=apoc
ports:
# Bolt 协议端口(应用程序使用)
- "7687:7687"
# HTTP 端口(浏览器访问)
- "7474:7474"
# HTTPS 端口
- "7473:7473"
volumes:
# 持久化数据存储
- neo4j_data:/data
# 持久化日志
- neo4j_logs:/logs
# 导入数据目录
- neo4j_import:/var/lib/neo4j/import
# 插件目录
- neo4j_plugins:/plugins
healthcheck:
test: ["CMD", "cypher-shell", "-u", "neo4j", "-p", "aerotop", "RETURN 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
- app-network
# 资源限制
deploy:
resources:
limits:
cpus: '2'
memory: 4G
reservations:
memory: 2G
# Milvus 向量数据库服务
milvus:
image: milvusdb/milvus:v2.6.8
container_name: milvus-db
restart: unless-stopped
environment:
# 启用身份验证
- MILVUS_AUTHORIZATION_ENABLED=false
# 开启审计日志
- MILVUS_AUDIT_LOG_ENABLE=true
# 时区设置
- TZ=Asia/Shanghai
- ETCD_ENDPOINTS=etcd:2379
- MINIO_ADDRESS=minio:9000
- MQ_TYPE=woodpecker
ports:
# gRPC 端口
- "19530:19530"
# HTTP 端口
- "9091:9091"
volumes:
# 持久化数据存储
- milvus_data:/var/lib/milvus
# 配置文件(可选)
# - ./milvus/config.yaml:/milvus/configs/config.yaml
depends_on:
# Milvus 依赖 etcd 和 minio
etcd:
condition: service_healthy
minio:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
interval: 30s
timeout: 10s
retries: 3
start_period: 90s
networks:
- app-network
# 资源限制
deploy:
resources:
limits:
cpus: '4'
memory: 8G
reservations:
memory: 4G
# Milvus 依赖服务:etcd(元数据存储)
etcd:
image: quay.io/coreos/etcd:v3.5.25
container_name: milvus-etcd
environment:
- ETCD_AUTO_COMPACTION_MODE=revision
- ETCD_AUTO_COMPACTION_RETENTION=1000
- ETCD_QUOTA_BACKEND_BYTES=4294967296
- ETCD_SNAPSHOT_COUNT=50000
volumes:
- etcd_data:/etcd
command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
healthcheck:
test: ["CMD", "etcdctl", "endpoint", "health"]
interval: 30s
timeout: 20s
retries: 3
networks:
- app-network
# Milvus 依赖服务:minio(对象存储)
minio:
image: minio/minio:RELEASE.2024-12-18T13-15-44Z
container_name: milvus-minio
environment:
- MINIO_ACCESS_KEY=minioadmin
- MINIO_SECRET_KEY=minioadmin
volumes:
- minio_data:/minio_data
command: minio server /minio_data --console-address ":9001"
ports:
# web 端口
- "9001:9001"
# app 端口
- "9000:9000"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
networks:
- app-network
# AerotopMultiAgents系统
app:
build:
context: .
dockerfile: Dockerfile
# 可选:使用目标构建阶段(如果 Dockerfile 是多阶段构建)
# target: production
container_name: aerotop-app
restart: unless-stopped
environment:
# 应用环境配置
- OPENAI_MODEL_THINKING=Qwen/Qwen3-32B
- OPENAI_MODEL_INSTRUCTION=Qwen/Qwen2.5-32B-Instruct
- OPENAI_MODEL_EMBEDDING=Qwen/Qwen3-Embedding-8B
- OPENAI_MODEL_RERANK=BAAI/bge-reranker-v2-m3
- OPENAI_API_KEY=ms-ac180211-50aa-4a0e-99fc-****
- OPENAI_API_BASE_URL=https://api-inference.modelscope.cn/v1/
- DATA_FOR_SESSION=./data/session/session.db
- DATA_FOR_LONG_MEMORY_PATH=./data/memory/qdrant_data
- LOG_LEVEL=info
# Neo4j 连接配置(使用 Docker Compose 服务名作为主机名)
- NEO4J_URI=bolt://neo4j:7687
- NEO4J_USER=neo4j
- NEO4J_PASSWORD=aerotop
- NEO4J_DATABASE=aerotop
# Milvus 连接配置
- MILVUS_HOST=milvus
- MILVUS_PORT=19530
- MILVUS_COLLECTION_NAME=embeddings
- MILVUS_VECTOR_DIMENSION=1536
# 时区设置
- TZ=Asia/Shanghai
ports:
# 应用服务端口
- "10085:10085"
volumes:
# 挂载数据目录
- ./data:/app/data
depends_on:
neo4j:
condition: service_healthy
milvus:
condition: service_healthy
# 开发环境使用 stdin 保持容器运行
stdin_open: true
tty: true
networks:
- app-network
# 资源限制
deploy:
resources:
limits:
cpus: '2'
memory: 2G
reservations:
memory: 1G
# 健康检查
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:10085/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# 定义数据卷,确保数据持久化
volumes:
neo4j_data:
driver: local
neo4j_logs:
driver: local
neo4j_import:
driver: local
neo4j_plugins:
driver: local
milvus_data:
driver: local
etcd_data:
driver: local
minio_data:
driver: local
```
### 生产环境部署
1. **环境准备**:
```bash
# 复制生产环境配置
cp .env.example .env.production
# 或设置必要的环境变量
export OPENAI_MODEL_THINKING=Qwen/Qwen3-32B
export OPENAI_MODEL_INSTRUCTION=Qwen/Qwen2.5-32B-Instruct
export OPENAI_MODEL_EMBEDDING=Qwen/Qwen3-Embedding-8B
export OPENAI_MODEL_RERANK=BAAI/bge-reranker-v2-m3
export OPENAI_API_KEY=ms-ac180211-50aa-4a0e-99fc-****
export OPENAI_API_BASE_URL=https://api-inference.modelscope.cn/v1/
export DATA_FOR_SESSION=./data/session/session.db
export DATA_FOR_LONG_MEMORY_PATH=./data/memory/qdrant_data
export LOG_LEVEL=info
export NEO4J_URI=bolt://neo4j:7687
export NEO4J_USER=neo4j
export NEO4J_PASSWORD=aerotop
export NEO4J_DATABASE=aerotop
export MILVUS_HOST=milvus
export MILVUS_PORT=19530
export MILVUS_COLLECTION_NAME=embeddings
export MILVUS_VECTOR_DIMENSION=1536
```
2. **启动服务**:
```bash
# 使用生产配置启动
docker-compose -f docker-compose.yml --env-file .env.production up -d
# 或使用生产专用编排文件
docker-compose -f docker-compose.prod.yml up -d
```
3. **监控与维护**:
```bash
# 查看实时日志
docker-compose logs -f --tail=100
```
## 🔧 配置系统
项目采用配置中心模式,支持多种配置源:
```python
# 示例配置使用
from config.setting import config
# 访问配置
api_key = config.OPENAI_API_KEY
api_model_thinking = config.OPENAI_MODEL_THINKING
api_model_instruction = config.OPENAI_MODEL_INSTRUCTION
api_model_embedding = config.OPENAI_MODEL_EMBEDDING
api_model_rerank = config.OPENAI_MODEL_RERANK
api_model_base_url = config.OPENAI_API_BASE_URL
# 动态更新配置
config.update_from_env() # 从环境变量更新
```
配置文件支持:
- 环境变量覆盖
- 配置文件分级(开发/测试/生产)
- 类型验证和默认值
- 热重载支持
## 📚 API 文档
### OpenAI 兼容接口
项目实现了完整的 OpenAI API 兼容接口:
```bash
# 流式访问
curl -N -X POST http://localhost:10085/v1/chat/completions \
-H "Authorization: Bearer sk-mixiaodong" \
-H "Content-Type: application/json" \
-H "Accept: text/event-stream" \
-d '{
"user_id": "user_123",
"session_id": "session_123",
"messages": "我的喜好是吃红龙果,本次任务是请以聊天的形式帮我计算6*8等于多少?"
}'
```
### 自定义端点
```
GET /health # 健康检查
GET /v1/models # 可用模型列表
POST /v1/chat/completions # 聊天补全
```
## 🤝 贡献指南
我欢迎各种形式的贡献!
### 开发流程
1. **Fork 项目**
2. **创建功能分支**
```bash
git checkout -b feature/amazing-feature
```
3. **提交更改**
```bash
git commit -m 'Add some amazing feature'
```
4. **推送到分支**
```bash
git push origin feature/amazing-feature
```
5. **开启 Pull Request**
### 代码规范
- 遵循 PEP 8 编码规范
- 使用类型注解
- 编写单元测试
- 更新相关文档
- 提交信息遵循 Conventional Commits
### 测试要求
```bash
# 确保所有测试通过
pytest
# 确保代码风格符合要求
ruff check AerotopMiltiAgent/
# 确保类型检查通过
mypy AerotopMiltiAgent/
```
## 📄 许可证
本项目基于 MIT 许可证开源 - 查看 [LICENSE](LICENSE) 文件了解详情。
## 🙏 致谢
- [AgentScope](https://github.com/modelscope/agentscope) - 基础多智能体框架
- [UV](https://github.com/astral-sh/uv) - 极速 Python 包管理器
- 所有贡献者和用户
## 📞 支持与联系
- 📧 邮箱:mixiaodong1998@163.com
- 💬 讨论区:微信(mixiaodong1998)
- 🐛 问题反馈:电话(19261019984)
## ⭐ 如果这个项目对你有帮助...
请给我一个 Star!⭐
这是对我最大的鼓励,也帮助更多开发者发现这个项目。
---
Built with ❤️ by the AerotopMultiAgents contributors