QQ 机器人怎么接上 AI?用 AstrBot + NapCat 搭一套可扩展的 DeepSeek 助手
前言
QQ 机器人真正难的地方,往往不是“让 AI 回一句话”,而是把几层完全不同的东西接稳:QQ 账号怎么登录、消息怎么交给机器人框架、模型怎么接入、插件和 MCP 怎么扩展,最后管理面板又怎么在外网维护。AstrBot 和 NapCat 放在一起,正好把这些职责拆开:NapCat 负责 QQ 登录和 OneBot 消息接口,AstrBot 负责机器人逻辑、模型、人设、插件与 MCP;Docker 再把两套服务统一拉起来。本文按这条链一步一步验证:先确认 6185 和 6099 两个 Web 页面都能访问,再让 NapCat 登录 QQ、让 AstrBot 收到消息,随后接入 DeepSeek,继续测试人设、插件和 12306 MCP,最后再用 cpolar 把 AstrBot 的 6185 管理页面提供到公网。这样每出一个问题,都能知道应该查哪一层。
1. 为什么需要 AstrBot 和 NapCat 两套组件?
1.1 AstrBot 负责 AI 和机器人逻辑

AstrBot 是一个面向 AI 大模型的聊天机器人框架。本文实际用到的能力包括:
- WebUI 管理;
- QQ 个人号机器人配置;
- DeepSeek 模型提供商;
- 人格设定;
- 插件市场;
- MCP 服务;
- 消息回复。
它可以理解成整套系统的“逻辑层”:收到消息以后,决定调用哪个模型、用什么人设、是否执行插件或 MCP。
1.2 NapCat 负责把 QQ 消息交出来
NapCat 在这套组合中负责登录 QQ,并通过 OneBot v11 接口把消息交给 AstrBot。
职责分开以后,排查就容易得多:
- QQ 登录失败,先看 NapCat;
- AstrBot 收不到 QQ 消息,检查两边的 OneBot 链路;
- AI 不回复,继续看模型提供商;
- 人设、插件、MCP 不生效,再回 AstrBot 配置。
也就是说,这不是两个功能重复的机器人,而是:
NapCat 负责 QQ → AstrBot 负责机器人逻辑和 AI。
2. 先用 Docker 把两套服务一起拉起来
本次演示环境是 Windows 11。
如果 Docker 已经准备好,在 Windows 中按 Windows + R,输入 powershell,打开 PowerShell。
执行:
irm https://gitee.com/jun-wan/script/raw/master/astrbot/deploy_astrbot.ps1 | iex

这条脚本会完成 Docker 检查、目录创建、下载 astrbot.yml、启动容器,并输出访问地址。
如果是在 Linux 环境,可以按原步骤依次执行:
mkdir astrbot
cd astrbot
wget https://raw.githubusercontent.com/NapNeko/NapCat-Docker/main/compose/astrbot.yml
sudo docker compose -f astrbot.yml up -d
也可以使用 Linux 一键部署脚本:
curl -fsSL https://gitee.com/jun-wan/script/raw/master/astrbot/deploy_astrbot.sh | bash
容器启动以后,我更建议先别急着配置 QQ,而是先确认两套 Web 服务都活着。
AstrBot:
http://localhost:6185

NapCat:
http://localhost:6099

两个页面都能打开,才说明 Docker 部署这一层已经正常。
3. NapCat 先登录 QQ
NapCat Web 登录地址:
http://localhost:6099/

第一次进入时需要 Token。
部署控制台会输出 Token。

如果控制台日志已经清掉,可以通过容器日志查:
docker logs napcat | Select-String "Token"

复制 Token,填回 Web 页面登录。

接下来使用准备作为机器人的 QQ 账号扫码登录。

这一步完成后,NapCat 才真正具备“QQ 账号在线并可通过 OneBot 接口被调用”的条件。
4. 再让 AstrBot 和 NapCat 连起来
4.1 初始化 AstrBot
AstrBot 地址:
http://localhost:6185

初始用户名和密码都为:
astrbot
第一次登录后会提示修改账号信息,按页面修改后重新登录。

4.2 创建 QQ 个人号机器人
进入 AstrBot 后,点击【机器人 → 创建机器人】。
消息类别选择:
QQ个人号
并启用后保存。

