最近给自己的 QQ 群养了一个 AI 群友,用的是开源项目 MaiBot(麦麦),通过 NapCat 接入 QQ。人设是个喜欢木柜子的大二女生,会接话、会玩梗,还会偷群友的表情包。这篇记录部署过程里踩到的几个坑。

整体结构

  • NapCat:负责登录 QQ,开一个 WebSocket 服务端
  • MaiBot:主程序,通过 NapCat 适配器插件主动连过去收发消息
  • 模型:回复、规划、工具、识图、嵌入分别配不同的模型,同一类任务挂好几家,坏一家自动换下一家

MaiBot 跑在一台 2 核小服务器上,用 systemd 托管,单独建了一个非 root 用户来跑,常驻内存大概 0.9G。

坑 1:它只发 QQ 自带的小黄脸,不发偷来的表情包

库里明明攒了四五百张偷来的表情包,它却总是发「[表情:捂脸]」那种 QQ 自带表情。

原因是表情包发送有两种模式:

  • 新模式:让思考模型直接「看」表情包图片再挑,要求思考模型支持识图
  • 旧模式:按入库时生成的文字描述(比如「无奈、敷衍、OK」)来挑

我的思考模型全是纯文本模型,开着新模式等于让它闭着眼挑图,它就退而求其次写小黄脸了。把配置里的 use_new_send_logic 关掉,改回按描述挑,偷来的表情包就用上了。

坑 2:某个模型一带 temperature 就 400

接了一个新的 GPT 线路,测试的时候报:

400 Upstream request failed

一项项排除后发现:请求里只要带 temperature 参数就 400,不带就正常,工具调用也没问题。有些上游(尤其是转接官方账号的)不接受这个参数。MaiBot 里给这个模型设 send_temperature = false 就好了。

坑 3:Cloudflare 403,错误码 1010

同一个上游,用 curl 能通,用 Python 脚本就 403:

error code: 1010

1010 是 Cloudflare 的「浏览器特征被拦截」,Python 默认的 User-Agent 被当成机器人了。解决办法是在提供商配置里加默认请求头,带上一个正常浏览器的 UA:

[api_providers.default_headers]
User-Agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ..."

坑 4:上游不稳定时,回复变得特别慢

回复模型配的是「按顺序优先」,第一个模型失败了才轮到下一个。问题是每次失败都会先重试 3 次,每次还要等几秒,结果群友 @ 它要等半分钟。

经验是:最稳的放第一个,便宜但不稳的放后面当备胎。不稳定的线路宁可只放在最后兜底,也别放第一位。

坑 5:表情包被自动清理掉了

我一次性从电脑里导了几百张 QQ 收藏表情进去,第二天少了一大半。原来 MaiBot 有缓存清理:没注册、且文件修改时间超过 30 天的表情会被删。导进去的老图片修改时间都是几年前的,正好被判定为「过期」。

导入前先 touch 一下刷新修改时间就行。

小结

  • 思考模型不能识图,就别开「看图挑表情包」
  • 某个模型报奇怪的 400,先试试去掉 temperature
  • Cloudflare 1010 = 加个浏览器 UA
  • 回复模型的顺序:稳的在前,不稳的在后
  • 导表情包之前先 touch

现在它在群里已经很像一个正常群友了,就是有点太爱玩梗 (ノ>ω<)ノ

Last modification:October 16, 2026