QQ Agent是一个基于NcatBot框架的QQ机器人,提供多种实用功能,包括链接管理、对联生成和表白功能。 后续会接入 RAG 功能以及 tool 功能,实现更加智能的对话和信息检索。
- Python 3.8+
- 安装了napcat服务端
- 克隆仓库到本地:
git clone https://github.com/WncFht/QQ-Agent/tree/main
cd QQ-Agent- 创建并激活虚拟环境(可选但推荐):
# 使用venv
python -m venv venv
# Windows激活
venv\Scripts\activate
# Linux/Mac激活
source venv/bin/activate
# 使用 conda 创建虚拟环境
conda create -n QQ-Agent python=3.12
conda activate QQ-Agent- 安装依赖:
pip install -r requirements.txt
sh install.sh- 配置机器人:
编辑bot/main.py文件,设置以下配置项:
CONFIG = {
"ws_uri": "ws://localhost:3001", # napcat服务器地址
"admin_qq": ["你的QQ号"], # 管理员QQ号列表
"bot_qq": "机器人QQ号", # 机器人QQ号
}- 运行机器人:
python main.pyNapcatBot支持以下插件:
-
LinkManager - 链接管理插件
- 添加、查看和搜索链接
- 链接有效性检查
- 群组隔离
-
CoupletPlugin - 对联插件
- 生成对联下联
- 随机对联生成
-
DeclarationPlugin - 表白插件
- 生成随机表白语句
- 指定表白对象
-
ChatbotPlugin - 聊天机器人插件
- 支持多种大语言模型 API(DeepSeek、GLM 等)
- 支持群聊和私聊对话
- 可通过 @API名称 指定使用的 API
-
DailySummaryPlugin - 群聊日报总结插件
- 自动记录群聊消息
- 定时或手动触发群聊总结
- 支持多种大语言模型 API
- 可配置总结间隔和触发条件
/add <链接URL> [-d 描述] [-t 标签1,标签2] [-a|-u] - 添加或更新链接
/view <链接URL> - 查看链接详情
/search <关键词> [-t 标签] - 搜索链接
/check_links - 手动检查链接有效性
对联 <上联> - 生成对应的下联
对对联 <上联> - 随机生成对应的下联
表白 <对象> - 向指定对象表白
@机器人 <内容> - 在群聊中与机器人对话
@机器人 @deepseek <内容> - 指定使用 DeepSeek API 回答
@机器人 @glm <内容> - 指定使用 GLM API 回答
私聊直接发送消息 - 在私聊中与机器人对话
总结 - 手动触发群聊总结(需要满足最小消息数量和时间间隔条件)
/help - 查看所有可用指令
网站 - 获取技术分享网站链接
公告 - 查看群公告
这是一个协作式的链接管理系统,允许多个用户共同维护和丰富链接资源。每个链接可以有多个用户的描述,并且支持标签系统进行分类。系统实现了严格的群组隔离,确保每个群只能访问其自己的链接资源。
- 链接:每个链接都有一个创建者,创建时间,以及可选的标签和描述。同时包含链接状态信息,包括有效性检查结果和最后检查时间。
- 描述:每个用户可以为链接添加一个描述,描述包含内容、作者和时间戳。
- 标签:链接可以有多个标签,所有用户都可以为链接添加新标签。
- 群组隔离:每个链接都属于特定的群组,只能在该群组内访问和管理。
- 链接状态:系统会定期检查链接的有效性,并在链接失效时通知创建者。
- 权限:
- 所有用户都可以添加新链接
- 用户只能编辑/更新自己的描述
- 所有用户都可以为任何链接添加标签
- 所有用户都可以查看本群内任何链接的完整信息
- 链接仅在其所属群组内可见
支持以下功能:
- 基本添加链接:
/add <链接URL>
- 添加链接和描述:
/add <链接URL> -d "这是一个描述"
- 添加链接、描述和标签:
/add <链接URL> -d "这是一个描述" -t "标签1,标签2,标签3"
- 追加新的描述(作为新用户):
/add <链接URL> -d "新的描述" -a
- 更新自己的描述:
/add <链接URL> -d "更新的描述" -u
参数说明:
-d或--desc: 添加描述-t或--tags: 添加标签(用逗号分隔)-a或--append: 作为新用户添加描述-u或--update: 更新自己的已有描述
注意事项:
-a和-u是互斥的,不能同时使用- 使用
-u时,必须是之前添加过描述的用户 - 不使用任何参数时,默认会更新用户已有的描述,或作为新描述添加
查看链接的完整信息:
/view <链接URL>
返回信息包括:
- 链接URL
- 创建者信息
- 创建时间
- 所有标签
- 所有用户的描述(按时间顺序)
示例输出:
链接详情:
URL: https://example.com
创建者: 用户A
创建时间: 2024-03-11 23:00:04
标签: Python, 教程, 技术
状态: 失效
失效时间: 2024-03-12 10:00:00
原因: HTTP状态码: 404
描述列表:
1. 用户A (2024-03-11 23:00:04):
这是一个很好的Python教程网站
2. 用户B (2024-03-11 23:05:04):
特别推荐它的异步编程部分
3. 用户C (2024-03-12 10:00:00):
代码示例非常清晰
支持以下功能:
- 基本关键词搜索:
/search <关键词>
- 按标签搜索:
/search <关键词> -t <标签>
搜索结果示例:
- https://example.com [标签: 技术, 教程]
描述 (用户1): 这是第一个描述
描述 (用户2): 这是追加的描述
- https://another-example.com [标签: 博客]
描述 (用户3): 这是一个技术博客
链接在JSON文件中的存储格式:
{
"url": "https://example.com",
"group_id": "1234567890",
"creator_id": "2130212584",
"creator_name": "创建者",
"created_at": "2024-03-11 23:00:04",
"last_checked": "2024-03-11 23:30:00",
"is_valid": true,
"status_message": "HTTP状态码: 200",
"invalid_since": null,
"tags": ["技术", "教程", "Python"],
"descriptions": [
{
"content": "这是第一个描述",
"user_id": "2130212584",
"username": "用户1",
"timestamp": "2024-03-11 23:00:04"
},
{
"content": "这是另一个用户的描述",
"user_id": "3456789012",
"username": "用户2",
"timestamp": "2024-03-11 23:05:04"
}
]
}系统会自动进行以下操作:
- 定期检查:每隔一小时自动检查所有链接的可访问性。
- 状态更新:
- 记录最后检查时间
- 更新链接状态(有效/无效)
- 记录状态信息(HTTP状态码或错误信息)
- 记录失效时间(如果链接失效)
- 失效通知:当链接失效时,系统会自动通过私信通知链接创建者。
查看链接时(使用/view命令)会显示链接的状态信息:
链接详情:
URL: https://example.com
创建者: 用户A
创建时间: 2024-03-11 23:00:04
标签: Python, 教程, 技术
状态: 失效
失效时间: 2024-03-12 10:00:00
原因: HTTP状态码: 404
描述列表:
1. 用户A (2024-03-11 23:00:04):
这是一个很好的Python教程网站
对于 "网站" 回复 https://wncfht.github.io/Awesome-Tech-Share/
对于 "公告" 回复
1. 写文章、笔记、想法等等/分享资料
2. 总结主要内容,提取两三个关键词,附上链接发在群里,要求是便于他人查询即可。每周群主/管理员会同一收集更新到网站上
3.另外聊天讨论技术分享比较好的可以@群主/管理员收录
每周更新后会统一@所有人查看最新的提交记录
使用 /help 查看所有可用指令及其用法说明。
当新用户进群时,机器人会发送欢迎消息:
欢迎你进入群聊!🎉🎉🎉
我是该群的机器人助手,这是我的使用帮助:
/help 查看所有可用指令
/add 添加链接
/search 搜索链接
ChatbotPlugin 是一个基于大语言模型的聊天机器人插件,支持多种 API 接口,可以在群聊和私聊中提供智能对话服务。
- 多 API 支持:支持 DeepSeek、GLM 等多种大语言模型 API,可以根据需要灵活切换。
- 群聊对话:在群聊中通过 @ 机器人触发对话。
- 私聊对话:在私聊中直接发送消息即可与机器人对话。
- 指定 API:可以通过
@api名称格式指定使用特定的 API 进行回答。
ChatbotPlugin 使用 .env 文件进行配置,支持以下配置项:
# DeepSeek API 配置
DEEPSEEK_API_KEY=your_deepseek_api_key_here
DEEPSEEK_BASE_URL=https://api.deepseek.com/v1/
DEEPSEEK_MODEL=deepseek-chat
DEEPSEEK_MAX_TOKENS=256
DEEPSEEK_TEMPERATURE=0.4
# GLM API 配置
GLM_API_KEY=EMPTY
GLM_BASE_URL=http://127.0.0.1:8000/v1/
GLM_MODEL=chatglm3-6b
GLM_MAX_TOKENS=256
GLM_TEMPERATURE=0.4
GLM_PRESENCE_PENALTY=1.2
GLM_TOP_P=0.8
# 默认使用的 API
DEFAULT_API=deepseek
首次运行时,插件会自动从 .env.example 创建 .env 文件,用户需要编辑该文件填入自己的 API 密钥。
-
群聊对话:
@机器人 你好,请介绍一下自己 -
指定 API 对话:
@机器人 @deepseek 请解释一下量子计算的基本原理 @机器人 @glm 写一首关于春天的诗 -
私聊对话: 直接在私聊中发送消息即可。
DailySummaryPlugin 是一个自动记录和总结群聊消息的插件,可以定时或手动触发生成群聊总结,帮助用户快速了解群聊中的重要讨论内容。
- 消息记录:自动记录群聊消息,包括发言人、时间和内容。
- 定时总结:根据配置的时间间隔自动生成群聊总结。
- 手动触发:通过关键词手动触发群聊总结。
- 多 API 支持:支持多种大语言模型 API 生成总结内容。
- 历史记录:保存上次总结时间,避免重复总结。
DailySummaryPlugin 使用 .env 文件和 config.json 进行配置:
# DeepSeek API 配置
DEEPSEEK_API_KEY=your_deepseek_api_key_here
DEEPSEEK_BASE_URL=https://api.deepseek.com/v1/
DEEPSEEK_MODEL=deepseek-chat
DEEPSEEK_MAX_TOKENS=512
DEEPSEEK_TEMPERATURE=0.4
# GLM API 配置
GLM_API_KEY=EMPTY
GLM_BASE_URL=http://127.0.0.1:8000/v1/
GLM_MODEL=chatglm3-6b
GLM_MAX_TOKENS=256
GLM_TEMPERATURE=0.4
# 默认使用的 API
DEFAULT_API=deepseek
{
"auto_summary_interval": 43200, // 自动总结间隔,12小时(秒)
"manual_summary_interval": 300, // 手动总结间隔,5分钟(秒)
"min_messages": 10, // 最小消息数量
"trigger_keywords": ["总结"], // 触发关键词
"storage_path": "message_logs", // 消息存储路径
"save_interval": 300 // 定期保存间隔(秒)
}-
手动触发总结: 在群聊中发送
总结关键词,插件会检查是否满足总结条件(时间间隔和最小消息数量),如果满足则生成并发送总结。 -
自动总结: 插件会根据配置的时间间隔自动生成群聊总结,无需手动触发。
-
总结内容: 总结内容包括各个时间段内的主要讨论主题和重要互动,忽略无意义的闲聊,总结在 200 字以内。
- 链接有效性检查
- 定期检查链接是否可访问
- 标记失效链接
- 自动通知创建者链接失效
- 记忆功能
- 记住用户偏好和历史对话
- 个性化回复
- 多轮对话支持
- 上下文理解
- 连续对话能力
- 知识库集成
- 接入自定义知识库
- 回答特定领域问题
- 总结模板定制
- 支持不同风格的总结
- 可配置总结长度和格式
- 重要消息提取
- 自动识别重要消息
- 关键信息高亮
- 多维度总结
- 按主题分类总结
- 按参与者分类总结
- 群组管理功能
- 管理员可以编辑/删除任何链接
- 批量导入/导出功能
- 定期数据备份
- 定期报告
- 每日/周/月精选链接
- 群聊活跃度分析
- 话题热度统计
- 链接内容预览
- 自动提取网页标题和描述
- 生成网页预览图
- 显示网页favicon
- 智能标签推荐
- 基于链接内容自动推荐标签
- 相似标签合并建议
- 标签规范化
- 搜索增强
- 支持高级搜索语法
- 搜索结果排序选项
- 搜索历史记录
- 多模态支持
- 图像识别和处理
- 语音转文字功能
- 文字转语音功能