如果弹出安全提醒,原步骤中选择【无视警告并继续创建】。本地环境也可以按需要自行设置 Token。

创建完成以后,不要直接去配 DeepSeek。
先展开平台日志,然后用另一个 QQ 账号给机器人账号发一条消息。

日志能够收到消息,说明最关键的第一段链已经跑通:
QQ → NapCat → AstrBot。
如果这一步都没通,后面再怎么改模型也不会有用。
5. 接入 DeepSeek,让机器人真正开始回答
5.1 创建 DeepSeek API Key
先进入 DeepSeek 平台:
https://platform.deepseek.com

进入 API keys。

点击【创建 API key】,填写名称并创建。
密钥只会显示一次,创建后复制保存。

5.2 在 AstrBot 中新增 DeepSeek
回到 AstrBot 后台,进入【模型提供商】,点击【新增模型提供商】,选择【接入 DeepSeek】。

点击修改,把刚才的 DeepSeek API Key 填入,然后保存。

保存以后,在模型提供商页面点击【测试】。

模型测试通过以后,再回 QQ 对话。
5.3 用另一个 QQ 实际发消息验证
继续使用另一个账号向机器人 QQ 发消息。

机器人能够正常回复后,第二段链才算真正成立:
QQ → NapCat → AstrBot → DeepSeek → QQ 回复。
6. 回答能用了,再调整人设和回复方式
默认回答比较像标准助手。

AstrBot 默认人设提示词记录为:
你是一个乐于助人、友好的助手……

如果想让机器人表现出不同风格,可以进入【更多功能 → 人格设定】,新建人格 ID 和系统提示词。

原教程还准备了一份人设资源:
123云盘永久链接:https://www.123865.com/s/3jOKVv-GSNzH?pwd=1314#
提取码:1314
创建完成后,新的人格会出现在列表里。

6.1 查看和切换人格
在对话框输入:
/persona

查看人格列表:
/persona list

切换人格:
/persona 猫娘(请替换为你创建好的人格ID名称)

再发消息测试。

人格已经生效。
6.2 回复太长时,打开流式 / 分段回复
如果回复一整大段不适合聊天,可以回到 AstrBot 配置文件里找到流式回复并启用。

再次测试。

现在回复会按配置进行分段。
切换到其他人格时,原步骤特别提醒先注意上下文,并执行 /reset。
完整命令记录如下:
# 切换人设
/persona <你要切换的人格设定ID名称>
# 清空上下文,防止原人格对话影响现人格
/reset

再次测试新的人格。

这一部分真正解决的是“机器人怎么说话”,不是底层通信问题。所以把它放在 QQ、AstrBot 和模型都验证成功以后更合适。
7. 插件负责扩展具体功能
AstrBot 后台进入【插件】,可以看到插件市场。

这里用点歌插件做测试。
搜索“音乐”,找到点歌插件。

安装时可以选择 GitHub 加速,并先做连通性测试,选择延迟较低的节点。

安装完成后会显示说明文档。

回到 QQ 对话,执行:
/点歌 恋人(你想要点歌的歌曲名字)

机器人成功返回歌曲卡片。
这一步可以很直观地看出插件的定位:
插件更像是给 AstrBot 增加一个已经封装好的具体功能。
8. MCP 和插件有什么区别?
插件能增加特定机器人功能,而 MCP 更偏向把外部工具或服务以标准化方式交给模型调用。
本文没有把 MCP 写成“自动拥有一切能力”,而是用一个很具体的 12306 示例验证。
8.1 添加 12306 MCP
进入 AstrBot 后台的【MCP】,点击同步服务器,再跳转到 ModelScope。

地址:
https://www.modelscope.cn/mcp

找到 12306-mcp 后,复制 MCP 服务器配置:
{
"mcpServers": {
"12306-mcp": {
"command": "npx",
"args": [
"-y",
"12306-mcp"
]
}
}
}

回到 AstrBot,点击【新增服务器】,填写服务器名称并粘贴配置。
先测试,测试可用再保存。

8.2 回 QQ 做一次真实查询
回到聊天窗口,直接向机器人提出车票相关问题。

