关键词:QQ机器人、NapCat、OneBot、RAG、嵌入式LLM、ARM64部署、Node.js
适用场景:群聊智能应答、角色风格模拟、低成本本地部署


一、项目背景与目标

1.1 背景

在群聊场景中,我们希望拥有一台能模拟特定人物说话风格(简洁、带口头禅、爱吐槽)的自动回复机器人,用于娱乐或社群互动。同时要求低成本部署(ARM64机顶盒)、隐私保护(RAG向量库本地存储)、拟人化响应(可变延迟、随机忽略)。

1.2 目标

  • 基于 NapCat(QQ无头协议)实现消息收发

  • 内置 Timing Agent 规则引擎,控制回复时机与概率,模拟人类行为

  • 结合本地 RAG(检索增强生成),召回历史对话片段作为 Few-shot 示例

  • 调用外部 LLM API(如 DeepSeek)生成符合目标风格的回复

  • 全部服务运行在 ARM64 机顶盒(8GB RAM) 上,几乎零额外成本


二、整体架构

text

机顶盒 (ARM64, 8GB RAM)
┌────────────────────────────────────────────┐
│  NapCat (QQ协议层, Node.js)                 │
│    ↓ WebSocket OneBot V11 (端口3001)        │
│  Bot 调度器 (Node.js)                       │
│    ├── Timing Agent (规则引擎)              │
│    ├── RAG 检索 (sqlite-vec, 本地)          │
│    └── LLM API 调用 (外部)                  │
│                                              │
│  附: Embedding Server (0.6B GGUF, CPU)      │
│  附: SQLite 向量数据库 (~189MB)             │
└────────────────────────────────────────────┘
                ↓
         外部 LLM API (DeepSeek/硅基流动等)
  • NapCat:负责QQ协议接入,提供 WebSocket 接口(OneBot V11 标准)。

  • Bot调度器:核心业务逻辑,包含消息过滤、时机决策、RAG检索、LLM调用。

  • Embedding Server:本地运行 Qwen3-Embedding-0.6B GGUF 模型,为查询生成向量。

  • SQLite向量库:存储预计算的历史对话块(1024维),支持ANN快速检索。


三、可行性分析

3.1 技术可行性

模块 方案 状态 风险
QQ协议 NapCat (NTQQ无头) ✅ 成熟开源 小号可能被风控,建议准备备用号
消息收发 OneBot V11 WebSocket ✅ 标准协议
回复时机 规则引擎(基于数据分析) ✅ 简单if-else 需实际调参
内容生成 外部LLM API ✅ 通用方案 依赖API可用性/成本
RAG检索 sqlite-vec (本地) ✅ 单次0.09s
嵌入服务 Qwen3-0.6B GGUF (CPU) ✅ 单次0.11s,占用~1.2GB
存储 SQLite向量库 ✅ 189MB
部署 ARM64 Linux机顶盒 ✅ 资源充足 需确认系统版本

3.2 资源消耗预估

资源 需求 说明
RAM ~2GB NapCat 60MB + Node.js 30MB + Embedding 1.2GB + DB缓存
磁盘 ~300MB(模型可外置) NapCat 80MB + DB 189MB + 模型 610MB(可选)
网络 外网访问 LLM API + NapCat登录
CPU ARM64,无特殊要求 嵌入推理CPU足够

3.3 风险与应对

风险 等级 应对措施
QQ小号被封 中高 准备2~3个备用号,先养号再使用
NapCat协议被封堵 社区活跃,更新及时
LLM API不稳定 准备多家Key(DeepSeek/硅基流动/通义)
硬件故障 数据库可备份迁移

四、功能需求清单(优先级分级)

P0 – 必须实现

  • □ 

    NapCat 启动 + 扫码登录 + 维持在线

  • □ 

    通过 WebSocket 接收群消息/私聊并发送回复

  • □ 

    调用 LLM API 生成回复(无延迟控制)

  • □ 

    配置化管理(API Key、目标群号、端口等)

P1 – 拟人化增强

  • □ 

    Timing Agent:基于消息长度、时段、连发状态、对话轮次动态调整等待时间,并引入5%忽略概率

  • □ 

    对话上下文追踪(最近N条消息,维护会话状态)

  • □ 

    多媒体消息识别(图片/文件/表情,合理忽略或提示)

P2 – 个性化(RAG + 风格)

  • □ 

    RAG检索本地历史对话库,召回Top-5相关片段

  • □ 

    系统Prompt融入目标说话风格(简短、口头禅、吐槽)

  • □ 

    将RAG结果作为Few-shot示例拼入Prompt

P3 – 运维保障

  • □ 

    心跳保活(NapCat异常自动重启)

  • □ 

    日志记录(收到消息、回复、API调用量)

  • □ 

    错误重试与降级回复

  • □ 

    群白名单机制

