想要一只住在 QQ 里、会接话会吐槽、有固定人设、7×24 在线的小鲸鱼?这篇把「大肥鱼」整套方案在 Linux + Docker 上实机跑了一遍:NapCat 负责登录 QQ(协议端),AstrBot 负责思考(插件、人格、记忆),对话模型接 DeepSeek。看图、听语音、发语音条可以再接阿里云百炼,本文先把最核心的「文字私聊」跑通。
本站实测环境:Debian 13 + Docker 27.5,AstrBot
v4.29.0(自建镜像 dafeiyu-astrbot),NapCatmlikiowa/napcat-docker:v4.18.37。
![]()
图:社区二创 / AI 生成素材,非官方
一、架构一图看懂
QQ 用户 ⇄ 腾讯服务器 ⇄ NapCat(Docker) ⇄ WebSocket :6199 ⇄ AstrBot(Docker) ⇄ DeepSeek API
| 组件 | 端口 | 作用 |
|---|---|---|
| AstrBot 面板 | 6185 | 配模型、人格、插件、白名单 |
| NapCat WebUI | 6099 | 扫码登录、OneBot11 网络配置 |
| aiocqhttp 反向 WS | 6199 | NapCat 主动连 AstrBot:ws://…:6199/ws |
二、准备
- 一台 Linux 服务器(2C4G 够用),装好 Docker 与 compose 插件;
- 一个 QQ 小号(强烈建议,不要用主号);
- 一个 DeepSeek API Key(对话主力,按量计费);
- 可选:阿里云百炼 Key(图片理解 / 语音识别 / 语音合成)。
三、Docker 部署步骤
1. 目录约定
/opt/dafeiyu/
├── compose.yaml
├── Dockerfile # 官方镜像 + edge-tts / imageio-ffmpeg
├── patches/ # 核心补丁(bind-mount,升级不丢)
├── astrbot/data/ # AstrBot 数据(插件放 data/plugins/)
├── napcat/config|qq/ # NapCat 配置与登录态
└── heal_ws.py # WS 自愈脚本
2. Dockerfile
FROM soulter/astrbot:v4.29.0
RUN pip install --no-cache-dir edge-tts imageio-ffmpeg
3. compose.yaml 关键部分
services:
astrbot:
build: .
image: dafeiyu-astrbot:latest
container_name: astrbot
restart: unless-stopped
ports:
- "127.0.0.1:6185:6185"
volumes:
- ./astrbot/data:/AstrBot/data
environment:
- TZ=Asia/Shanghai
napcat:
image: mlikiowa/napcat-docker:v4.18.37
container_name: napcat
restart: unless-stopped
hostname: dafeiyu-napcat # 固定主机名,减少「新设备」风控
ports:
- "127.0.0.1:6099:6099"
volumes:
- ./napcat/config:/app/napcat/config
- ./napcat/qq:/app/.config/QQ
environment:
- TZ=Asia/Shanghai
- ACCOUNT=你的QQ小号
- NAPCAT_QUICK_ACCOUNT=你的QQ小号
⚠️ 变量名是 ACCOUNT(入口脚本执行 qq -q $ACCOUNT 快速登录)和 NAPCAT_QUICK_ACCOUNT(Worker 重启后自动尝试快速登录),不是 NAPCAT_ACCOUNT,写错了等于没写。
4. 构建并启动
cd /opt/dafeiyu
sudo docker compose build
sudo docker compose up -d
sudo docker ps

