本文档详细说明了 MaiMBot 多服务架构的开发环境搭建、配置管理及启动流程。
MaiMBot系统由以下五个核心仓库组成:
| 仓库名称 | 路径 (示例) | 端口 | 说明 |
|---|---|---|---|
| maim_db | .../proj/maim_db |
N/A | [核心] 共享数据库模型、配置逻辑与公共库。所有服务均依赖此库。 |
| MaiMBot | .../proj/MaiMBot |
8081 / WS:18040 | [核心] AI 聊天机器人主服务,处理 WS 连接与消息分发。 |
| MaimConfig | .../proj/MaimConfig |
8000 | [配置] 租户、Agent、API Key 管理的后端服务。 |
| MaimWebBackend | .../proj/MaimWebBackend |
8880 | [Web中间层] 为前端提供接口,处理认证,并将配置请求转发给 MaimConfig。 |
| MaimWeb | .../proj/MaimWeb |
5173 | [前端] 基于 React/Vite 的可视化管理控制台。 |
- 数据库同步:所有后端服务(MaiMBot, MaimConfig, MaimWebBackend)必须连接同一个 SQLite 数据库文件。
- 配置委托:
MaimWebBackend处理用户登录/注册。MaimWebBackend创建 Agent 时,会通过 HTTP 调用委托MaimConfig生成 API Key。
- 消息通信:
- 客户端(如
test_api_client_connect.py)使用生成的 API Key 连接MaiMBot的 WebSocket 端口。
- 客户端(如
建议所有后端服务使用同一个 Conda 环境 (maibot)。
# 创建环境
conda create -n maibot python=3.12
conda activate maibot
# 安装依赖 (建议在各仓库根目录执行)
# 注意:首先必须安装 maim_db 库
cd ~/proj/maim_db
pip install -e .
# 然后安装各服务依赖
cd ~/proj/MaiMBot && pip install -r requirements.txt
cd ~/proj/MaimConfig && pip install -r requirements.txt
cd ~/proj/MaimWebBackend && pip install -r requirements.txtcd ~/proj/MaimWeb
npm install系统正常运行的核心前提是所有服务共享同一个数据库。
我们将数据库文件统一存放在 maim_db 仓库的 data 目录下:
- 路径:
/home/tcmofashi/proj/maim_db/data/MaiBot.db
请确保以下服务目录中均存在 .env 文件,并包含准确的 DATABASE_URL。
确保 data/ 目录存在。库代码已打补丁,会自动优先使用环境变量,否则回退到 src/data。建议显式配置环境变量。
# 使用异步驱动
DATABASE_URL=sqlite+aiosqlite:////home/tcmofashi/proj/maim_db/data/MaiBot.db
HOST=0.0.0.0
PORT=8000# 使用异步驱动
DATABASE_URL=sqlite+aiosqlite:////home/tcmofashi/proj/maim_db/data/MaiBot.db
PORT=8880
# 其他JWT密钥等配置...# 使用同步驱动 (Peewee) - 注意路径差异,MaiMBot可以使用同步URL
DATABASE_URL=sqlite:////home/tcmofashi/proj/maim_db/data/MaiBot.db请按以下顺序启动服务,建议使用 4 个终端窗口。
cd ~/proj/MaiMBot
conda activate maibot
python bot.py
# 成功标志:Log显式 WebSocket server started on ...:18040cd ~/proj/MaimConfig
conda activate maibot
python main.py
# 成功标志:Log显示 Uvicorn running on http://0.0.0.0:8000cd ~/proj/MaimWebBackend
conda activate maibot
./start_backend.sh
# 成功标志:Log显示 Uvicorn running on http://0.0.0.0:8880cd ~/proj/MaimWeb
npm run dev
# 访问 http://localhost:5173所有数据模型定义在 maim_db/src/maim_db/maimconfig_models/models.py。
- 注意 ORM 兼容性:系统同时使用了
SQLAlchemy(WebBackend) 和Peewee(Config/Bot)。 - 枚举处理:请使用
String类型存储枚举值,并在代码中进行校验,不要直接使用数据库层面的 Enum 类型,以避免大小写不一致导致的跨框架读取错误。 - 时间戳:WebBackend 使用 SQLAlchemy 写入时,需在代码中显式设置
created_at和updated_at(使用datetime.utcnow()),因为 SQLite 的server_default在某些异步驱动下可能不生效。
在 MaimWebBackend 目录下提供了验证脚本,用于测试全流程集成:
# 验证后端注册、Agent创建、Key生成全流程
python verify_backend_flow.py
# 验证生成的 Key 能否连接 Bot
python create_key.py # 生成永久 Key
# 复制 Key 到 maim_message/others/test_api_client_connect.py
python ../maim_message/others/test_api_client_connect.py