Skip to content

QQ 机器人项目方案书

🕒 Published at:

QQ 机器人项目方案书 ​

2026-07-10 ​


一、项目概述 ​

目标 ​

搭建一个能模仿廖建军说话风格的 QQ 群聊 AI 机器人,部署在 ARM64 机顶盒上,使用小号 QQ 接入。

整体架构 ​

      机顶盒 (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/硅基流动等)

二、可行性分析 ​

2.1 技术可行性 ​

模块技术方案可行性风险
QQ 协议接入NapCat (NTQQ 无头)✅ 成熟⚠️ 小号可能被风控,需准备替补号
消息收发OneBot V11 WebSocket✅ 标准协议无
回复时机决策规则引擎 (基于数据分析)✅ 50行 if-else可能需要迭代调参
回复内容生成外部 LLM API✅ 通用方案依赖 API 可用性/成本
RAG 检索sqlite-vec (本地)✅ 已验证 0.09s无
嵌入服务Qwen3-Embedding-0.6B GGUF CPU✅ 已验证 0.11s占用 ~1.2GB RAM
数据存储SQLite 向量库 (189MB)✅ 已验证无
部署环境ARM64 Linux 机顶盒 8GB✅ 资源充足需要确认具体系统版本

2.2 资源可行性 ​

资源要求说明
RAM~2GB 总占用NapCat 60MB + Node.js 30MB + Embedding 1.2GB + DB 200MB
磁盘~300MBNapCat 80MB + DB 189MB + 模型 610MB (可外置)
网络需访问外网调 LLM API 和 NapCat 登录
CPUARM64 无特殊要求Embedding CPU 推理可接受 (0.11s/次)
LLM API需准备 KeyDeepSeek / 硅基流动 / OpenAI 等

2.3 风控风险 ​

风险等级应对
QQ 小号被封⚠️ 中高准备 2-3 个备用小号,养号后再用
NapCat 协议被腾讯封堵⚠️ 低NapCat 社区活跃,更新及时
LLM API 不稳定/涨价⚠️ 低多备几家的 Key,可切换
机顶盒硬件故障✅ 低SQLite DB 可随时备份迁移

三、功能需求清单 ​

P0 - 核心功能 (必须) ​

  • [ ] QQ 协议对接: NapCat 启动 + 扫码登录 + 稳定在线
  • [ ] 消息收发: 通过 WebSocket 接收群消息/私聊,发送回复
  • [ ] 基本回复: 调用 LLM API 生成回复并发送(无延迟控制)
  • [ ] 配置化: API Key、目标群号、QQ 号等通过配置文件管理

P1 - 拟人化 (定时决策) ​

  • [ ] Timing Agent 规则引擎:
    • 对方消息长度 → 等待时间映射
    • 时间段调整(深夜回复更快)
    • 连发模式检测(同人连发则秒跟)
    • 长话题疲劳(50条+对话减速)
    • 5% 概率忽略/不回复
  • [ ] 对话上下文追踪: 记录最近 N 条消息,维护会话状态
  • [ ] 多媒体消息处理: 识别图片/文件/表情消息并合理忽略或回复

P2 - 个性化 (RAG + 风格) ​

  • [ ] RAG 检索接入: 查询本地嵌入库,召回相关历史对话
  • [ ] 风格 Prompt: 系统提示词融入廖建军说话特征(简短、吼吼、吐槽)
  • [ ] RAG 结果注入: 检索到的历史对话作为 Few-shot 示例拼入 Prompt

P3 - 运营保障 ​

  • [ ] 心跳保活: NapCat 异常退出自动重启
  • [ ] 日志系统: 记录收到的消息、回复、API 调用量
  • [ ] 错误处理: API 调用失败重试、降级回复
  • [ ] 群白名单: 只回复指定群的消息

P4 - 未来扩展 (可选) ​

  • [ ] 私聊应答: 支持私聊场景
  • [ ] 图片生成: 接入 Stable Diffusion API / Flux
  • [ ] 命令系统: /help、/status 等管理命令
  • [ ] 群管功能: 签到、关键词回复等
  • [ ] Web 管理面板: 查看日志、调整参数

四、组件详情 ​

4.1 NapCat ​

项目内容
项目地址https://github.com/NapNeko/NapCatQQ
安装方式git clone + pnpm install + pnpm build:shell
运行时Node.js 18+
默认配置WebSocket Server: ws://127.0.0.1:3001
内存占用50~100MB
登录方式终端扫码

4.2 Bot 调度器 (Node.js) ​

依赖 3 个 npm 包:

  • ws — WebSocket 连接 NapCat
  • better-sqlite3 + sqlite-vec — RAG 检索
  • openai — LLM API 调用

核心文件:

文件用途
index.js入口,WebSocket 连接 + 消息循环
config.jsAPI Key、目标群号、端口等配置
timing.js定时决策规则引擎 (约 50 行)
rag.jsRAG 检索封装
llm.jsLLM API 调用封装
context.js对话上下文追踪

4.3 Timing Agent 规则 (从数据分析得来) ​

