千石可乐 MaiBot:一个想当群友的 AI

MaiBot:一个想当群友的 AI

我最近在参与开发一个叫 MaiBot (@MaiWithYou )的项目。说它是 QQ 群聊机器人,其实不太准确,因为它的设计目标不是回答问题或者执行命令。它想做的事情是潜伏在群里,像一个真人一样聊天。会学群里的黑话,会打错字,会潜水几个小时然后突然冒出来插一嘴。

在国内 QQ 机器人圈子里,这个项目已经有 4300 颗星,B站教程播放量几十万。但英语世界基本没人听说过它。

怎么来的

创作者千石可乐(SengokuCola)是北师大认知神经科学的学生,自称编程门外汉,靠 Cursor 写代码。最初他只是给一个叫”牛牛 bot”的现有机器人写扩展功能,写着写着发现得全部重来,于是 2025 年 2 月发布了第一个独立版本,以 NoneBot2 插件的形式通过 NapCat 接入 QQ。

然后项目迭代得非常快。11 个月,至少 15 个版本,仓库搬了三次(从 SengokuCola/MaiMBotMaiM-with-u/MaiBot 再到现在的 Mai-with-u/MaiBot),3374 次提交,551 个合并的 PR。每个大版本都是架构级别的重做。

挑几个关键版本:

v0.5.x(2025年2-3月):最初的样子。单体 NoneBot2 插件,基本 LLM 聊天加记忆功能,MongoDB 存储。能用,但架构撑不了多久。
v0.6.0(3月):核心重构成独立服务 MaiCore,跟消息平台解耦。引入了 HeartFlow 思维系统,后面细说。
v0.8.0(6月):插件广场上线,token 消耗降低,REST API 换成纯 WebSocket。
v0.11.0(10月):记忆系统又重写了一遍,加上了主动发言和多人格切换。
v0.11.4(11月):终于有了 WebUI,不用手编 TOML 了。React 19 + FastAPI。
v0.12.2(2026年1月):当前稳定版。

一个认知神经科学学生用 AI 辅助编程工具,11 个月造出了一个 24 仓库的生态,包括 Minecraft 伙伴 MaiCraft、VTuber 项目 Amaidesu、桌面宠物、Android 适配器,还有专用的知识库和消息协议库。架构每一两个月推翻重来一次。我不确定该佩服还是担心。

HeartFlow:不是你 @ 它才回你

多数聊天机器人是请求-响应模式,你说话,它回复。MaiBot 不这么干。它有一个叫 HeartFlow(心流)的持续认知循环,每个群会跑一个独立的 SubHeartflow 实例,不停地”看”群里在聊什么。

三种运行模式:

普通聊天:给每条消息打"激活度"分数,超过阈值才回。大部分时候沉默。
专注聊天:每 3 秒跑一次观察循环,自主决定该回复、沉默、发语音、禁言某人还是画张图。
自动模式:根据群活跃程度在前两者之间切换。

实际效果是机器人可能安静潜水好几个小时,突然跳进一个对话。群友很难判断这到底是不是真人。

架构上用的适配器模式:

平台客户端 ↔ 适配器(WebSocket)↔ MaiCore(端口 8000)↔ WebUI(端口 8001) MaiCore 是独立的 FastAPI 服务。适配器负责对接平台,主要是 QQ(通过 NapCat),社区也做了 Discord 和 Android 的。Docker 部署需要四个容器。

记忆和社交学习

记忆系统分好几层。短期记忆管理最近的消息窗口,有压缩机制,大概能做到 5 倍上下文扩展。长期记忆用了 LPMM,建在 HippoRAG 2 上面,一个基于海马体索引理论的 RAG 框架。流程是文本嵌入、Faiss 索引、实体抽取、知识图谱构建,检索时用 ReAct 模式迭代优化查询。

项目方自己管这个叫”麦麦的海马体和新皮层”。

每个用户、每个群都有独立的关系记录,跟踪亲