AstrBot 与 NapCat 部署智能 QQ 机器人及 cpolar 公网访问指南
如何使用 Docker 一键部署 AstrBot 与 NapCat,接入 DeepSeek AI 实现 QQ 智能对话。内容包括初始化配置、人设切换、插件安装(如点歌)、MCP 服务扩展(如 12306 查询),以及使用 cpolar 进行内网穿透以实现公网访问管理面板。

如何使用 Docker 一键部署 AstrBot 与 NapCat,接入 DeepSeek AI 实现 QQ 智能对话。内容包括初始化配置、人设切换、插件安装(如点歌)、MCP 服务扩展(如 12306 查询),以及使用 cpolar 进行内网穿透以实现公网访问管理面板。

本文介绍如何使用 Docker 一键部署 AstrBot 与 NapCat,接入 DeepSeek AI 实现 QQ 智能对话,并通过 cpolar 实现公网访问。
[图片:AstrBot 界面]
GitHub 仓库:https://github.com/AstrBotDevs/AstrBot
AstrBot 是一个专为 AI 大模型设计的开源聊天机器人框架,它让你可以轻松地把 ChatGPT、DeepSeek、Claude 等 AI 接入到 QQ、企业微信、Discord 等各种聊天平台。
核心特点:
简单来说,AstrBot 就是一个"AI 机器人中枢",帮你把"AI 能力"和"聊天平台"连接起来,让你专注于功能本身,而不用操心底层实现。
NapCat 是一个基于 NTQQ(QQ 官方 Linux 版本)的 OneBot 协议实现框架,说人话就是:它能让你的 QQ 账号通过标准化接口被机器人程序调用。
在以前,大家常用的 go-cqhttp 已经停止维护,而 NapCat 作为新一代解决方案,具有以下优势:
核心特点:
为什么要用 NapCat?
因为 QQ 本身不提供公开的 API 接口给开发者,而 NapCat 就像一个"翻译官",把 QQ 的操作翻译成标准的 OneBot 协议接口,让 AstrBot 这样的机器人框架可以通过 HTTP/WebSocket 来控制你的 QQ 账号收发消息。
简单来说:NapCat 负责登录 QQ 并提供接口,AstrBot 负责处理逻辑和调用 AI,两者配合就能让你的 QQ 变成智能机器人。
本教程演示在 Windows 11 操作系统上的 Docker 一键部署,部署方式在其他环境也一致。
安装好 Docker 以后,电脑键盘按快捷键 Windows + R 键,输入 powershell 回车,打开 Windows PowerShell 窗口,输入如下命令:
irm https://gitee.com/jun-wan/script/raw/master/astrbot/deploy_astrbot.ps1 | iex
[图片:PowerShell 执行结果]
可以看到,命令执行了检查 Docker 及状态,创建文件夹,下载 astrbot 的 docker-compose 文件 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
控制台提示部署好后,我们依次访问一下,首先访问 Astrbot(访问的 IP 请查看控制台输出的 IP,或者使用本地回环地址 localhost 也可以):
http://localhost:6185
[图片:AstrBot 访问界面]
可以发现,成功的访问到啦,接下来再试试访问 NapCat:
http://localhost:6099
[图片:NapCat 访问界面]
好啦,都访问成功啦!
首先,在浏览器中打开如下地址,访问 NapCat 的 web 登录界面:
http://localhost:6099/
[图片:NapCat 登录界面]
页面上提示,需要输入 token 进行登录,我们回到控制台,可以看到有一行输出了 Token:
[图片:控制台 Token 输出]
如果控制台日志清了,可以通过查看 docker 容器日志找到,输入如下命令进行查看:
docker logs napcat | Select-String "Token"
[图片:Docker 日志查看]
将 token 复制下来,填写 web 页面中,即可进行登录:
[图片:Token 登录]
接着,登录上你想要作为机器人的 QQ 账号,可以选择侧边的扫码登录,登录完成后,会自动跳转到首页:
[图片:QQ 扫码登录]
输入 AstrBot 的访问地址,访问到 AstrBot 的 Web 登录界面:
http://localhost:6185
[图片:AstrBot 登录界面]
输入用户名和密码 astrbot,然后点击登录,登录成功后首次会提示修改账号信息,修改一下然后重新登录即可:
[图片:修改账号信息]
登录进来后,点击侧边的机器人,然后在页面点击创建机器人按钮,在弹出的窗口中,消息类别选择QQ 个人号,并且启用,保存即可:
[图片:创建机器人]
保存弹出安全提醒的话,直接无视警告并继续创建即可(因为是在本地进行,所以也无需设置 Token,当然也可以设置一下),创建好后,会有成功提示:
[图片:创建成功提示]
点击展开平台日志,然后用另一个 QQ 账号给机器人账号发送消息测试,是否成功通信:
[图片:消息测试]
可以看到,成功的接收到了来自另一个账号发送的消息。
首先,前往 DeepSeek 官网的用量信息页面,未登录会先跳转登录页面,登录即可,在该页面可以看到余额和消耗:
https://platform.deepseek.com
[图片:DeepSeek 用量页面]
接着,点击 API keys,进入该页面:
[图片:API Keys 页面]
在页面上点击 创建 API key 的按钮,然后设置一个 名称(用于辨识),创建完成后点击复制按钮进行复制(注意,只会显示一次,不用刻意记忆,忘记删除重新创建即可):
[图片:创建 API Key]
好了,这样就获取到了 deepseek 的 Api 密钥了,留着备用。
首先,在 AstrBot 的后台侧边栏点击模型提供商菜单,然后点击页面上的新增模型提供商按钮,在弹出的窗口中选择接入 DeepSeek:
[图片:新增模型提供商]
在配置页面中点击修改按钮,将前面获取到DeepSeek 的 API密钥填入其中,然后点击保存:
[图片:配置 API]
保存后,即可看到新增的模型提供商了,点击测试按钮,可以测试是否可用:
[图片:测试模型]
使用另一个账号,给前面扫码登录 NapCat 账号(即机器人)发送消息,进行测试是否成功接入了 AI:
[图片:AI 对话测试]
可以看到,成功的回复响应了我们的提问。
到这一步,你的 QQ AI 机器人已经能正常工作了。从如下图中可以看到,默认的回答很标准机器人一样:
[图片:默认回答]
这是因为 AstrBot 的默认人设给的提示词为:
你是一个乐于助人、友好的助手……
[图片:默认提示词]
我们可以创建一个新的人格设定,首先,打开 AstrBot 后台页面,选择侧边栏的更多功能下的人格设定项,然后在该页面点击创建人格,在弹出的窗口中输入人格 ID,和系统提示词即可:
[图片:创建人格]
这里提供一些收集到的人设,自行获取即可(人设全部为官方群获取,群友上传,非个人创建,个别人设可能有点…你懂的):
(注:原教程中的第三方网盘链接已移除)
填写完成后,点击保存即可,即可在人格设定页面看到保存的人格:
[图片:保存人格]
创建好人格后,我们可以在对话框中直接输入指令进行查看和切换,输入如下指令,可以查看人格相关的指定:
/persona
[图片:查看人格]
接着,查看一下人格情景列表,看看之前在后台创建的人格设定是否能够查询到:
/persona list
[图片:人格列表]
可以看到,成功的查询到了添加的人格设定,接着切换一个测试一下:
/persona 猫娘 (请替换为你创建好的人格 ID 名称)
[图片:切换人格]
接着来发送消息测试一下:
[图片:切换后对话]
可以看到,人格生效了,但是回复的内容太长了,我们可以让它分段回复,更加适合聊天的方式。回到后台页面,点击配置文件,下拉找到流式回复,启用它,不支持流式回复的会自动实时分段回复,然后点击右下角的保存按钮即可:
[图片:流式回复配置]
接着再来发送测试一下:
[图片:分段回复测试]
可以看到,现在就能够分段式的回复了。想要切换其他人设,同样使用如下命令切换即可,但是要注意上下文,所以一定要执行 /reset 清空上下文:
# 切换人设 /persona <你要切换的人格设定 ID 名称>
# 清空上下文,防止原人格对话影响现人格 /reset
[图片:重置上下文]
再次测试一下新的人格设定,是否生效:
[图片:最终测试]
可以看到,成功的生效且分段回复啦,到这儿,人格设定创建和切换就搞定啦!
前面我们已经配置好了人设相关配置了,接下来我们来添加一些插件,让它支持更多功能。我们回到后台页面,点击插件侧边菜单栏,在插件市场中可以看到许多的插件:
[图片:插件市场]
这里安装一个插件测试一下,以点歌插件为例,在右上角搜索音乐,找到点歌插件进行安装:
[图片:搜索插件]
在弹出的窗口中,可以选择使用 GitHub 加速,然后测试一下连通性,选择一个较低延迟的点击安装:
[图片:安装插件]
安装完成后弹出说明文档:
[图片:插件说明]
接着回到对话框发送指令测试一下:
/点歌 恋人(你想要点歌的歌曲名字)
[图片:点歌测试]
可以看到成功的推送了这首歌的歌曲卡片给我,安装上了插件,就拥有了更多的玩法啦!
到这一步,你的 QQ AI 机器人已经具备了基础对话能力和丰富的插件功能。但你可能会想:能不能让 AI 机器人更智能一点?比如自动查天气、查车票、搜索资料、执行复杂任务?这就是 MCP(Model Context Protocol,模型上下文协议) 要解决的问题。
MCP 是一个由 Anthropic 提出的开放协议,它让 AI 模型能够通过标准化接口调用外部工具和服务。简单来说,MCP 就像给 AI 装上了'手和脚',让它不再局限于纯文本对话,而是能主动调用工具、获取实时信息、执行具体操作。
而 AstrBot 正是支持 MCP 协议的机器人框架之一。通过配置 MCP 服务,你的 QQ AI 机器人可以:
接下来,我们就来看看如何在 AstrBot 中启用和配置 MCP 服务,让你的 QQ AI 机器人真正'智能'起来。
回到 AstrBot 后台页面,点击侧边菜单栏的MCP,然后点击页面上的同步服务器按钮,在弹出的窗口中点击蓝色字体ModelScope 平台,进行跳转:
[图片:MCP 同步]
即如下地址,以 12306-mcp 为例,点击进入:
https://www.modelscope.cn/mcp
[图片:ModelScope 页面]
进入后,点击滚动到下方,找到 MCP 服务器配置,点击复制按钮进行复制:
{"mcpServers":{"12306-mcp":{"command":"npx","args":["-y","12306-mcp"]}}}
[图片:复制配置]
复制下来后,回到 astrbot 后台页面,点击新增服务器按钮,然后在弹出的窗口中设置一个服务器名称,服务器配置部分内容粘贴先前复制下来的mcp 配置,最后点击测试,测试可用直接点击保存即可:
[图片:新增服务器]
接着,我们直接回到聊天对话窗口,询问一下我们之前配置好的 AI 机器人:
[图片:MCP 测试]
可以看到,完整的告诉了我普通的快速列车和高铁动车的相关车票信息,包含具体的列车号、出发时间、到达时间、座位及价格,完美的将 12306 的 MCP 服务接入进来啦!
到这一步,你的 QQ AI 机器人已经跑得很完美了——能聊天、能切换人设、能调用插件、还支持 MCP 服务。但很快你就会发现一个问题:人在外面想调整配置?不行,必须连家里的局域网。机器人突然不回复了?机器人直接'失联'。 这时候你会意识到,本地部署虽然简单,但'只能本地用'这个限制实在太致命。
不过转折就在这里:用 cpolar 做个内网穿透,几条命令搞定,你的 AstrBot 立刻拥有一个公网域名——这意味着你可以在地铁上用手机调机器人,切换 API key 相关操作,可以把管理面板发给异地的朋友访问查看。接下来,我们就用 cpolar 打通这'最后一公里'。
打开 cpolar 官网的下载页面:https://www.cpolar.com/download
点击 立即下载 64-bit 按钮,下载 cpolar 的安装包:
[图片:下载页面]
下载后是一个压缩包,解压后执行目录中的应用程序,一路默认安装即可,安装完成后,打开 cmd 窗口输入如下命令确认安装:
cpolar version
[图片:版本确认]
出现如上版本即代表安装成功!
访问 cpolar 官网,点击 免费注册 按钮,进行账号注册
[图片:注册页面]
进入到如下的注册页面进行账号注册:
[图片:注册表单]
注册完成后,在浏览器中输入如下地址访问 web ui 管理界面:
http://127.0.0.1:9200
[图片:Web UI 登录]
输入刚才注册好的 cpolar 账号登录即可进入后台页面:
[图片:后台页面]
随机域名方式适合预算有限的用户。使用此方式时,系统会每隔 24 小时 左右自动更换一次域名地址。对于长期访问的不太友好,但是该方案是免费的,如果您有一定的预算,可以查看大纲 9.4.2 的固定域名方式,且访问更稳定。
点击左侧菜单栏的 隧道管理,展开进入 隧道列表 页面,页面下默认会有 2 个隧道:
[图片:隧道列表]
点击编辑 website 的隧道,修改成我们 AstrBot 需要的信息:
接着,点击左侧菜单的 状态 菜单,接着点击 在线隧道列表 菜单按钮,可以看到有 2 个 astrbot-6185 的隧道,一个为 http 协议,另一个为 https 协议:
注意:每个用户创建的隧道显示的公网地址都不一样!
[图片:在线隧道列表]
接下来在浏览器中访问 astrbot-6185 隧道生成的公网地址(http 和 https 皆可),这里以 https 为例:
[图片:公网访问测试]
可以看到成功访问啦!
通过前面的配置,我们已经成功实现了AstrBot的远程访问,但免费随机域名方案的局限性也逐渐显现:每24 小时左右自动更换域名地址,意味着你需要频繁更新书签、重新分享链接,甚至可能因为忘记更新而无法访问。固定域名方案正是为了解决这些痛点而生,能够让你拥有一个 永久不变的专属地址。
好啦,接下来开始固定保留二级子域名教程!
首先,进入官网的预留页面:
https://dashboard.cpolar.com/reserved
选择 预留 菜单,即可看到 保留二级子域名 项,填写其中的 地区、名称、描述(可不填) 项,然后点击保留按钮,操作步骤图如下:
[图片:保留域名]
列表中显示了一条已保留的二级子域名记录:
China Top。astrbot。注:二级域名是唯一的,每个账号都不相同,请以自己设置的二级域名保留的为主
接着,进入侧边菜单栏的 隧道管理 下的 隧道列表,可以看到名为 astrbot-6185 的隧道,点击 编辑 按钮进入编辑页面:
[图片:编辑隧道]
修改域名类型为 二级子域名,然后填写前面配置好的子域名,点击更新按钮:
[图片:更新域名]
来到 状态 菜单下的 在线隧道列表 可以看到隧道名称为 astrbot-6185 的公网地址已经变更为 二级子域名 + 固定域名主体及后缀 的形式了:
[图片:固定域名列表]
这里以 https 协议做访问测试(加载稍慢,需耐心等待一下):
[图片:固定域名访问]
访问成功!这样一来,你就拥有了一个永久不变的专属域名,再也不用担心 24 小时域名更换的问题。
本教程带你从零搭建了一个基于 AstrBot + NapCat 的 QQ AI 机器人,实现了 DeepSeek 智能对话、人设切换、插件扩展,并通过 MCP 协议增强 AI 能力和 cpolar 内网穿透让服务支持公网访问。
通过本教程,你可以快速搭建一个功能强大、随时在线的 QQ AI 机器人,既能满足个人使用,也能分享给朋友体验。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online