收到消息 → 判断:
  1. 对方消息长度 ≤2字 → wait = 3~7s (P50~P75)
  2. 对方消息长度 11~20字 → wait = 22±10s
  3. 对方消息长度 21+字 → wait = 60±20s
  4. 深夜 23~1点 → wait × 0.5
  5. 连发中(同人连续发) → wait = 1~3s
  6. 话题已持续 50+条 → wait × 1.5
  7. 5% 概率 → ignore (不回)
  8. P95 以上延迟 → 随机 2~70 分钟 (模拟忽略/忙)

4.4 RAG 检索 ​

项目数值
嵌入模型Qwen3-Embedding-0.6B
向量维度1024
检索方式ANN (vec0 MATCH), 0.09s
库大小189MB, 17,846 chunks
召回数量Top-5

4.5 LLM API ​

推荐选项:

平台优势费用
DeepSeek便宜、中文好~¥1/百万 token
硅基流动注册送额度、国内直连免费额度用完即付
OpenAI质量最高贵
通义千问便宜阿里系

建议 Prompt 模板:

系统: 你正在模仿廖建军说话。他的特点:
- 说话简短,平均6-7个字
- 常用词: 吼吼、啊这、离谱、妈的、确实
- 爱吐槽、秒回
- 极少问问题,大部分是陈述/吐槽
- 和好友刘剑戈很熟,对话随意

历史相关对话:
{rag_chunks}

刘剑戈说: {message}
廖建军说:

五、实施计划 ​

阶段一:环境准备 (1天) ​

任务时间
机顶盒装 Node.js 18+10min
下载 NapCat 源码 + 构建30min
扫码登录 NapCat,确认 WS 正常10min
Python 环境 + sqlite-vec 依赖10min
拷贝 Embedding GGUF + DB + 模型到机顶盒30min
启动 Embedding Server 验证5min

阶段二:调度器开发 (2天) ​

任务时间
搭建项目骨架 (package.json + 入口)30min
WebSocket 连接 NapCat + 心跳1h
消息接收解析 + 过滤 + 上下文追踪1h
Timing Agent 规则引擎1h
RAG 检索模块1h
LLM API 调用模块1h
指令发送 (send_group_msg)30min
配置化 (config.js)30min
端到端集成调试2h

阶段三:Prompt 调优 (1天) ​

任务时间
基础风格 Prompt 编写1h
RAG 上下文注入格式调优1h
不同场景测试 (闲聊/吐槽/问问题)2h
回复长度控制调优1h
反复迭代3h

阶段四:上线打磨 (1天) ​

任务时间
实际群聊测试 (加小群试跑)半天
参数调整 (Timing 延迟/忽略概率)半天
错误处理加固1h
日志 + 监控1h

总计: ~5 天 ​


六、开发周期估算 ​

场景新手有经验说明
全功能上线7-10天3-5天含调参迭代
仅基础功能 (无 RAG 无 Timing)2-3天1天收发消息 + API 调用
仅搭建 NapCat + 收发半天1-2小时

能最快跑通 demo 的方案: 装好 NapCat 后,写一个 50 行的 Node.js 脚本 (ws 库连 WebSocket → 收到消息 → 调 LLM API → 发回),不做 RAG 和 Timing,1-2 小时就能让机器人在群里说话。


七、费用预估 ​

项目费用
NapCat免费 (开源)
Embedding 本地推理免费
LLM API (DeepSeek)~¥1/百万 token,日常聊几乎免费
机顶盒电费忽略不计
QQ 小号免费 (需自备)
总计几乎零成本

八、已有资产清单 ​

已就绪 (可直接使用) ​

资产路径/说明
聊天数据QQ: 378,044条 / 微信: 362,523条
嵌入数据库workspace/07_rag_embedding/stores/qwen_persona_rag.sqlite (189MB)
嵌入模型D:\models\qwen3-embedding-0.6b-q8_0.gguf (610MB)
RAG 查询脚本scripts/query_rag.py (已修复 ANN 索引)
聊天特征分析workspace/90_logs/聊天特征分析.md
数据清理记录workspace/90_logs/数据清理记录.md
NapCat 源码D:\files\qwen-chat\napcat\ (已拉取)

需准备 ​

事项说明
LLM API KeyDeepSeek / 硅基流动 等
机顶盒系统确认确认 Linux ARM64 版本
QQ 小号准备 2-3 个备用
Node.js 18+机顶盒上安装

九、文件清单 (Bot 代码) ​

~/qq-bot/
├── package.json        # 依赖: ws + better-sqlite3 + sqlite-vec + openai
├── config.js           # 配置 (API Key, 群号, 端口等)
├── index.js            # 主入口 (约 50 行)
├── timing.js           # 定时决策规则 (约 50 行)
├── rag.js              # RAG 检索 (约 40 行)
├── llm.js              # LLM API 调用 (约 30 行)
├── context.js          # 对话上下文追踪 (约 40 行)
└── tools/
    └── status.js       # 状态检查脚本

十、最终建议 ​

  1. 先跑通再优化 — 第一天先把 NapCat + 基础 LLM 回复跑起来,能说话再慢慢加 Timing 和 RAG
  2. 要个 API Key 先 — 没有 Key 什么都干不了,建议现在就去硅基流动注册拿免费额度
  3. 机顶盒先确认系统 — uname -m 看是不是 aarch64,apt 能不能用