# 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处理 ## 许可证 本插件遵循项目主许可证。