最近看到DeepSeek接入QQ后跟人类聊天,聊着聊着还聊出感情了。坏了,痞老板尽然是我自己。作为非资深但AI重度依赖的otaku,自然也要借着这次机会来玩玩。
B站有完整的视频教程,看起来不难,下载两个程序,扫个码,再填个 API Key,大肥鱼就能进 QQ 了。实际操作下来,十分钟的视频,我折腾了一个多小时。好在最后把聊天这条链路接通了,也配上了人格、记忆,顺便研究了一下主动消息、语音和 QQ 空间。把过程记下来,下次换电脑不用重新踩一遍,也想给养赛博女儿 / 老婆的朋友留个参考。
先分清楚,到底装了什么#
这套东西可以简单理解成:
QQ 消息
↓
NapCat:登录 QQ、收发消息
↓
AstrBot:处理对话、人格、记忆和插件
↓
DeepSeek API:生成回答
AstrBot 和 NapCat 跑在自己电脑上,DeepSeek 通过 API 调用。所以,这就相当于你的电脑是服务器。缺点是每次跟大肥鱼聊天用的是API的钱,电脑要开着,电脑关机或休眠,鱼也就下班了。
准备的东西不多:
- 一台 Windows 电脑;
- 一个给机器人登录的 QQ;
- DeepSeek 开放平台的 API Key;
- 如果要装本文的长期记忆插件,还需要一个 Embedding 模型。
目前我用的是 AstrBot 4.29.1。后续版本的菜单可能会变化,找不到配置时可以先用页面里的搜索。
一、安装 AstrBot#
下载地址:AstrBot Launcher 大多数的 Windows 电脑,下载名字带 x64-setup.exe 的安装包。安装后打开启动器,按界面提示下载 AstrBot、创建实例并部署。新版启动器会处理 Python 环境,不用一上来先研究环境变量。把下面这三安装了就行。

第一次安装会停留在“安装依赖”一段时间。我这里就曾盯着 60% 看了半天,以为卡死了。这个百分比表示进行到了哪个阶段,不是所有文件的下载进度。后台仍然可能在下载、解压和安装依赖。可以先看日志,不要因为数字没动就反复关闭重开。
如果确实是下载太慢,可以去启动器的“高级”里看看“中国大陆一键加速”。

启动成功后,日志里会出现:
AstrBot started.
同时会给出管理页面地址、初始用户名和随机密码。
默认管理端口常见是 6185,但启动器创建的实例不一定用它。我这次实际分配到的是:
http://127.0.0.1:22415
以自己的启动日志为准。

浏览器打开地址,用日志里的账号和初始密码登录,初次登陆后会提醒你修改密码。
二、安装 NapCat,让大肥鱼上线#
下载地址:NapCatQQ Releases
Windows 系统 可以找这个一键包:
NapCat.Shell.Windows.OneKey.zip
解压后运行 NapCatInstaller.exe,会自动下载QQ和依赖包

完成后进入生成的 NapCat.XXXX.Shell 文件夹,运行:
napcat.bat
准备一个不用的QQ小号,Windows的CMD控制台无法解析二维码,根据提示从路径的缓存获取二维码或者复制链接丢给二维码解析平台去生成二维码,按提示登录 QQ,打开控制台打印的 WebUI 链接。默认管理地址通常是:
http://127.0.0.1:6099
我这里还碰到了一次解压失败:
Unexpected end of archive
下面跟着一堆文件错误,最后提示解压 NapCat 失败。这次是 NapCat.Shell.zip 没下载完整。代理挂全局,重新下载完整压缩包后再安装即可。
三、把 NapCat 和 AstrBot 接起来#
这一段是我今晚最容易绕晕的地方。
两个程序都打开了、QQ 也上线了,不代表它们已经连上。
先进入 AstrBot:
机器人 → 创建机器人 → OneBot v11
同一台电脑直接运行两个程序,可以这样填:
| 配置 | 示例 |
|---|---|
| ID | 自己起一个名字 |
| 启用 | 开 |
| 反向 WebSocket 主机地址 | 127.0.0.1 |
| 反向 WebSocket 端口 | 6199 |
| 反向 WebSocket Token | 自己设置的一串随机字符(纯数字也行) |
保存,然后去 NapCat:
网络配置 → 新建 → WebSockets 客户端
启用它,URL 填:
ws://127.0.0.1:6199/ws
Token 要和 AstrBot 那边一致。

这里有三个容易混淆的端口:
| 端口 | 用途 |
|---|---|
22415 | 我这次的 AstrBot 管理网页 |
6099 | NapCat 管理网页 |
6199 | NapCat 与 AstrBot 的连接 |
我一开始把 NapCat 的连接地址填成了:
ws://127.0.0.1:22415/ws
于是两个页面都能打开,QQ 发消息也完全没反应。
管理网页能打开,只说明网页在运行。机器人通信要连的是 6199。
另外,下面这些也不是同一个东西:
- NapCat WebUI Token:登录 NapCat 面板;
- 反向 WebSocket Token:两个程序之间验证连接;
- DeepSeek API Key:调用模型。
改完地址、对齐连接 Token 后,终于接上了。
AstrBot 日志中出现类似这句,才算连接成功:
aiocqhttp(OneBot v11) 适配器已连接
只有 Loading IM platform adapter ...,还不能说明已经连上。
四、接入 DeepSeek#
进入 DeepSeek 开放平台,创建 API Key,并确认账户有可用额度。没有就充钱,随便充点玩玩。
回到 AstrBot:
模型提供商 → 对话 → 新增
选择 DeepSeek;