P4 – 未来扩展(可选)

  • 私聊应答、图片生成、命令系统、群管理、Web面板等


五、核心组件设计

5.1 NapCat 配置

  • 项目NapCatQQ

  • 安装git clone + pnpm install + pnpm build:shell

  • 运行:Node.js 18+,默认 WebSocket 地址 ws://127.0.0.1:3001

  • 内存:约50~100MB

  • 登录:终端扫码

5.2 Bot 调度器(Node.js)

使用 npm 包:

  • ws – WebSocket 客户端

  • better-sqlite3 + sqlite-vec – 向量检索

  • openai – LLM API 调用(兼容接口)

核心文件结构:

text

~/qq-bot/
├── package.json
├── config.js         # 所有配置项
├── index.js          # 入口,WS连接与消息循环
├── timing.js         # 规则引擎(延迟/忽略)
├── rag.js            # RAG检索封装
├── llm.js            # LLM调用封装
├── context.js        # 上下文管理
└── tools/status.js   # 健康检查

5.3 Timing Agent 规则(示例)

text

收到消息 → 计算等待时间(秒):
  1. 消息长度 ≤2字  → 3~7s
  2. 长度 11~20字   → 22±10s
  3. 长度 ≥21字     → 60±20s
  4. 深夜 (23~1点)  → ×0.5
  5. 同一人连发     → 1~3s (秒跟)
  6. 对话已超50条   → ×1.5 (疲劳)
  7. 5% 概率        → 忽略不回复
  8. 极长延迟 (P95) → 2~70分钟(模拟忙碌)

5.4 RAG 检索参数

  • 嵌入模型:Qwen3-Embedding-0.6B (GGUF Q8_0)

  • 向量维度:1024

  • 检索方式:sqlite-vec 的 ANN 索引,单次耗时 ~0.09s

  • 数据库:约18k个chunk,总大小189MB

  • 召回数量:Top-5

5.5 LLM Prompt 模板(脱敏版)

text

系统: 你正在模仿一位群友的说话风格。其特点:
- 句子简短,平均6~7字
- 常用口头禅:吼吼、啊这、离谱、确实、妈的
- 爱吐槽,极少提问,多为陈述/感慨
- 与群内某位好友关系熟络,对话随意

历史相关对话 (RAG召回):
{rag_chunks}

当前说话人: {sender} 说: {message}
你的回复:

六、实施计划(预估5天)

阶段 任务 耗时
Day1 环境准备:安装Node.js、NapCat、扫码登录、拷贝嵌入模型与DB、启动Embedding Server 1天
Day2-3 调度器开发:WS连接、消息解析、Timing规则、RAG模块、LLM调用、集成调试 2天
Day4 Prompt调优:风格注入、RAG格式、长度控制、多场景测试 1天
Day5 上线打磨:小群实测、参数调整、错误处理、日志监控 1天

最快Demo:若不使用RAG和Timing,仅NapCat + LLM直调,1~2小时即可跑通。


七、成本预估

项目 费用
NapCat 免费开源
本地Embedding 免费(CPU推理)
LLM API(DeepSeek) ~¥1/百万token,日常用量极低
机顶盒电费 可忽略
QQ小号 免费(需自行注册)
总计 接近零成本

八、已有资产(可直接复用)

  • 历史聊天数据(脱敏后用于构建向量库)

  • 预生成的向量数据库(189MB,含约1.8万条块)

  • Qwen3-Embedding GGUF 模型文件

  • RAG查询脚本(已调优ANN索引)

  • 聊天特征分析报告(用于制定Timing规则)

  • NapCat源码(已拉取)

需新准备

  • 外部LLM API Key(推荐硅基流动领取免费额度)

  • 机顶盒系统确认(uname -m 是否为 aarch64

  • 备用QQ小号2~3个


九、开发建议

  1. 先跑通再完善 – 首日先实现 NapCat + 基础LLM回复,能说话再逐步添加Timing和RAG。

  2. API Key优先 – 没有Key无法调用LLM,建议提前注册。

  3. 注意账号安全 – 小号需正常养号,避免频繁操作触发风控。

  4. 日志一定要加 – 方便调试和监控,尤其在生产群中。


十、总结

本方案提供了一个低成本、可落地、高度拟人化的群聊AI机器人完整架构,充分利用了本地RAG和轻量级嵌入模型,在ARM64设备上即可流畅运行。通过灵活的规则引擎和外部LLM API,既可保证回复质量,又能模拟人类响应节奏,适合社群娱乐、内部测试等场景。

技术栈亮点:Node.js + NapCat + sqlite-vec + GGUF嵌入式 + 外部LLM
部署形态:纯本地(除LLM API外无云端依赖),数据自主可控。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