实际上官方文档详细的步骤已经写的很清楚了(详见官方文档),不过我这里主要还是记录一下我部署的过程和其中碰到的一些问题。
准备工作
对于服务器的购买和选择需要自己选择,不过一般来说部署qq机器人并不需要太高的性能,2h2g足以让astrbot和napcat稳定运行;我购买服务器的时候选择的最低档。考虑到后面步骤使用Docker compose方便拉取,我的镜像选用的是Docker 26.1.3。
拉取astrbot和napcat
创建一个astrbot的文件夹,后续的文件我们都需要存进这个文件夹中方便管理。使用
wget https://raw.githubusercontent.com/NapNeko/NapCat-Docker/main/compose/astrbot.yml
sudo docker compose -f astrbot.yml up -d
如果网络顺利,使用这个命令可以直接拉取到astrbot和napcat并启动yml文件。这里的yml文件都是写好的,如若后续需要映射端口,在此yml中增删即可。
我第一次部署因为分开拉取,单独启动astrbot和napcat,导致astrbot找不到napcat的端口,废了我很大的劲弄明白…
如果顺利,此时应该能看见输出的日志;在服务器开放web端口(默认似乎是6185);此时可以通过ip:端口号的方式访问端口并配置了。napcat同样需要配置。
astrbot和napcat的配置
对于astrbot,我们视作一个转发端,它要做的是接受napcat发过来的消息(即你的qq的消息),然后发送到llm,再将llm的回答转发回去。astrbot的配置并不复杂,如图:

而对于napcat,我们的配置可以去 Napcat 的 WebUI(默认端口 6099)中新增 OneBot 连接实例:点击网络配置->新建->WebSockets客户端,在新弹出的窗口中:勾选启用, URL填写 ws://127.0.0.1:6199/ws。如果采用上面的 Docker Compose 部署,可以填写 ws://astrbot:6199/ws。心跳间隔和重连间隔可以改为 1000(1 秒)。点击保存,然后去 AstrBot WebUI 的控制台中检查是否连接成功,出现 aiocqhttp(OneBot v11) 适配器已连接 日志,即意味着napcat和astrbot成功连上了。至此,部署所有困难的部分都结束了。此时你可以在napcat的log日志里找到qq码扫码登录。
接入llm
以上的步骤只是将消息能够接入,现在我们需要接入一个llm,让qqbot某种意义上的活过来。在模型提供商中,我们选择我们需要的大模型的平台并添加。将 API Key 填入对话框表单的 API Key 处,将 API Base URL 填入 API Base URL 处。保存并选用。此时你可以在私聊中向你作为机器人的账号发一些消息。如果顺利,稍等一段时间,机器人就应该会有响应了!同样的,astrbot中支持对人格的编写,于是,你就可以拥有一个一定程度上的“自己的”聊天机器人了:

针对于不同的模型提供商,扮演角色的侧重点不同。我使用的deepseekv3,对于日常的扮演需求已经足以。对于大量的对话请求可能会对token的要求有所增加;鉴于我的使用场景没有那么频繁,这样的程度便已足够!
一些后话
啊啊,实现一个能在qq上和我说话的机器人算是我高中的一个小小愿望吧。那个时候还没有大模型这个概念。最智能的机器人也不过只是正则匹配和一些关键词检索而已。那个时候也没有这么方便开源的软件和教程;苦于没有学习路径,我一直没能实现。也算是实现了我过去的一些愿望吧。
实际上在大一大二的时候我也试过,但是也因为同样的原因放弃了。
果然人生兜兜转转都是个圈。在我最没想到的时间段,我反而把机器人部署上了,这也是某种意义上的伏笔吗?
不管怎么说,能部署这样一个bot也算是对我的心里的一种宽慰吧。
同样,如果你愿意,也欢迎来和它对话玩耍一下!QQ:3187464083