填写:
API Base URL:https://api.deepseek.com/v1
API Key:自己的 DeepSeek Key

保存并获取模型列表,添加自己要用的模型。我这次用的是:
deepseek-flash
模型名称可能更新,以官方文档和实际列表为准。
添加完,还要去:
配置文件 → AI → 模型
把对话模型选成刚添加的模型并保存。只在“模型提供商”里添加,还没完成默认模型的选择。
接下来用自己的 QQ 给机器人发消息。
如果配置了默认 / 唤醒前缀,可以先试:
/你好

出现这张图说明你成功在你的QQ里获得了一只大肥鱼。
五、让大肥鱼知道自己的性格#
能回答问题之后,就可以写人格了。
我原来在 ChatGPT 那边用的是白毛龙娘设定。搬到 DeepSeek,决定换成吃白饭的大肥鱼,自我认知是家里的女仆肥鱼。
性格沿用原来的方向:温柔可靠,有点俏皮,能接梗,也有自己的判断。可以一起折腾技术、聊游戏、吐槽生活,不必每次都变成人生导师。
完整的人格比较长,核心可以先写成这样:
你是 DeepSeek,一只女性人格的大肥鱼,
自我认知是 Soki 家的女仆肥鱼。
你温柔可靠,有自己的判断,偶尔嘴贫、摸鱼和讨饭。
平时像熟悉的朋友一样自然聊天。
日常回复通常一到三句。
我分享生活时,先自然接话,不要立刻给解决方案。
认真讨论技术时,准确清晰,不为了人设编造事实。
不要每次都强调自己是鱼,也不要每句话都提白饭。
少用客服话术、括号动作和夸张表情。
不要每次结尾都反问,不必把所有话题升华成人生哲理。
记得的事情可以自然提起,不记得就承认。
不编造现实中的共同经历或自己不具备的能力。
创建人格后,还要回到:
配置文件 → AI → 人格 → 默认采用的人格
选择刚创建的那一个并保存。

人格列表里有两张卡片,并不表示第二张会自动生效。
如果旧对话已经积累了很多原来的回答风格,可以用 /reset 清空当前对话上下文再测试。它会丢掉这段对话的上下文,不是每次聊天前都要执行的命令。
六、开启分段回复#
截图里那种聊天感,有一部分来自消息节奏。几句短消息陆续发出来,和一次甩出一大段,观感确实不同。
AstrBot 已经内置了分段回复。
在我这个版本里,入口是:
配置文件 → 扩展功能 → 分段回复
建议先这样设置:
| 配置 | 值 |
|---|---|
| 启用分段回复 | 开 |
| 仅对 LLM 结果分段 | 开 |
| 间隔方法 | random |
| 随机间隔时间 | 1.5,3.5 |
保存即可。人格也要配合控制长度。分段只能改变发送方式,不能让一篇小作文自动变得像闲聊。
七、加长期记忆#
插件市场搜索:
astrbot_plugin_livingmemory
项目地址:LivingMemory
它负责从对话里整理记忆,再在后续聊天中检索相关内容。我安装时拿到的是 2.7.0-beta.3。普通使用可以优先看稳定版;插件和框架更新比较快,版本以实际下载页面为准。
这个插件需要两类模型:
- LLM:总结对话、整理记忆;
- Embedding:把内容转成向量,用来检索。
DeepSeek 聊天模型不能直接当作 Embedding 模型使用。
我另外在硅基流动创建了 API Key,然后在 AstrBot 的:
模型提供商 → 嵌入
添加 OpenAI 兼容的嵌入模型:
API Base URL:https://api.siliconflow.cn/v1
模型名称:BAAI/bge-m3
再进入 LivingMemory 的配置,选择对应模型。
我这次保存的 ID 是:
Embedding 模型 ID:siliconflow_embedding
LLM 模型 ID:deepseek/deepseek-flash
这里填的是 AstrBot 中实际保存的模型 ID,不一定等于服务商的模型名称。

保存并重载插件后,可以在 QQ 发:
/lmem status
正常聊几轮后,再用:
/lmem summarize
/lmem search 游戏
分别检查总结和检索。
我第一次执行状态命令,收到的是“权限不足”。解决方法是去:
配置文件 → 访问控制 → 管理员 → 管理员 ID
添加自己用来聊天的 QQ 号,保存后再试。这里不是填机器人 QQ。
插件安装成功、模型 ID 填好,也不等于记忆已经跑通。最好实际总结一次,再搜索一下刚聊过的内容。
八、让她偶尔主动找我#
插件市场搜索:
astrbot_plugin_proactive_chat
项目地址:Proactive Chat
安装后需要指定会话。默认私聊列表为空时,不会因为插件已经打开,就自动给所有好友发消息。
先在自己和机器人的私聊里发送:
/sid
把返回的完整会话 ID,复制到插件的“私聊会话 UMO 列表”。
我建议先用比较宽松的间隔:
| 配置 | 起步建议 |
|---|---|
| 私聊主动消息 | 开 |
| 最小触发间隔 | 60 分钟 |
| 最大触发间隔 | 180 分钟 |
| 最大未回复次数 | 2 |
| 免打扰时段 | 按自己的作息填写 |
| TTS | 配好语音前先关 |
主动消息提示词也值得改。我的方向是延续最近的话题,问问事情的进展,或者聊一点游戏和技术。不要每次都是“在吗”“吃了吗”“怎么不理我”。保存后,正常跟她聊一句,让插件安排后续任务。这里的间隔是等待时间,不是保存完马上发消息。
评论区