AutoReply 插件
基于双LLM架构的智能自动回复插件,让机器人能够智能判断并主动参与群聊。
功能特色
- 双LLM架构:小模型快速判断 + 大模型生成高质量回复
- 多维度评估:从5个维度智能评估是否需要回复
- 精力系统:自动控制回复频率,避免过度活跃
- 群聊隔离:每个群聊独立状态管理
- 白名单支持:可限制插件作用范围
工作原理
群聊消息 → 小模型判断(5维度评分) → 超过阈值 → 触发AIChat生成回复
判断维度
- 内容相关度 (0-10分):消息是否有趣、有价值、适合回复
- 回复意愿 (0-10分):基于当前精力状态的回复意愿
- 社交适宜性 (0-10分):回复是否符合群聊氛围
- 时机恰当性 (0-10分):考虑频率控制和时间间隔
- 对话连贯性 (0-10分):与上次回复的关联程度
配置说明
必要配置
- 启用插件:
enabled = true - 配置判断模型API:
[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格式的小参数模型
可选配置
[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. 安装配置
- 确保已安装AIChat插件
- 配置
config.toml中的判断模型API - 设置
enabled = true启用插件 - 可选:配置白名单限制作用范围
2. 工作流程
- AutoReply插件(priority=90)先拦截群聊消息
- 使用小模型进行5维度评估
- 如果综合评分超过阈值,标记消息为
_auto_reply_triggered - AIChat插件识别标记,生成并发送回复
- 更新精力系统和回复统计
3. 与AIChat的配合
- AutoReply只负责判断是否需要回复
- AIChat负责生成实际回复内容
- 两者通过
_auto_reply_triggered标记通信
精力系统
- 精力范围:0.1 - 1.0
- 消耗机制:每次主动回复后精力下降
- 恢复机制:不回复时精力缓慢恢复
- 每日重置:每天额外恢复0.2精力
精力值影响"回复意愿"维度的评分,从而自然控制回复频率。
性能优化
History监听模式(推荐)
插件采用智能监听模式,不是监听每条消息,而是监听history文件的变化:
-
定时检查 (
check_interval):- 默认每5秒检查一次history文件
- 检测到有新的用户消息时,标记为"待判断"
-
批量处理:
- 多条消息一起判断,而不是每条都判断
- 只在有实际对话时才触发判断
- 基于完整的对话上下文进行判断
-
工作流程:
用户发消息 → AIChat写入history → 定时任务检测到变化 → 标记"待判断" → 下一条消息触发判断 → 调用小模型
频率限制机制
为了避免高频消息导致API调用堆积,插件内置了多重保护:
-
最小判断间隔 (
min_interval):- 默认10秒,同一个群在10秒内只判断一次
- 高频消息会被自动跳过,避免API堆积
-
防抖机制 (
skip_if_judging):- 如果正在判断中,跳过新消息
- 避免并发调用小模型API
-
监听模式 (
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堆积)
调试建议
-
不回复任何消息
- 检查
enabled = true - 确认判断模型API配置正确
- 查看日志中的评分信息
- 尝试降低
reply_threshold
- 检查
-
回复过于频繁
- 提高
reply_threshold - 增加
decay_rate(精力消耗更快) - 减少
recovery_rate(精力恢复更慢) - 增加
min_interval(判断间隔更长)
- 提高
-
判断不准确
- 调整权重配置
- 增加
messages_count获取更多上下文 - 检查判断模型是否合适
-
高频消息处理不过来
- 增加
min_interval到15-30秒 - 确保
skip_if_judging = true - 查看日志中的"跳过消息"信息
- 增加
日志说明
🔥 AutoReply触发:判断通过,触发回复AutoReply不触发:判断未通过,不回复- 日志中包含评分和理由,便于调试
注意事项
- 优先级设置:AutoReply的priority(90)必须高于AIChat(50)
- API成本:每条消息都会调用判断模型API,注意成本控制
- 白名单模式:建议先在测试群启用,稳定后再扩展
- 与@消息的关系:被@的消息会跳过AutoReply,直接由AIChat处理
许可证
本插件遵循项目主许可证。