Aibot 项目结构
本文档介绍了Aibot项目的整体架构、主要组件和文件组织结构,帮助开发者快速理解项目并进行二次开发。
项目架构概述
Aibot采用模块化设计,由多个相互独立但协同工作的组件构成。以下是整体架构概览:
mermaid
graph TD
A[Aibot] --> B[通信层]
A --> C[核心引擎]
A --> D[记忆系统]
A --> E[意愿表达系统]
A --> F[数据存储]
B --> B1[NapCat适配器]
B --> B2[OneBot协议]
C --> C1[消息处理器]
C --> C2[AI引擎]
C --> C3[图像处理]
D --> D1[短期记忆]
D --> D2[长期记忆]
D --> D3[情感记忆]
E --> E1[情感模块]
E --> E2[表情包系统]
F --> F1[Sqlite]
F --> F2[文件存储]主要模块说明
通信层
通信层负责与QQ平台进行交互,接收和发送消息。主要包括:
- NapCat适配器:实现与NapCat框架的连接
- OneBot协议支持:实现标准OneBot v11协议
- WebSocket服务:提供反向WS接口
核心引擎
核心引擎是机器人的中央处理系统,负责逻辑处理和决策:
- 消息处理器:分析、分类和路由收到的消息
- AI引擎:对接硅基流动等LLM提供商
- 图像处理:处理和生成图像内容
- 命令解析器:识别和执行特定命令
记忆系统
记忆系统使机器人能够记住过去的交互,提供连续对话体验:
- 短期记忆:存储当前对话上下文
- 长期记忆:保存重要信息和用户偏好
- 情感记忆:记录情感状态和变化
- 向量数据库:高效存储和检索语义信息
意愿表达系统
意愿表达系统控制机器人的情感和表达方式:
- 情感模块:模拟人类情感状态
- 表情包系统:管理和使用表情包资源
- 个性表达:根据配置调整回复风格
数据存储
数据存储层管理机器人的持久化数据:
- Sqlite:存储结构化数据
- 文件系统:存储媒体文件和表情包
- 缓存机制:提高性能并减少API调用
文件组织结构
请参考详细文件结构文档了解完整的文件组织。
以下是主要目录的简要说明:
Aibot/
├── api/ # API服务接口
├── bot/ # 核心机器人逻辑
│ ├── commands/ # 命令处理模块
│ ├── handlers/ # 消息处理器
│ ├── memory/ # 记忆系统
│ ├── emotions/ # 情感系统
│ └── utils/ # 通用工具函数
├── config/ # 配置文件目录
├── data/ # 数据存储目录
│ ├── emoji/ # 表情包存储
│ ├── image/ # 图片资源
│ └── logs/ # 日志文件
├── models/ # AI模型接口
├── db/ # 数据库相关代码
├── tests/ # 测试代码
└── web/ # Web管理界面配置文件说明
Aibot使用两个主要配置文件:
.env.prod
环境配置文件,包含敏感信息如API密钥和数据库连接:
# API配置
SILICONFLOW_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx
SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1
# 服务器配置
HOST=127.0.0.1
PORT=8080bot_config.toml
机器人行为配置文件,定义机器人的个性和功能选项:
toml
[bot]
name = "Aibot"
personality = "cute"
memory_window = 10
[models]
chat = "gpt-4"
embedding = "embedding-3-large"
image = "stable-diffusion-v1-6"
[features]
emoji_collection = true
voice_reply = false
group_welcome = true开发环境设置
请参考开发环境设置文档来配置本地开发环境:
- Python 3.9+
- 适当的API密钥
- 开发依赖安装
核心流程
消息处理流程
mermaid
sequenceDiagram
participant User
participant NapCat
participant Aibot
participant Memory
participant AI
participant Database
User->>NapCat: 发送消息
NapCat->>Aibot: 转发消息
Aibot->>Aibot: 预处理消息
Aibot->>Memory: 检索相关记忆
Memory->>Aibot: 返回上下文
Aibot->>AI: 发送请求
AI->>Aibot: 返回回复
Aibot->>Aibot: 后处理回复
Aibot->>Memory: 更新记忆
Aibot->>Database: 存储对话
Aibot->>NapCat: 发送回复
NapCat->>User: 展示回复启动流程
mermaid
sequenceDiagram
participant System
participant Aibot
participant Database
participant NapCat
participant Models
System->>Aibot: 启动
Aibot->>Aibot: 加载配置
Aibot->>Database: 连接数据库
Database->>Aibot: 连接成功
Aibot->>Models: 初始化模型
Models->>Aibot: 初始化完成
Aibot->>NapCat: 建立连接
NapCat->>Aibot: 连接成功
Aibot->>System: 启动完成性能考量
在开发过程中需要注意的性能相关事项:
- API调用优化:减少不必要的LLM API调用以控制成本
- 内存使用:在高频交互群组中注意记忆系统的内存占用
- 数据库索引:确保 Sqlite 集合有适当的索引以提高查询性能
- 并发处理:处理多个群聊的同时消息
扩展开发指南
如需扩展Aibot功能,您可以:
- 添加新的命令处理器
- 实现自定义消息处理逻辑
- 扩展记忆系统功能
- 添加新的AI模型支持
- 开发Web管理界面扩展
有关扩展开发的详细信息,请参考开发者指南。