1391 字
7 分钟
0 浏览
使用 Napcat & AstrBot 搭建一个属于自己的 QQ 机器人!

警告!!!#

使用私人账号搭建 QQ 机器人本质是属于违规行为,可能会导致你的账号被风控,请勿用于违法用途!若你的账号很不幸被风控了我们不负责任!

前言#

最近 AI 大模型发展迅速,各种 QQ 机器人也越来越多。之前一直想搭建一个自己的 QQ 机器人,但大多数方案配置起来都比较麻烦,又要装环境又要配协议,花费不少时间还不一定能跑起来。

后来发现了 AstrBot + NapCat 这个组合,配置起来非常方便。AstrBot 负责机器人的大脑(对接 AI 模型和管理各种功能),NapCat 负责处理 QQ 消息的收发,两者通过 OneBot 协议通信,而且全部可以用 Docker 一键部署。

什么是 AstrBot 和 NapCat#

简单来说,AstrBot 是一个聊天机器人框架,支持接入各种 AI 大模型(DeepSeek、OpenAI、Gemini 等等),还有插件系统和 Web 管理面板,功能非常丰富。

NapCat 则是 QQ 的协议适配器,负责模拟 QQ 客户端的登录和消息收发,相当于一座桥,把 QQ 和 AstrBot 连接起来。

两者的配合流程大概是这样:

你发 QQ 消息 → NapCat 接收 → AstrBot 处理 → 调用 AI 大模型 → AstrBot 生成回复 → NapCat 发回 QQ

准备工作#

在开始之前,你需要准备好以下这些东西:

  1. 一台 Linux 服务器(推荐至少 2C2G,系统建议 Ubuntu 20.04+ 或 CentOS 7+)
  2. 一个 QQ 号(用来做机器人,建议用日常活跃的老号,新号容易被风控)
  3. 一个大模型 API Key(DeepSeek 可以去 platform.deepseek.com 注册,注册即赠送额度)
  4. 安装好 Docker 和 Docker Compose

开始部署#

1. 创建项目目录#

首先 SSH 连接到你的服务器,创建一个目录来放我们的配置文件:

Terminal window
mkdir -p /opt/astrbot && cd /opt/astrbot

2. 编写 docker-compose.yml#

在这个目录下创建一个 docker-compose.yml 文件,内容如下:

version: "3.8"
services:
astrbot:
image: soulter/astrbot:latest
container_name: astrbot
ports:
- "6185:6185"
volumes:
- ./data:/AstrBot/data
- ./astra_db:/AstrBot/astra_db
restart: always
networks:
- astrbot-net
napcat:
image: mlikiowa/napcat-docker:latest
container_name: napcat
ports:
- "6099:6099"
- "6195:6195"
- "6199:6199"
environment:
- NAPCAT_UID=0
- NAPCAT_GID=0
- WS_ENABLE=true
- WS_URL=ws://astrbot:6199/ws
volumes:
- ./napcat/config:/usr/src/app/napcat/config
- ./napcat/QQ:/root/.config/QQ
restart: always
networks:
- astrbot-net
networks:
astrbot-net:
driver: bridge

这里面有几个点需要注意一下:

  • WS_ENABLE=true 表示开启 NapCat 的 WebSocket 客户端模式
  • WS_URL=ws://astrbot:6199/ws 是关键,它告诉 NapCat 连接到 AstrBot 的 WebSocket 服务,注意末尾一定要带 /ws,不然会连不上
  • 两个容器通过 astrbot-net 这个自定义网络互通,这样就不用去记 IP 地址了

如果你拉取 Docker 镜像特别慢的话,可以在镜像名前加个国内加速源,比如 m.daocloud.io/docker.io/soulter/astrbot:latest。

3. 启动容器#

在 docker-compose.yml 所在目录执行:

Terminal window
docker compose up -d

等待一分钟左右,然后用 docker compose ps 查看状态,两个容器都是 Up 状态就说明启动成功了。

配置 NapCat(登录 QQ)#

1. 获取 WebUI Token#

执行下面的命令查看 NapCat 的启动日志:

Terminal window
docker logs napcat

在日志中找一段类似 NapCat WebUI Login Token: xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 的内容,把这个 Token 记下来。

2. 登录 WebUI#

在浏览器中访问 http://你的服务器IP:6099,输入刚才获取的 Token 登录。

然后按照 NapCat WebUI 的提示,用手机 QQ 扫描二维码登录你的机器人 QQ 号。

配置 AstrBot#

1. 访问管理后台#

浏览器访问 http://你的服务器IP:6185,默认的账号密码都是 astrbot。第一次登录会强制修改密码,修改完成后重新登录即可。

2. 接入 AI 大模型#

在左侧菜单找到「模型提供商」→「对话」,点击「新增提供商」:

  • 提供商:选择 DeepSeek/OpenAI API 兼容
  • API 地址:https://api.deepseek.com/v1
  • API Key:粘贴你从 DeepSeek 拿到的 Key
  • 模型:填 deepseek-chat

3. 创建机器人实例#

在左侧菜单找到「机器人」→「创建机器人」:

  • 平台类型:选择 QQ 个人号(OneBot v11)
  • WebSocket 地址:0.0.0.0:6199
  • 反向 WebSocket Token:留空即可
  • 启用:打开

保存后重启 AstrBot,然后观察日志,如果出现 [Info] 已连接到 OneBot v11 客户端 这样的信息,就说明 AstrBot 和 NapCat 已经成功建立连接。

验收成果#

完成上述步骤之后,用另一个 QQ 号给你的机器人发送一条消息测试。正常情况下机器人会调用 DeepSeek 的 API 来生成回复。

你也可以在 AstrBot 的管理后台配置人设提示词(System Prompt),自定义机器人的回复风格。

常见问题#

1. 拉取 Docker 镜像太慢怎么办?#

用国内镜像加速,在镜像名前加上 m.daocloud.io/docker.io/,比如:

image: m.daocloud.io/docker.io/soulter/astrbot:latest

2. WebSocket 连接失败?#

检查这几个地方:

  • WS_URL 末尾有没有带 /ws
  • 两个容器是否在同一个 Docker 网络下
  • 端口 6199 有没有在你的云服务器安全组里放行

3. QQ 号被风控了?#

腾讯的风控机制无法控制。建议使用日常活跃的老号登录,不要频繁重启容器导致账号反复登录,也不要发送敏感内容。

4. 如何更新?#

在项目目录下执行:

Terminal window
docker compose pull
docker compose down
docker compose up -d

5. 如何备份?#

直接打包 ./data、./napcat 和 ./astra_db 这三个目录就行,下次恢复的时候直接把备份文件解压回去再启动容器即可。

总结#

AstrBot + NapCat + Docker 这个组合从零到跑起来基本十分钟就能搞定。AstrBot 的功能远不止这些,还有插件系统、MCP 服务扩展、多平台接入等,感兴趣的话可以自行探索。

使用 Napcat & AstrBot 搭建一个属于自己的 QQ 机器人!
https://blog.yufurry.cn/posts/00000018/
作者
蓝影Shadow
发布于
2026-07-08
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取

最后更新于 ,距今已过 105 天

部分内容可能已过时