☰
QQ机器人怎么接上 AI?用 AstrBot + NapCat 搭一套可扩展的 DeepSeek 助手
2026/10/14 16:16:11 网站建设 项目流程

前言

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 大模型的聊天机器人框架。本文实际用到的能力包括:

它可以理解成整套系统的“逻辑层”:收到消息以后,决定调用哪个模型、用什么人设、是否执行插件或 MCP。

1.2 NapCat 负责把 QQ 消息交出来

NapCat 在这套组合中负责登录 QQ,并通过 OneBot v11 接口把消息交给 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. 先用随机域名验证 AstrBot6185

进入【隧道管理 → 隧道列表】,原环境里默认有两条隧道:

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

更新以后,到【状态 → 在线隧道列表】,可以看到名为:

astrbot-6185

的 http / https 地址。

每个账号实际生成的公网地址不同。

用 https 地址访问测试。

AstrBot 页面可以正常打开。

到这里,能确认的是:

AstrBot6185管理页面已经可以从公网浏览器访问。

12. 长期管理再换固定二级子域名

随机域名更适合临时测试。原教程记录里,它大约每24 小时变化一次。

如果 AstrBot 后台准备长期远程维护,固定地址会更省事。

进入预留页面:

https://dashboard.cpolar.com/reserved

选择【保留二级子域名】,填写地区、名称和描述。

本文记录的保留信息是:

回到【隧道管理 → 隧道列表】,找到:

astrbot-6185

并编辑。

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

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

继续以 https 地址测试。

页面可以正常访问。

总结

这套组合真正有价值的地方,不是“Docker 一键把 QQ 变成 AI”,而是把不同职责拆得很清楚:

NapCat负责 QQ 登录和 OneBot 消息接口;
AstrBot负责机器人逻辑、模型、人设、插件和 MCP;
DeepSeek提供大模型能力;
插件补充具体机器人功能;
MCP让模型继续调用外部工具;
cpolar只负责把 AstrBot 的6185管理页面提供到公网。

整条实际跑通的链路是:

Docker → AstrBot6185+ NapCat6099→ NapCat Token → QQ 扫码登录 → AstrBot 创建 QQ 个人号 → QQ 消息日志验证 → DeepSeek API → QQ AI 回复 → Persona → 点歌插件 → 12306 MCP → cpolar →astrbot-6185→ 固定二级子域名astrbot。

这次已经实际展示的结果包括:

比起一开始就往机器人里堆功能,我更建议按这条顺序做:先确认 QQ 消息能进 AstrBot,再确认模型能回复,最后才加人设、插件和 MCP。这样哪一步出问题,基本都能定位到对应组件,不会变成几个服务同时排查。

本文转自网络,如有侵权,请联系删除。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询