Skip to content

开发指南

MaiBot(麦麦 / MaiSaka)是基于大语言模型的可交互智能体。本节面向希望参与开发或编写插件的开发者,介绍项目的技术栈、目录结构与开发环境搭建。

技术栈

类别技术
语言Python 3.10+
Web 框架FastAPI
ORMSQLModel
ASGI 服务器Uvicorn
配置管理Pydantic + TOML + 热重载
插件 IPCmsgpack over UDS / TCP / Named Pipe
包管理uv
代码检查Ruff
许可证GPL-3.0

项目结构

MaiBot/
├── src/                    # 核心源码
│   ├── config/             # 配置管理(TOML + Pydantic + 热重载)
│   ├── chat/               # 聊天处理、心流引擎、回复生成
│   ├── maisaka/             # 核心 AI 运行时(规划器、推理引擎、工具调用)
│   ├── A_memorix/           # 长期记忆引擎
│   ├── plugin_runtime/      # 插件运行时(Host/Runner IPC 架构)
│   ├── platform_io/         # 平台抽象层(路由、驱动、去重)
│   ├── llm_models/          # LLM 客户端实现
│   ├── services/            # 业务服务层(发送服务、记忆流等)
│   ├── webui/               # FastAPI Web 管理后端
│   ├── learners/            # 表达方式学习与黑话挖掘
│   ├── emoji_system/        # Emoji 管理
│   ├── mcp_module/          # Model Context Protocol 集成
│   ├── common/              # 共享工具(数据库、日志、i18n、消息模型)
│   ├── prompt/              # Prompt 模板管理
│   └── core/                # 核心类型定义、事件总线、工具注册
├── dashboard/               # 前端(独立仓库构建,禁止修改)
├── plugins/                 # 第三方插件目录
├── src/plugins/built_in/    # 内置插件目录
├── pytests/                 # 测试
└── data/                    # 运行时数据(gitignore)

核心模块说明

  • config/:使用 Pydantic 模型管理配置,支持 TOML 文件热重载,配置修改通过模版+版本号方式发布,不直接编辑运行时配置。
  • chat/:聊天消息入口与主链路调度。包含 ChatBot(消息处理入口)、ChatManager(会话管理)、HeartFlow(心流消息处理器)等。
  • maisaka/:核心 AI 运行时。以 ChatLoopService 为中心,负责 LLM 对话循环、工具调用规划、上下文消息管理等。
  • A_memorix/:长期记忆引擎,负责持久化用户偏好、对话记忆等心理学维度数据。
  • plugin_runtime/:插件运行时系统。采用 Host(主进程)/ Runner(子进程)IPC 架构,使用 msgpack 编解码,支持 Hook 机制、组件注册与热重载。
  • platform_io/:平台抽象层。通过 RouteKey 路由机制实现多平台消息收发的统一管理,支持驱动的注册、路由绑定、入站去重与出站跟踪。
  • llm_models/:LLM 客户端实现,封装各模型 API 的调用逻辑。
  • services/:业务服务层,包含 SendService(出站消息发送)等核心服务。
  • webui/:FastAPI 驱动的 Web 管理后端,提供插件管理、配置编辑、认证鉴权等功能,默认绑定 0.0.0.0:8001
  • core/:核心类型定义,包括 ComponentTypeActionInfoCommandInfoToolInfoMaiMessages 等。

开发环境搭建

前置条件

  • Python 3.10 或更高版本
  • uv 包管理工具

安装依赖

bash
uv sync

启动项目

bash
uv run python bot.py

bot.py 采用 Runner/Worker 双进程模型:Runner 进程负责守护与重启(退出码 42 触发重启),Worker 进程执行实际的 MainSystem 初始化与任务调度。

运行测试

bash
uv run pytest

代码检查与格式化

bash
# Lint 检查
uv run ruff check .

# 自动格式化
uv run ruff format .

架构详解

深入了解各子系统的内部架构和实现原理:

  • 消息管线:入站消息的完整处理流程——从平台适配器到 Hook 拦截、过滤、命令分发、HeartFlow 和出站发送
  • Maisaka 推理引擎:对话推理的核心——Timing Gate 节奏控制、Planner 规划循环、工具调用和打断机制
  • 记忆系统:A-Memorix 长期记忆引擎——双路检索、存储层、记忆策略和人物画像
  • WebUI 内部机制:FastAPI 后端架构——认证安全、WebSocket 通信、插件管理和配置热重载

下一步