09. 常见问题与排错

工具速查

cd /root/qq-bot
docker-compose ps
docker logs --tail 100 qqbot-napcat
docker logs --tail 100 qqbot-langbot
docker logs --tail 100 langbot_plugin_runtime
ss -tlnp | grep -E "5300|6099|2280|5401"

涉及 New API / CPA:

docker logs --tail 100 new-api
docker logs --tail 100 cli-proxy-api

Docker Hub 拉镜像失败

错误:

Get "https://registry-1.docker.io/v2/": Client.Timeout exceeded

处理见 02-deploy.md 的 Docker daemon 代理部分。

关键命令:

curl -x http://127.0.0.1:7890 -I https://registry-1.docker.io/v2/

返回 HTTP/2 401 表示代理连通。

rockchin/langbot-plugin-runtime 拉不到

错误:

pull access denied for rockchin/langbot-plugin-runtime
repository does not exist

原因:

这个镜像不是公开可用镜像。

正确做法是用同一个 rockchin/langbot:latest 镜像启动 plugin runtime:

langbot_plugin_runtime:
  image: rockchin/langbot:latest
  container_name: langbot_plugin_runtime
  restart: unless-stopped
  command: ["uv", "run", "--no-sync", "-m", "langbot_plugin.cli.__init__", "rt"]
  environment:
    - TZ=${TZ:-Asia/Shanghai}
  ports:
    - "5401:5401"
  volumes:
    - ./data/langbot/plugins:/app/data/plugins
  networks:
    - qqbot

plugin runtime 连接失败

LangBot 日志:

Failed to connect to plugin runtime(ws://langbot_plugin_runtime:5400/control/ws): Name or service not known

原因:

  • 缺少 langbot_plugin_runtime 服务。
  • 服务名写错。
  • runtime 容器还没启动好。

如果后面出现:

Connected to plugin runtime.

就说明已经恢复,前面的报错可以忽略。

NapCat WebUI 打不开

检查:

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

常见原因:

  • 容器没启动。
  • 端口没映射。
  • 腾讯云安全组没放行 6099
  • 来源 IP 填错,本机公网 IP 变化。

LangBot WebUI 打不开

检查:

docker ps | grep qqbot-langbot
docker logs --tail 80 qqbot-langbot
ss -tlnp | grep 5300

常见原因同上。

WebSocket 405

NapCat 日志:

反向WebSocket (ws://qqbot-langbot:2280) 连接错误
Unexpected server response: 405

LangBot 日志:

GET / 1.1 405

原因:NapCat WebSocket 客户端 URL 少了 /ws

错误:

ws://qqbot-langbot:2280

正确:

ws://qqbot-langbot:2280/ws

成功时 LangBot 日志:

GET /ws 1.1 101

QQ 消息进入了,但不回复

LangBot 日志:

No pipeline_uuid for query ..., query dropped

说明消息已经进入 LangBot,但没有命中流水线。

处理:

  1. 检查机器人是否绑定流水线。
  2. 检查流水线是否启用。
  3. 检查触发条件。
  4. 测试阶段把 随机 改为 1
  5. 跑通后再改回 随机=0,只保留 @ 触发。

详见 05-trigger-rules.md

LangBot 调模型失败

先测试 New API:

curl -s http://127.0.0.1:3000/v1/models \
  -H "Authorization: Bearer 你的NewAPI机器人TOKEN"

从 LangBot 容器内测试:

docker exec qqbot-langbot sh -lc 'wget -qO- http://172.17.0.1:3000/v1/models --header="Authorization: Bearer 你的NewAPI机器人TOKEN"'

常见原因:

  • New API token 错。
  • 模型名没有配置。
  • New API 没开自用模式或模型价格未配置。
  • DeepSeek / CPA 渠道不可用。

New API 报 No available channel

错误:

PipelineError: 模型请求失败: 请求错误: Error code: 503 - {
  "error": {
    "code": "model_not_found",
    "message": "No available channel for model gpt-5.5 under group vip (distributor)"
  }
}

含义:

当前 New API token 所属分组是 vip,但 vip 分组下没有可用渠道支持 gpt-5.5。

排查:

  1. New API 渠道模型列表是否包含 gpt-5.5
  2. 对应渠道是否勾选了 vip 分组。
  3. 机器人 token 所属用户是不是 vip 分组。
  4. 分组与模型定价里是否配置了 vip + gpt-5.5,或是否开启自用模式。

常见修复:

New API -> 渠道 -> CPA/ChatGPT 渠道 -> 分组 -> 勾选 vip

或者把 LangBot 模型名改成实际可用的:

deepseek-chat
gpt-5.4

DeepSeek 输出 think

如果回复里有:

<think>...</think>

通常是用了:

deepseek-reasoner

QQ 聊天建议改为:

deepseek-chat

如果必须用 reasoner,可以在输出处理里加正则替换:

(?s)<think>.*?</think>\s*

替换为空。

NapCat 登录 QQ 失败

建议:

  • 用小号。
  • 不要短时间频繁扫码。
  • 先用正常 QQ 客户端确认账号能登录。
  • 如果服务器 IP 风控严重,暂停一段时间或换环境。