feat:初版

This commit is contained in:
2025-12-03 15:48:44 +08:00
commit b4df26f61d
199 changed files with 23434 additions and 0 deletions

200
plugins/AutoReply/README.md Normal file
View 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处理
## 许可证
本插件遵循项目主许可证。