协议端
字数
1135 字
阅读时间
5 分钟
把 QQ 账号接进 Pallas-Bot;接不上时按下面定位。
协议端负责把 QQ 侧连接带进 Pallas 运行时。它不是“Bot 本体的一部分”,而是独立的一层接入运行时。
4.0 下,协议端一般通过官方插件 pallas-plugin-protocol 管理,并在 WebUI 里有控制台页面。
先分清两层
Pallas-Bot负责接收 OneBot 事件、运行插件、提供 WebUI 与治理接口。- 协议端负责登录 QQ、维护账号实例、向 Bot 发起反向 WebSocket 连接。
所以:
- 协议端异常,不等于 Bot 本体异常。
- Bot 正常启动,不代表 QQ 账号已经真正接入。
- 分片时,协议端要连到正确的 worker,别默认只看 hub。
什么时候需要
这些情况优先查协议端链路:
- 新号接入后,控制台显示账号不在线。
- 协议端实例能启动,但 Bot 不收消息。
- 分片切换后,部分账号连错 worker。
- Docker 场景下,反向 WS 一直连不上。
4.0 里的接入位置
典型链路:
text
QQ / 协议端实例
-> OneBot 反向 WebSocket
-> Pallas worker 或单进程 Bot
-> 插件与运行时分片下特别注意
- hub 负责 WebUI、注册表、协议端管理与部分回调。
- worker 才是真正接消息、跑大部分插件逻辑的进程。
- 协议端实例里每个账号的
ws_url必须指向所属 worker 端口。
维护者的最短接入顺序
- 先确认本体和 WebUI 已经正常启动。
- 安装并启用
pallas-plugin-protocol。 - 在协议端管理页创建或导入协议端实例。
- 核对实例程序目录、实例根目录和登录方式。
- 让账号连到正确的反向 WS 地址。
- 回到 Bot 侧确认
/pallas/api/bots或控制台在线状态已更新。
WARNING
分片部署别跳过第 5 步。账号连到 hub 端口,通常拿不到预期的群消息处理结果。
维护者最常检查的三项
1. 协议端实例本身是否真的在线
先看:
- 协议端实例日志
- 账号登录状态
- 实例程序目录是否正确
实例都没真正跑起来,就别先去怀疑 Bot 侧插件。
2. 反向 WS 地址是否连对
单进程时,确认它连到当前 Bot 监听地址就行。
分片时,要确认:
data/pallas_shard/registry.json里的 worker 端口分配- 协议端实例中的
ws_url PALLAS_SHARD_WS_HOST或 Docker 下的可达主机名
核心原则很简单:
- 账号属于哪个 worker,就连到哪个 worker。
- hub 负责治理和聚合,不替所有账号接 OneBot 消息。
3. Bot 侧是否真的收到连接
再看:
- hub / worker 日志
- 控制台账号在线状态
- 分片 registry 与协议端同步结果
日志里没有对应连接建立记录时,继续查协议端和网络层,别先改插件逻辑。
Docker 场景下最容易错的地方
- 容器内外主机名不一致,协议端写了错误的 WS 主机。
- 只映射了 hub 端口,没映射实际 worker 端口。
- Compose 服务名在协议端侧不可达,却被当成对外地址写进去。
Docker 下更稳妥的思路
先确认协议端容器或宿主机能访问目标 worker 端口,再确认写入实例配置的地址和实际网络拓扑一致。
排障顺序
按这个顺序查:
- 协议端实例是否启动成功。
- QQ 账号是否已登录并保持在线。
- 反向 WS 地址是否正确。
- 分片 registry 与账号归属是否一致。
- worker 日志里是否看到连接建立与事件进入。
不要这样查
- 还没确认 WS 连通,就直接怀疑命令权限或插件故障。
- 分片场景只看 hub 日志,不看具体 worker。
- 看到 WebUI 能打开,就以为协议端已经接好。