feat:初版
This commit is contained in:
200
plugins/AutoReply/README.md
Normal file
200
plugins/AutoReply/README.md
Normal file
@@ -0,0 +1,200 @@
|
||||
# AutoReply 插件
|
||||
|
||||
基于双LLM架构的智能自动回复插件,让机器人能够智能判断并主动参与群聊。
|
||||
|
||||
## 功能特色
|
||||
|
||||
- **双LLM架构**:小模型快速判断 + 大模型生成高质量回复
|
||||
- **多维度评估**:从5个维度智能评估是否需要回复
|
||||
- **精力系统**:自动控制回复频率,避免过度活跃
|
||||
- **群聊隔离**:每个群聊独立状态管理
|
||||
- **白名单支持**:可限制插件作用范围
|
||||
|
||||
## 工作原理
|
||||
|
||||
```
|
||||
群聊消息 → 小模型判断(5维度评分) → 超过阈值 → 触发AIChat生成回复
|
||||
```
|
||||
|
||||
### 判断维度
|
||||
|
||||
1. **内容相关度** (0-10分):消息是否有趣、有价值、适合回复
|
||||
2. **回复意愿** (0-10分):基于当前精力状态的回复意愿
|
||||
3. **社交适宜性** (0-10分):回复是否符合群聊氛围
|
||||
4. **时机恰当性** (0-10分):考虑频率控制和时间间隔
|
||||
5. **对话连贯性** (0-10分):与上次回复的关联程度
|
||||
|
||||
## 配置说明
|
||||
|
||||
### 必要配置
|
||||
|
||||
1. **启用插件**:`enabled = true`
|
||||
2. **配置判断模型API**:
|
||||
```toml
|
||||
[basic]
|
||||
judge_api_url = "https://api.openai.com/v1/chat/completions"
|
||||
judge_api_key = "your-api-key-here"
|
||||
judge_model = "gpt-4o-mini" # 建议使用小模型
|
||||
```
|
||||
|
||||
### 推荐模型
|
||||
|
||||
- **OpenAI**: gpt-4o-mini, gpt-3.5-turbo
|
||||
- **其他兼容API**: 任何支持OpenAI格式的小参数模型
|
||||
|
||||
### 可选配置
|
||||
|
||||
```toml
|
||||
[basic]
|
||||
reply_threshold = 0.6 # 回复阈值,越高越严格
|
||||
|
||||
[energy]
|
||||
decay_rate = 0.1 # 精力衰减速度
|
||||
recovery_rate = 0.02 # 精力恢复速度
|
||||
|
||||
[context]
|
||||
messages_count = 5 # 判断时考虑的历史消息数量
|
||||
|
||||
[rate_limit]
|
||||
min_interval = 10 # 最小判断间隔(秒),避免高频判断
|
||||
skip_if_judging = true # 如果正在判断中,跳过新消息
|
||||
|
||||
[whitelist]
|
||||
enabled = false # 是否启用白名单
|
||||
chat_list = [] # 白名单群聊ID列表
|
||||
|
||||
[weights]
|
||||
# 判断权重(总和必须为1.0)
|
||||
relevance = 0.25
|
||||
willingness = 0.20
|
||||
social = 0.20
|
||||
timing = 0.15
|
||||
continuity = 0.20
|
||||
```
|
||||
|
||||
## 使用指南
|
||||
|
||||
### 1. 安装配置
|
||||
|
||||
1. 确保已安装AIChat插件
|
||||
2. 配置`config.toml`中的判断模型API
|
||||
3. 设置`enabled = true`启用插件
|
||||
4. 可选:配置白名单限制作用范围
|
||||
|
||||
### 2. 工作流程
|
||||
|
||||
1. AutoReply插件(priority=90)先拦截群聊消息
|
||||
2. 使用小模型进行5维度评估
|
||||
3. 如果综合评分超过阈值,标记消息为`_auto_reply_triggered`
|
||||
4. AIChat插件识别标记,生成并发送回复
|
||||
5. 更新精力系统和回复统计
|
||||
|
||||
### 3. 与AIChat的配合
|
||||
|
||||
- AutoReply只负责**判断**是否需要回复
|
||||
- AIChat负责**生成**实际回复内容
|
||||
- 两者通过`_auto_reply_triggered`标记通信
|
||||
|
||||
## 精力系统
|
||||
|
||||
- **精力范围**:0.1 - 1.0
|
||||
- **消耗机制**:每次主动回复后精力下降
|
||||
- **恢复机制**:不回复时精力缓慢恢复
|
||||
- **每日重置**:每天额外恢复0.2精力
|
||||
|
||||
精力值影响"回复意愿"维度的评分,从而自然控制回复频率。
|
||||
|
||||
## 性能优化
|
||||
|
||||
### History监听模式(推荐)
|
||||
|
||||
插件采用**智能监听模式**,不是监听每条消息,而是监听history文件的变化:
|
||||
|
||||
1. **定时检查** (`check_interval`):
|
||||
- 默认每5秒检查一次history文件
|
||||
- 检测到有新的用户消息时,标记为"待判断"
|
||||
|
||||
2. **批量处理**:
|
||||
- 多条消息一起判断,而不是每条都判断
|
||||
- 只在有实际对话时才触发判断
|
||||
- 基于完整的对话上下文进行判断
|
||||
|
||||
3. **工作流程**:
|
||||
```
|
||||
用户发消息 → AIChat写入history → 定时任务检测到变化 →
|
||||
标记"待判断" → 下一条消息触发判断 → 调用小模型
|
||||
```
|
||||
|
||||
### 频率限制机制
|
||||
|
||||
为了避免高频消息导致API调用堆积,插件内置了多重保护:
|
||||
|
||||
1. **最小判断间隔** (`min_interval`):
|
||||
- 默认10秒,同一个群在10秒内只判断一次
|
||||
- 高频消息会被自动跳过,避免API堆积
|
||||
|
||||
2. **防抖机制** (`skip_if_judging`):
|
||||
- 如果正在判断中,跳过新消息
|
||||
- 避免并发调用小模型API
|
||||
|
||||
3. **监听模式** (`monitor_mode`):
|
||||
- 默认启用,只在检测到history变化时才判断
|
||||
- 避免每条消息都触发判断
|
||||
|
||||
### 调优建议
|
||||
|
||||
**如果用户高频发消息导致处理不过来**:
|
||||
- 保持 `monitor_mode = true`(默认)
|
||||
- 增加 `min_interval` 到 15-30秒
|
||||
- 增加 `check_interval` 到 10秒
|
||||
- 确保 `skip_if_judging = true`
|
||||
|
||||
**如果想更快响应**:
|
||||
- 减少 `check_interval` 到 3秒
|
||||
- 减少 `min_interval` 到 5秒
|
||||
- 但要注意API成本和性能
|
||||
|
||||
**如果想禁用监听模式(不推荐)**:
|
||||
- 设置 `monitor_mode = false`
|
||||
- 每条消息都会尝试判断(可能导致API堆积)
|
||||
|
||||
## 调试建议
|
||||
|
||||
1. **不回复任何消息**
|
||||
- 检查`enabled = true`
|
||||
- 确认判断模型API配置正确
|
||||
- 查看日志中的评分信息
|
||||
- 尝试降低`reply_threshold`
|
||||
|
||||
2. **回复过于频繁**
|
||||
- 提高`reply_threshold`
|
||||
- 增加`decay_rate`(精力消耗更快)
|
||||
- 减少`recovery_rate`(精力恢复更慢)
|
||||
- 增加`min_interval`(判断间隔更长)
|
||||
|
||||
3. **判断不准确**
|
||||
- 调整权重配置
|
||||
- 增加`messages_count`获取更多上下文
|
||||
- 检查判断模型是否合适
|
||||
|
||||
4. **高频消息处理不过来**
|
||||
- 增加`min_interval`到15-30秒
|
||||
- 确保`skip_if_judging = true`
|
||||
- 查看日志中的"跳过消息"信息
|
||||
|
||||
## 日志说明
|
||||
|
||||
- `🔥 AutoReply触发`:判断通过,触发回复
|
||||
- `AutoReply不触发`:判断未通过,不回复
|
||||
- 日志中包含评分和理由,便于调试
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **优先级设置**:AutoReply的priority(90)必须高于AIChat(50)
|
||||
2. **API成本**:每条消息都会调用判断模型API,注意成本控制
|
||||
3. **白名单模式**:建议先在测试群启用,稳定后再扩展
|
||||
4. **与@消息的关系**:被@的消息会跳过AutoReply,直接由AIChat处理
|
||||
|
||||
## 许可证
|
||||
|
||||
本插件遵循项目主许可证。
|
||||
Reference in New Issue
Block a user