Files
2025-12-03 15:48:44 +08:00

201 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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处理
## 许可证
本插件遵循项目主许可证。