InSoulForge:一个基于 Agent 架构的智能 QQ 群聊机器人后端
如果你想做一个真正“会聊天、会记忆、会使用工具、能长期陪伴群聊”的 QQ 机器人,InSoulForge 可能会很适合你。
InSoulForge 是一个基于 C++ / Drogon / Vue3 构建的智能 QQ 群聊机器人后端,配合 OneBot 协议实现使用。它不是简单的关键词回复机器人,而是采用 Router + Executor 的两层 Agent 架构,让机器人能够判断“该不该回复”、决定“怎么回复”,并在需要时调用工具完成更复杂的行为。
项目地址:
https://github.com/DreamDonghao/insoulforge
它能做什么?
InSoulForge 的目标不是只做一个“能接入大模型的 QQ Bot”,而是做一个更接近真实群友的智能体。
它支持:
- 智能判断是否需要回复,避免无意义刷屏
- 群聊和私聊独立上下文
- 自动提炼短期记忆和长期记忆
- 长期记忆向量召回,让机器人记住群友偏好、习惯和重要事件
- 图片识别,可识别群聊图片内容
- 自定义人设和提示词
- 表情包管理、收藏、发送
- 引用回复、@ 群友、撤回消息、禁言
- 拍一拍互动
- 定时任务
- Python / HTTP 自定义工具
- Web 管理后台
- LLM 用量统计
- 日志实时查看
简单说,它不仅能聊天,还能逐渐理解一个群的语境。
两层 Agent 架构:先判断,再执行
InSoulForge 使用 Router + Executor 的两层 Agent 设计。
Router 负责快速判断:
- 这条消息需不需要回复?
- 是普通闲聊,还是明确在问机器人?
- 回复应该简短还是详细?
- 当前消息是否是高优先级?
Executor 负责真正组织回复,并根据上下文调用工具。
这种拆分的好处是很明显的:机器人不会每条消息都硬回,也不会在多人聊天中显得突兀。Router 会先过滤掉不该插话的内容,Executor 只在确实需要回复时才进入生成流程。
不只是聊天:工具调用让机器人能“做事”
InSoulForge 内置了多种工具能力,例如:
- reply:普通回复
- reply_with_quote:引用回复
- no_reply:决定不回复
- send_sticker:发送收藏表情包
- save_sticker:保存用户发来的图片为 QQ 收藏表情
- send_poke:拍一拍群成员
- recall_memory:主动检索长期记忆
- deep_think:复杂问题调用深度思考模型
- reply_and_continue:先发送过程消息,然后继续处理
其中我比较喜欢的是 reply_and_continue。它让机器人可以一次对话连续发多条消息。
比如用户问一个需要查询或深度思考的问题,机器人可以先发:
稍等,我去查一下。
然后继续调用搜索、记忆或深度思考工具,最后再给出正式回答。
这会让机器人更像一个真实的人,而不是等很久之后突然甩出一大段结果。
长期记忆:让机器人真正“记得”
很多群聊机器人最大的问题是:它只看眼前上下文。
InSoulForge 内置短期记忆和长期记忆系统。短期记忆用于保存最近对话,长期记忆则会通过 Embedding 向量化存入 SQLite,并在后续聊天中按相似度召回。
这意味着机器人可以记住:
- 某个群友喜欢什么
- 群里的常用梗
- 曾经约定过的事情
- 某些长期偏好和习惯
同时,记忆不是简单地把所有聊天记录塞进上下文,而是经过提炼、合并和召回,尽量在成本和效果之间取得平衡。
更自然的 QQ 群互动
InSoulForge 对 QQ 常见功能做了比较完整的适配。
机器人可以:
- 发送 QQ 原生表情
- 发送收藏表情包
- 保存别人发来的图片为收藏表情
- 引用某条消息回复
- @ 指定群友
- 撤回消息
- 禁言群成员
- 拍一拍别人
- 接收别人对机器人的拍一拍
拍一拍也做了区分处理:
- 群友戳机器人:会合成为普通消息进入完整 Agent 流程,由 Router 判断是否回应
- 群友互相拍:只记入聊天记录,不触发回复
- 机器人自己发出的拍一拍:由工具记录,避免重复处理
这些细节能让机器人在 QQ 群里表现得更自然。
Web 管理后台
项目内置 Vue3 管理后台,可以直接在浏览器里配置:
- OneBot 连接参数
- Router / Executor / Image / Embedding 等模型
- 机器人提示词
- 启用的群聊或私聊
- 管理员
- 收藏表情
- 自定义工具
- 记忆参数
- LLM 用量统计
- 运行日志
对于日常使用来说,不需要频繁改配置文件,大部分操作都可以在 Web 页面完成。
性能和工程细节
InSoulForge 后端使用 C++23 和 Drogon 实现,异步处理基于 coroutine。
最近的一些优化包括:
- 禁用会话提前跳过,避免无效处理
- 图片识别等高成本格式化逻辑延后到启用检查之后
- 优先消息调度优化,@ 机器人、私聊、定时任务可打断普通消息
- 高优先级消息之间排队,不互相抢占
- 日志缓冲启动加载优化,只读取最近需要的滚动日志
- 表情发送、拍一拍、过程消息都会写入聊天记录并推送 WebSocket
这些不是“看起来很酷”的功能点,但会直接影响实际部署后的稳定性、响应速度和使用体验。
快速开始
项目需要配合 OneBot 协议实现使用,推荐使用 NapCat。
Docker 部署示例:
docker pull dreamdonghao/insoulforge:latest
docker run -d --name insoulforge
-p 7778:7778
-v ./data:/app/data
-v ./logs:/app/logs
-v ./uploads:/app/uploads
dreamdonghao/insoulforge:latest
启动后访问:
http://localhost:7778/index.html
然后在后台配置 OneBot 地址、Bot QQ、模型 API 和启用群聊即可。
适合谁使用?
InSoulForge 比较适合这些场景:
- 想搭建一个长期运行的 QQ 群智能体
- 希望机器人有记忆、有上下文、有工具调用能力
- 想研究 Agent 架构在真实聊天场景中的应用
- 想做 QQ Bot,但不满足于简单关键词回复
- 希望自己扩展 Python / HTTP 工具
如果你只是想要一个非常轻量的复读机,它可能有点“重”。但如果你想要一个更接近真实群友、更能长期陪伴群聊的智能机器人,它会是一个很有意思的选择。
结语
InSoulForge 目前仍在持续迭代中。它的重点不是堆功能,而是把 QQ 群聊这个真实、高噪声、多人的场景处理得更自然。
我希望它能成为一个真正可用、可扩展、可长期运行的智能 QQ 群聊机器人后端。
如果你对 Agent、QQ Bot、长期记忆、自定义工具或智能群聊机器人感兴趣,欢迎来看看这个项目,也欢迎提 issue、star 或参与改进。
项目地址:
https://github.com/DreamDonghao/insoulforge
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)