本文测试中,机器人返回了普通快速列车和高铁动车相关信息,包括列车号、出发时间、到达时间、座位和价格。
这一层验证的是:
AstrBot → MCP → 12306-mcp → 返回查询结果。
它比单纯在后台看到“服务器已添加”更有意义。
9. 本地机器人都跑通以后,再处理远程管理
到这里,QQ AI 机器人已经完成:
NapCat 登录 QQ → AstrBot 收消息 → DeepSeek 回复 → 人格 → 插件 → MCP。
这时候再考虑一个实际问题:
如果 AstrBot 部署在家里的 Windows 主机上,人不在同一局域网时,怎么打开 6185 后台改配置?
cpolar 在这篇里只处理这一层:
把 AstrBot 的 Web 管理页面从本地
6185提供到公网。
QQ 消息本身已经通过前面的 NapCat / AstrBot 链路正常工作,不需要把这两件事混在一起。

10. Windows 安装 cpolar
进入 cpolar 下载页面,下载安装包。

安装完成后,在 CMD 中确认版本:
cpolar version

出现版本信息后,继续注册账号。

进入注册页面。

注册完成以后,通过本机 9200 进入 Web UI:
http://127.0.0.1:9200

登录账号。

11. 先用随机域名验证 AstrBot 6185
进入【隧道管理 → 隧道列表】,原环境里默认有两条隧道:
remoteDesktop→3389/ TCPwebsite→8080/ HTTP

编辑 website,改成 AstrBot 所需配置。

更新以后,到【状态 → 在线隧道列表】,可以看到名为:
astrbot-6185
的 http / https 地址。

每个账号实际生成的公网地址不同。
用 https 地址访问测试。

AstrBot 页面可以正常打开。
到这里,能确认的是:
AstrBot
6185管理页面已经可以从公网浏览器访问。
12. 长期管理再换固定二级子域名
随机域名更适合临时测试。原教程记录里,它大约每 24 小时变化一次。
如果 AstrBot 后台准备长期远程维护,固定地址会更省事。
进入预留页面:
https://dashboard.cpolar.com/reserved
选择【保留二级子域名】,填写地区、名称和描述。

本文记录的保留信息是:
- 地区:
China Top - 二级域名:
astrbot
回到【隧道管理 → 隧道列表】,找到:
astrbot-6185
并编辑。

域名类型改成【二级子域名】,填入前面保留的名称。

更新以后,在线隧道列表里 astrbot-6185 会变成固定二级子域名形式。

继续以 https 地址测试。

页面可以正常访问。
总结
这套组合真正有价值的地方,不是“Docker 一键把 QQ 变成 AI”,而是把不同职责拆得很清楚:
NapCat 负责 QQ 登录和 OneBot 消息接口;
AstrBot 负责机器人逻辑、模型、人设、插件和 MCP;
DeepSeek 提供大模型能力;
插件补充具体机器人功能;
MCP让模型继续调用外部工具;
cpolar只负责把 AstrBot 的 6185 管理页面提供到公网。
整条实际跑通的链路是:
Docker → AstrBot 6185 + NapCat 6099 → NapCat Token → QQ 扫码登录 → AstrBot 创建 QQ 个人号 → QQ 消息日志验证 → DeepSeek API → QQ AI 回复 → Persona → 点歌插件 → 12306 MCP → cpolar → astrbot-6185 → 固定二级子域名 astrbot。
这次已经实际展示的结果包括:
- Windows 11 Docker 部署;
- Linux 官方 Compose 命令;
- AstrBot
6185; - NapCat
6099; - NapCat Token;
- QQ 扫码登录;
- AstrBot 默认账号
astrbot; - QQ 个人号机器人;
- DeepSeek API Key;
- 模型测试;
- QQ 实际对话回复;
/persona;/persona list;- 人格切换与
/reset; - 分段回复;
- 点歌插件;
/点歌 恋人;12306-mcp;- MCP 测试与车票查询;
cpolar version;127.0.0.1:9200;astrbot-6185;China Top;- 固定二级子域名
astrbot。
比起一开始就往机器人里堆功能,我更建议按这条顺序做:先确认 QQ 消息能进 AstrBot,再确认模型能回复,最后才加人设、插件和 MCP。 这样哪一步出问题,基本都能定位到对应组件,不会变成几个服务同时排查。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)