03. NapCatQQ 配置

NapCat 在这套系统里的角色

NapCatQQ 是 QQ 协议端。它的核心任务是:

让服务器上的程序拥有“一个 QQ 账号的收发消息能力”。

它做的事情包括:

  • 扫码登录个人 QQ。
  • 维持 QQ 在线状态。
  • 接收私聊、群聊、@、图片、文件等消息事件。
  • 把这些事件通过 OneBot 协议发给 LangBot。
  • 接收 LangBot 的回复,再发回 QQ。

它不负责:

  • 不负责大模型推理。
  • 不负责人设提示词。
  • 不负责流水线和触发条件。
  • 不负责选择 DeepSeek 还是 ChatGPT。

这些都交给 LangBot。

可以把它理解为:

NapCat = QQ 适配器 / QQ 网关 / QQ 接线员

例子:

群友:@神盾局特工26号 总结一下
        |
NapCat:收到一条群消息,里面有人 @ 机器人
        |
NapCat -> LangBot:把这条消息事件转发过去
        |
LangBot -> NapCat:返回要发送的文本
        |
NapCat:把文本发回 QQ 群

打开 WebUI

浏览器访问:

http://服务器公网IP:6099

如果打不开:

docker ps | grep qqbot-napcat
docker logs --tail 80 qqbot-napcat
ss -tlnp | grep 6099

WebUI token

如果页面提示输入 token,先查日志:

docker logs qqbot-napcat 2>&1 | grep -i token

也可以看配置文件:

cat /root/qq-bot/data/napcat/config/webui.json

里面的 token 就是 WebUI 登录 token。

不要把这个 token 发给别人。

登录 QQ

建议使用小号,不要用主力 QQ。

在 NapCat WebUI 中扫码登录。登录态保存在:

/root/qq-bot/data/napcat/qq

这个目录属于敏感数据,不要公开备份,不要传到 Git。

网络配置

NapCat 网络配置里可能没有直接写 OneBot,而是这些选项:

http服务器
http sse服务器
http客户端
websocket服务器
websocket客户端

本次选择:

websocket客户端

因为要让 NapCat 主动连接 LangBot。

这里的“websocket客户端”含义是:

NapCat 主动拨号连接 LangBot。
LangBot 在 2280 端口等待连接。

也就是:

NapCat -> LangBot

不是:

LangBot -> NapCat

配置:

名称:langbot
类型:websocket客户端
URL:ws://qqbot-langbot:2280/ws
启用:是

不要填:

ws://qqbot-langbot:2280

少了 /ws 会导致 405

验证连接

看 LangBot 日志:

docker logs --tail 100 qqbot-langbot

连接成功会看到:

GET /ws 1.1 101

101 表示 WebSocket 协议升级成功。

如果看到:

GET / 1.1 405
Unexpected server response: 405

说明 NapCat 连到了根路径,把 URL 改为:

ws://qqbot-langbot:2280/ws