折腾完 V2 那套“主程序 + AstrBot + 安卓容器”的豪华全家桶之后,到了 2026 年 8 月中旬,我越来越受不了散装架构带来的维护噩梦:两边代码各自记各的账,改个提示词或者排查一条漏回的消息得在几个进程之间来回翻日志。
合体为单一进程,搬进飞牛 NAS
2026 年 8 月 15 日(Commit c6bacec),我把云萤的代码正式整理迁入 GitHub 的 https://github.com/igng-dev/igng-bot 仓库,砍掉了外挂的 AstrBot,将所有核心逻辑收拢成干净的单一 Python 进程 igngbot_v3。
与此同时,它的生产运行环境也正式搬进了家里的飞牛 NAS。我用一份统一的 docker-compose.yml 把四个核心组件编排在了一起:负责思考的 bot 主进程、负责 QQ 协议通信的 napcat、提供带签名内网看图服务的 media 容器,以及负责内网穿透的 frpc。
在 NAS 上跑群聊机器人有个很隐蔽的坑:QQ 群每天有海量的聊天图片要落盘,万一哪天 NAS 的大容量挂载盘偶发掉线,容器如果不知道,就会继续往 Docker 默认的根分区里猛写图片,用不了几天就能把系统盘彻底塞爆。为此我专门加了一道 STORAGE_REQUIRE_MOUNT=1 启动守卫——只要检测到外部存储卷没挂载好,服务直接拒绝写入并报警,绝不祸害宿主机系统盘。
9 月初的大减法:把自以为酷炫的累赘全砍掉
架构合体之后,我在 9 月 8 日(Commit 961626d)又干了一件更爽快的事:对着自己以前写的代码做大减法。
在 V2 到 V3 早期,我曾跟风手搓了一大套看似很高级的复杂模块:多步自治的 task system(任务系统)、自己绕来绕去的 agent loop、一堆零碎的外部 tools 调用,还有花里胡哨的表情包检索发送器。但实际在群里跑起来才发现,这些东西不仅把响应延迟拖得很慢、消耗大量 Token,而且经常在多轮循环里自己把自己绕晕抽风。
想明白“群聊机器人的核心本分就是陪大家自然聊天”之后,我挥起刀把这套自研的 task system、agent loop、tools 和表情包模块全部删得干干净净,同时把每一次大模型调用的耗时、Token 和状态规规矩矩地统一记入站点数据库的 ai_jobs 账本。砍掉累赘之后,云萤的反应速度和稳定性立竿见影地好了一大截。