- 版权类型
- 原创
- 前置组件
- [必装]SparkBridge3 - https://www.minebbs.com/resources/sparkbridge-bot-qq.15586
- 适配版本(基岩)
- 最新版本
- 全版本
[MD]
# QQAIChatEx 插件介绍
QQAIChatEx 是一个基于 Spark 框架的 QQ 机器人插件,为 QQ 群聊和私聊接入大语言模型 AI 对话能力。
它支持自然语言聊天、知识库检索、历史记录查询、多模式触发响应以及对话记忆管理,适合用于群聊智能助手、客服机器人、规则查询等场景。
---
## 功能介绍
### 1. AI 智能对话
- 调用大语言模型 API 进行自然语言生成回复
- 支持自定义系统提示词,可设定 AI 的角色、语气、行为规范
- 可调整模型温度(创造性)、最大 Token 数等参数
- 支持自定义知识库、工具
### 2. 工具调用扩展
插件内置了两个核心工具,AI 可根据用户问题自动判断并调用:
| 工具名称 | 功能说明 |
|---------|----------|
| `query_knowledge_data` | 根据关键词搜索知识库内容,支持 `all` 获取全部、空格分隔多关键词,按匹配度排序 |
| `query_chat_data` | 获取当前对话的历史消息记录,支持自定义获取数量和排序方向(从旧到新/从新到旧) |
### 3. 多模式触发响应
- **关键词触发**:消息包含指定关键词时响应(如“兮兮”、“服务器”)
- **@触发**:仅在被人 @ 时响应
- **全量接收**:接收群内所有消息并响应(可单独开启)
- 群聊和私聊可分别配置,互不影响
### 4. 对话记忆管理
- 自动保存每个对话的完整消息历史
- 记忆长度可配置,超出长度后自动裁剪
- 支持记忆备份功能:裁剪的记忆可存入回收站目录,防止丢失
- 记忆持久化存储到本地 JSON 文件,重启不丢失
### 5. 消息格式化
- 输入时自动添加发送者昵称、QQ号和发送时间,让 AI 了解对话角色
- 支持图片、语音、视频等多模态输入(可单独开关)
- 连续文本片段自动合并,减少 API 调用冗余
- @消息自动转换为被@用户的昵称,便于 AI 理解对话对象
### 6. 分段回复
- 支持按标点符号(句号、分号、换行等)分割长回复
- 分段发送,每条消息之间可设置延迟,模拟真人聊天节奏,避免刷屏感
---
## 图片展示
[/MD]
(分段发送 知识库调用 和 历史聊天记录获取)
(配置文件)
[MD] --- ## 配置项目介绍 配置文件位于 `Config/config.js`,主要包含以下配置块: ### 1. AI 配置 (`ai`) | 配置项 | 类型 | 说明 | |--------|------|------| | `key` | string | API 请求密钥 | | `url` | string | API 端点地址 | | `name` | string | 模型名称 | | `maxTokens` | number | 最大输出 Token 数,默认 5000 | | `temperature` | number | 模型温度(创造性),值越高回复越随机 | | `system` | string | 系统提示词,定义 AI 的角色、说话方式、行为约束 | | `tools` | object | 工具定义引用 | | `knowledge` | object | 知识库引用 | ### 2. 响应设置 (`call`) | 配置项 | 说明 | |--------|------| | `group.enable` | 群聊总开关 | | `group.keywords` | 触发关键词数组 | | `group.at` | 是否仅在被 @ 时响应 | | `group.all` | 是否接收群内所有消息 | | `group.data` | 允许响应的群号集合,支持 `"all"` 通配 | | `private.enable` | 私聊总开关 | | `private.data` | 允许响应的好友 QQ 号集合 | ### 3. 输入设置 (`input`) | 配置项 | 说明 | |--------|------| | `msgFormat` | 是否在消息前添加 `[时间][昵称(QQ号)] >>` 格式 | | `chatList` | 输入中携带的历史消息条数 | | `type.image` | 是否允许图片输入(多模态) | | `type.audio` | 是否允许语音输入 | | `type.video` | 是否允许视频输入 | ### 4. 回复设置 (`reply`) | 配置项 | 说明 | |--------|------| | `tokenInfo` | 是否在回复中显示 Token 消耗和预估费用 | | `linebreak.enable` | 是否启用分段回复 | | `linebreak.timeout` | 分段发送的间隔毫秒数 | | `linebreak.split` | 分割回复的正则表达式(如句号、换行) | ### 5. 记忆设置 (`memory`) | 配置项 | 说明 | |--------|------| | `length` | 每个对话保留的记忆条数 | | `bak` | 记忆清除时是否备份到回收站目录 | --- ## 文件架构介绍 ``` QQAIChatEx/ ├── index.js # 插件主入口,包含消息监听、API调用、记忆管理、消息格式化等核心逻辑 ├── spark.json # 插件元信息(名称、作者、版本、加载模式等) ├── Config/ # 配置目录 │ ├── config.js # 主配置文件(AI参数、响应规则、记忆设置等) │ ├── tools.js # 工具定义与实现(知识库查询、聊天记录获取) │ └── knowledge.js # 知识库数据文件(默认示例数据,可按需扩展) ├── memory/ # 对话记忆存储目录(自动生成) │ └── {chatId}.json # 各对话的历史消息记录文件 └── memory_bak/ # 记忆备份目录(自动生成,裁剪的记忆移入此处) ``` ### 各文件职责说明 | 文件 | 职责 | |------|------| | `index.js` | 插件启动入口,注册 Spark 事件监听(群聊/私聊),协调消息流转、API 调用、工具执行和回复发送 | | `spark.json` | 插件声明文件,定义加载方式、优先级、权限等框架级配置 | | `config.js` | 用户配置中心,调整 AI 行为、响应规则、输入输出格式等 | | `tools.js` | 导出工具定义(供 AI 识别)和工具实现(供插件执行),工具返回结果后自动递归调用 AI 继续对话 | | `knowledge.js` | 知识库数据源,支持关键词检索和相关性排序,可替换为数据库或远程 API | | `memory/` | 持久化存储每条对话的历史记录,确保插件重启后上下文不丢失 | | `memory_bak/` | 回收站,存放被裁剪溢出的旧记忆,便于回溯或恢复 | --- ## 快速开始 1. 将插件放入 Spark 框架的插件目录 2. 编辑 `Config/config.js`: - 填写正确的 AI API 地址和密钥 - 配置需要响应的群号/好友号 - 按需修改系统提示词和触发方式 3. 编辑 `Config/knowledge.js`,填入你的知识库内容(如服务器规则、常见问题等) 4. 重启 Spark 框架,插件自动加载生效 ## 依赖环境 - Spark 框架(支持 `spark.on` 事件监听和 `spark.QClient` 接口) - Node.js 环境 - 可访问的 AI API 服务(兼容 OpenAI API 格式) ## 注意事项 - 请遵守相关平台使用规范,合理配置响应频率和触发方式,避免被判定为机器人账号 - API 密钥请妥善保管,勿提交至公开代码仓库 - 多模态输入(图片/语音/视频)需要模型具备对应能力支持 - 知识库默认存储在内存中,大量数据时可考虑迁移至数据库 [/MD]
(分段发送 知识库调用 和 历史聊天记录获取)
(配置文件)
[MD] --- ## 配置项目介绍 配置文件位于 `Config/config.js`,主要包含以下配置块: ### 1. AI 配置 (`ai`) | 配置项 | 类型 | 说明 | |--------|------|------| | `key` | string | API 请求密钥 | | `url` | string | API 端点地址 | | `name` | string | 模型名称 | | `maxTokens` | number | 最大输出 Token 数,默认 5000 | | `temperature` | number | 模型温度(创造性),值越高回复越随机 | | `system` | string | 系统提示词,定义 AI 的角色、说话方式、行为约束 | | `tools` | object | 工具定义引用 | | `knowledge` | object | 知识库引用 | ### 2. 响应设置 (`call`) | 配置项 | 说明 | |--------|------| | `group.enable` | 群聊总开关 | | `group.keywords` | 触发关键词数组 | | `group.at` | 是否仅在被 @ 时响应 | | `group.all` | 是否接收群内所有消息 | | `group.data` | 允许响应的群号集合,支持 `"all"` 通配 | | `private.enable` | 私聊总开关 | | `private.data` | 允许响应的好友 QQ 号集合 | ### 3. 输入设置 (`input`) | 配置项 | 说明 | |--------|------| | `msgFormat` | 是否在消息前添加 `[时间][昵称(QQ号)] >>` 格式 | | `chatList` | 输入中携带的历史消息条数 | | `type.image` | 是否允许图片输入(多模态) | | `type.audio` | 是否允许语音输入 | | `type.video` | 是否允许视频输入 | ### 4. 回复设置 (`reply`) | 配置项 | 说明 | |--------|------| | `tokenInfo` | 是否在回复中显示 Token 消耗和预估费用 | | `linebreak.enable` | 是否启用分段回复 | | `linebreak.timeout` | 分段发送的间隔毫秒数 | | `linebreak.split` | 分割回复的正则表达式(如句号、换行) | ### 5. 记忆设置 (`memory`) | 配置项 | 说明 | |--------|------| | `length` | 每个对话保留的记忆条数 | | `bak` | 记忆清除时是否备份到回收站目录 | --- ## 文件架构介绍 ``` QQAIChatEx/ ├── index.js # 插件主入口,包含消息监听、API调用、记忆管理、消息格式化等核心逻辑 ├── spark.json # 插件元信息(名称、作者、版本、加载模式等) ├── Config/ # 配置目录 │ ├── config.js # 主配置文件(AI参数、响应规则、记忆设置等) │ ├── tools.js # 工具定义与实现(知识库查询、聊天记录获取) │ └── knowledge.js # 知识库数据文件(默认示例数据,可按需扩展) ├── memory/ # 对话记忆存储目录(自动生成) │ └── {chatId}.json # 各对话的历史消息记录文件 └── memory_bak/ # 记忆备份目录(自动生成,裁剪的记忆移入此处) ``` ### 各文件职责说明 | 文件 | 职责 | |------|------| | `index.js` | 插件启动入口,注册 Spark 事件监听(群聊/私聊),协调消息流转、API 调用、工具执行和回复发送 | | `spark.json` | 插件声明文件,定义加载方式、优先级、权限等框架级配置 | | `config.js` | 用户配置中心,调整 AI 行为、响应规则、输入输出格式等 | | `tools.js` | 导出工具定义(供 AI 识别)和工具实现(供插件执行),工具返回结果后自动递归调用 AI 继续对话 | | `knowledge.js` | 知识库数据源,支持关键词检索和相关性排序,可替换为数据库或远程 API | | `memory/` | 持久化存储每条对话的历史记录,确保插件重启后上下文不丢失 | | `memory_bak/` | 回收站,存放被裁剪溢出的旧记忆,便于回溯或恢复 | --- ## 快速开始 1. 将插件放入 Spark 框架的插件目录 2. 编辑 `Config/config.js`: - 填写正确的 AI API 地址和密钥 - 配置需要响应的群号/好友号 - 按需修改系统提示词和触发方式 3. 编辑 `Config/knowledge.js`,填入你的知识库内容(如服务器规则、常见问题等) 4. 重启 Spark 框架,插件自动加载生效 ## 依赖环境 - Spark 框架(支持 `spark.on` 事件监听和 `spark.QClient` 接口) - Node.js 环境 - 可访问的 AI API 服务(兼容 OpenAI API 格式) ## 注意事项 - 请遵守相关平台使用规范,合理配置响应频率和触发方式,避免被判定为机器人账号 - API 密钥请妥善保管,勿提交至公开代码仓库 - 多模态输入(图片/语音/视频)需要模型具备对应能力支持 - 知识库默认存储在内存中,大量数据时可考虑迁移至数据库 [/MD]