QQ LLM机器人(NapCat/OneBot)
一个基于NapCat(OneBot)的实用QQ机器人,由OpenAI兼容的LLM提供支持。包括MCP工具、提醒和日常使用统计数据(愿景通过MCP提供)。
特性
- NapCatQQ(OneBot)接收/发送
- 分组路由模式:提及/关键字/全部
- 提及/关键字后的小组跟进窗口(继续回复几圈,不再提及)
- 提醒:在私人或群聊中创建/列出/取消提醒
- 可选MCP工具(外部工具服务器)
- 每日每个用户的使用统计数据(令牌/调用/工具调用)保存到CSV
项目布局
src/TypeScript源代码dist/构建输出(npm run build)data/运行时数据(笔记、提醒、统计数据)。被git忽略了。prompts/系统提示文件knowledge/知识示例/RAG资源.env本地配置(被git忽略)和.env.example模板
需求
- Node.js 18+
- NapCatQQ在OneBot WebSocket事件+启用HTTP API的情况下运行
快速开始
npm install
cp .env.example .env
npm run doctor
npm run dev配置
复制 .env.example 到 .env 只改变自己的价值观。
NapCat/QQ
NAPCAT_HTTP_URLNapCat HTTP API基础URLNAPCAT_WS_URLNapCat WebSocket事件URLNAPCAT_HTTP_TOKEN/NAPCAT_WS_TOKEN可选令牌
- 如果不在中设置令牌 .env,机器人可以从本地NapCat OneBot配置(如果可用)自动加载它们。
BOT_QQ_ID可选(自动检测自self_id如果未设置)BOT_NAME机器人昵称(默认值:小助手)
LLM
LLM_BASE_URLOpenAI兼容网关基础URLLLM_API_KEYAPI密钥LLM_MODEL型号名称LLM_TEMPERATURE采样温度(默认值:0.3)
脚本
npm run dev # run bot in dev mode
npm run doctor # check NapCat HTTP/WS connectivity
npm run build # compile to dist/
npm run start # run dist/ output
npm run test # run tests组回复模式
GROUP_REPLY_MODE:
- mention (默认):提及时回复;如果已配置,还可以回复昵称/关键字 - keyword:当出现任何关键字时回复 - all:回复所有群消息
GROUP_KEYWORDS关键字数组(JSON)或逗号分隔列表GROUP_FOLLOWUP_TURNS触发后要处理的后续消息数(默认值:4)GROUP_FOLLOWUP_TTL_MS后续窗口TTL(毫秒)(默认值:120000)
使用统计数据(每日CSV)
- 机器人记录每个用户的每日使用统计数据:
- 如果网关返回,LLM调用和令牌(提示/完成/总计) usage - 工具调用计数(包括MCP和内置工具)
- 文件写入到:
- STATS_DIR/YYYY-MM-DD.csv (推荐)或 DATA_DIR/stats/YYYY-MM-DD.csv 默认情况下
- 聊天中的查询:
- token统计 / 今日统计 / 我的统计 / 今日用量 / 我的用量
系统提示
选择一个:
SYSTEM_PROMPT_FILE=prompts/system.txt(推荐)SYSTEM_PROMPT=...
MCP(可选外部工具)
此项目使用 mcp.servers.json 启动/连接MCP服务器。一台服务器可以暴露多个工具,机器人通过以下方式发现它们 listTools.
例子:
{
"servers": [
{
"name": "tools",
"command": "node",
"args": ["dist/mcp/servers/tools.js"],
"enabled": true,
"tools": {
"weather_query": true,
"web_search": true
}
}
]
}enabled:启用/禁用整个服务器tools:可选。两种模式:
- 允许列表:如果有值 true,仅标记工具 true 已启用 - Denylist:如果没有 true,默认情况下启用所有工具;集 false 禁用特定工具
安全说明
- 永不承诺
.env或任何真正的API密钥。此回购忽略.env和.env.*默认情况下,并保持.env.example. - 如果你不小心将一个密钥推送到GitHub,请立即旋转它,并在需要时重写历史记录。
- 本地NapCat捆绑包(
NapCat.Shell.Windows.Node/)以及运行时数据(data/)被忽略以避免泄露令牌和聊天日志。
故障排除
- HTTP显示
403 token verify failed:setNAPCAT_HTTP_TOKEN正确地。 - Bot收到消息但不回复:检查路由模式(
GROUP_REPLY_MODE)以及该消息是否触发了提及/关键字逻辑。
学分
- NapCatQQ(OneBot/NTQQ协议端):https://github.com/NapNeko/NapCatQQ