5. SSH 隧道访问面板
面板和 WebUI 默认只绑 127.0.0.1,不要直接暴露公网,在自己电脑上开隧道:
ssh -L 6185:127.0.0.1:6185 -L 6099:127.0.0.1:6099 root@你的服务器
然后浏览器打开 http://127.0.0.1:6185(AstrBot)和 http://127.0.0.1:6099(NapCat)。
- AstrBot 初始账号密码:
docker logs astrbot | grep -A2 "Initial username",登录后立刻改密码; - NapCat WebUI 带 token 的地址:
docker logs napcat | grep "WebUi User Panel Url"。
6. 扫码登录小号
首次快速登录会失败(没有历史登录记录),NapCat 自动退回二维码登录。二维码在 WebUI 里,或:
sudo docker cp napcat:/app/napcat/cache/qrcode.png ./qrcode.png
用小号手机 QQ 扫码确认即可。
四、接线:DeepSeek + aiocqhttp + 人格
1. DeepSeek 提供商
AstrBot 面板 → 模型提供商 → 新增 DeepSeek:
- API Base:
https://api.deepseek.com/v1 - Key:填你的 DeepSeek Key
- 模型:
deepseek-chat,并设为默认聊天模型
2. QQ 适配器(aiocqhttp)
面板 → 平台适配器 → 新增 OneBot v11(aiocqhttp):
- 反向 WS 监听:
0.0.0.0,端口 6199(路径/ws)
保存后确认端口在监听:ss -lntp | grep 6199。
3. NapCat 侧 websocket 客户端
NapCat WebUI → 网络配置 → 新增 WebSocket 客户端,URL:
- 同一 compose 网络:
ws://astrbot:6199/ws - host 网络模式:
ws://127.0.0.1:6199/ws
AstrBot 日志出现 aiocqhttp(OneBot v11) 适配器已连接。 就通了。
4. 人格「大肥鱼」
面板 → 人格 → 新建,把人格文件里 --- 分隔线之后的整段正文粘进系统提示词,命名「大肥鱼」,在配置里设为默认人格。表情转换插件 astrbot_plugin_face_convert 整个文件夹丢进 data/plugins/,重启即加载(会把 [旺柴] 这类文字表情转成真 QQ 表情)。
5. 只回私聊(强烈建议)
面板 → 配置 → 访问控制:
- 开启「会话白名单」;
- 白名单只填自己的私聊会话:
default:FriendMessage:<你的QQ>(私聊发/sid可查); - 关闭「群聊中管理员豁免白名单」。
这样机器人被拉进任何群都不会说话,只回你本人的私聊。另外加好友需你手动通过,第一道门永远在自己手里。
五、实测效果
私聊发「在吗」,约 1.6 秒后回复:


图:私聊实测(含「在吗」与中世纪要点问答);头像与昵称已打码
六、实测踩坑
-
构建卡在 pip:清华源找不到包
原 Dockerfile 用-i https://pypi.tuna.tsinghua.edu.cn/simple,在我们的构建环境里报Could not find a version that satisfies the requirement edge-tts (from versions: none)。去掉-i改走官方 PyPI 后 3 秒装完。国内服务器若官方源慢,换别的可用镜像,别死磕一个。 -
Docker 默认网桥不可用 → 改 host 网络
宿主机 daemon 配置为"bridge":"none"、iptables:false时,compose 默认网络起不来、端口映射也无效。解决:两个服务都加network_mode: host,构建也加build.network: host。此时 NapCat 连 AstrBot 要写ws://127.0.0.1:6199/ws,不能用astrbot主机名;端口也不再受127.0.0.1:绑定保护,务必用防火墙/安全组拦住 6185/6099/6199。 -
NapCat 网络配置是按 QQ 号分文件的
配置文件是napcat/config/onebot11_<QQ号>.json。登录前可以先把onebot11.json和onebot11_<号>.json都写好 websocket 客户端,登录后自动生效;换号记得复制一份新号的文件。 -
WS 断了不会自己回来
AstrBot 重启后,NapCat 的反向 WS 有时 1~10 分钟才重连,甚至不回来,表现为「机器人死了」。别重启 NapCat(可能要重新扫码),用heal_ws.py:它通过 NapCat WebUI API 把 websocket 客户端关一下再开,2 秒重连、免扫码:python3 /opt/dafeiyu/heal_ws.py可以挂成计划任务每 3 分钟巡检一次。
-
少用
up -d重建 NapCat
容器重建会变设备指纹、丢快速登录记录。改配置优先docker restart或 WebUI。
七、风险提示(请务必看完)
- QQ 风控 / 封号:NapCat 是非官方协议端,存在风控甚至封号可能。强烈建议使用小号;手机端偶尔挂着保持活跃;固定 hostname(可选再固定 machine-id),减少「新设备」判定;容器重建可能丢快速登录。
- API 费用:DeepSeek 对话以及百炼视觉 / 语音识别 / 语音合成均按量计费,注意额度与账单;记忆嵌入可走本地 Ollama 降本。
- 密钥与隐私:截图务必打码 QQ 号、API Key、面板密码与登录二维码;二维码用完即删,别久留。面板改强密码,不要裸露公网。
- 二创形象:「大肥鱼」是 DeepSeek 蓝鲸的社区二创形象,非官方角色,与 DeepSeek 官方无关;文中头像为 AI 生成素材。
- 法律与平台规则:请自行遵守 QQ / 腾讯服务条款与当地法律法规,本文仅为技术部署说明,不鼓励任何滥用。
- 补丁易丢:百炼 TTS、分泡语音依赖对 AstrBot 核心文件的 bind-mount 补丁;升级 AstrBot 镜像后需重新核对补丁是否适用。
八、小结
一份 Dockerfile + compose,十几分钟就能把一只有人设的 QQ 鲸鱼娘养起来。先跑通「私聊文字 + DeepSeek」,再按需加看图、语音、记忆和主动聊天。记住三件事:小号、只回私聊、WS 挂了跑 heal_ws.py。














暂无评论内容