AstrBot 群聊插件 (astrbot_plugin_group_chat)
一个真正强大的群聊交互插件,采用先进的AI算法实现拟人化的主动交互体验。
🌟 核心特性
🚀 先进的AI算法
- 多维度活跃度分析:基于时间窗口、用户参与度、消息质量、话题持续性等多重因素
- 语义相关性检测:采用结构化特征分析、上下文一致性、用户行为模式等智能方法
- 动态人格关键词:从机器人人格系统中智能提取关键词,实现个性化@检测
- 历史数据驱动:基于实际聊天记录进行学习和优化
🎯 智能回复决策系统
- 读空气功能:使用LLM判断聊天氛围,智能决定是否回复
- 多因素意愿计算:综合用户印象、群活跃度、疲劳度、连续对话等因素
- 心流算法:能量系统管理回复节奏,动态调整阈值和冷却时间
- 自适应阈值:根据历史表现动态调整决策参数
- 疲劳保护机制:防止过度回复,保持自然交互节奏
💬 高级交互模式
- 专注聊天模式:支持与特定用户的深度对话
- 观察模式:在低活跃度群组中自动进入观察状态
- 连续对话奖励:智能识别和奖励连续对话
- 消息质量评估:基于长度、互动性、情感表达等维度评估消息价值
📦 安装与部署
快速安装
# 1. 克隆插件到AstrBot插件目录
cd AstrBot/data/plugins
git clone https://github.com/qa296/astrbot_plugin_group_chat.git
# 2. 安装依赖(如果有)
cd astrbot_plugin_group_chat
pip install -r requirements.txt
# 3. 重启AstrBot并在WebUI中启用插件
⚙️ 配置详解
🎛️ 核心配置
{
"list_mode": "blacklist", // 名单模式:blacklist/whitelist
"groups": [], // 群组名单列表
"base_probability": 0.3, // 基础回复概率 (0.0-1.0)
"willingness_threshold": 0.5, // 回复意愿阈值 (0.0-1.0)
"max_consecutive_responses": 3, // 最大连续回复次数
"air_reading_enabled": true, // 启用读空气功能
"air_reading_no_reply_marker": "[DO_NOT_REPLY]", // 读空气不回复标记
"focus_chat_enabled": true, // 启用专注聊天
"min_interest_score": 0.6, // 最小兴趣度分数
"focus_timeout_seconds": 300, // 专注聊天超时时间(秒)
"focus_max_responses": 10, // 专注聊天最大回复次数
"fatigue_enabled": true, // 启用疲劳系统
"fatigue_threshold": 5, // 疲劳阈值
"fatigue_decay_rate": 0.5, // 疲劳度衰减率(每小时衰减的比例)
"fatigue_reset_interval": 6, // 疲劳度重置间隔(小时)
"memory_enabled": false, // 启用记忆系统(需要memora_connect)
"max_memories_recall": 10, // 最大回忆记忆数量
"impression_enabled": false, // 启用印象系统(需要memora_connect)
"observation_mode_threshold": 0.2, // 观察模式阈值(群活跃度低于此值时进入观察)
"heartbeat_threshold": 0.55, // 主动心跳触发门槛(0-1,越低越容易触发)
"at_boost_value": 0.5 // 被@时一次性增强幅度(0-1)
}
🚀 工作原理
📊 活跃度分析算法
活跃度分数 = 时间窗口权重 × 消息密度 + 用户参与度 × 多样性 + 消息质量 × 价值 + 话题持续性 × 连贯性
- 时间窗口分析:1分钟(40%) + 5分钟(30%) + 30分钟(20%) + 1小时(10%)
- 用户参与度:活跃用户数 / 10(标准化到0-1)
- 消息质量评估:基于长度、标点密度、互动性、情感表达
- 话题持续性:分析用户交互模式和对话连贯性
🎯 语义相关性检测
采用五维智能分析:
- 结构化特征分析:长度、标点密度、@提及、疑问句特征
- 上下文一致性分析:用户交互模式、消息长度模式、时间间隔
- 用户行为模式分析:互动频率、活跃度、响应模式
- 对话流分析:对话节奏、话题连贯性
- 时间相关性分析:消息间隔模式分析
🧠 动态关键词系统
- 人格提取:从人格名称、描述、提示词中智能提取关键词
- 配置覆盖:支持通过配置自定义关键词
⚡ 心流算法
采用能量系统实现自然对话节奏:
- 能量管理:回复消耗能量,活跃度恢复能量,保持0.1-1.0范围
- 动态冷却:根据群活跃度调整冷却时间,活跃时缩短冷却
- @增强:被@时立即获得0.5能量提升
- 连续惩罚:连续回复增加阈值,防止刷屏
- 相似度奖励:与最近回复相似度高的消息获得额外奖励
- 时间节奏:距离上次回复越近,阈值越高,实现自然间隔
📁 架构说明
🏗️ 核心组件
astrbot_plugin_group_chat/
├── main.py # 🎯 主插件入口
├── _conf_schema.json # ⚙️ 配置模式定义
├── src/
│ ├── active_chat_manager.py # 🎮 主动聊天管理器
│ ├── context_analyzer.py # 🔍 上下文分析器
│ ├── fatigue_system.py # 😴 疲劳系统
│ ├── focus_chat_manager.py # 🎯 专注聊天管理器
│ ├── frequency_control.py # 📊 频率控制(历史数据驱动)
│ ├── group_list_manager.py # 📋 群组名单管理器
│ ├── impression_manager.py # 👤 印象管理器
│ ├── interaction_manager.py # 💬 交互模式管理器
│ ├── memory_integration.py # 🧠 记忆集成
│ ├── response_engine.py # 💬 回复引擎
│ ├── state_manager.py # 💾 状态管理器
│ ├── utils.py # 🛠️ 工具函数
│ └── willingness_calculator.py # 🧮 意愿计算器(多维度分析+心流算法)
🔄 数据流
消息接收 → 上下文分析 → 活跃度计算 → 意愿评估 → 相关性检测 → 回复决策 → 状态更新
💾 数据存储
- 实时状态:内存缓存 + 文件持久化
- 历史数据:按群组和时间分片存储
- 用户画像:行为模式和偏好学习
- 配置缓存:动态配置热更新
🎮 使用示例
基础使用
- 自动激活:插件启动后自动开始监控活跃群组
- 智能回复:根据计算的意愿值自动决定是否回复
- 疲劳保护:自动控制回复频率避免过度打扰
状态查询命令
- 群聊主动状态:在群聊中发送此命令可查看当前群的详细状态信息,包括:
- 心跳和UMO映射状态
- 最近1分钟消息数量
- 专注度、@增强、有效心跳值
- 意愿分数和群活跃度
- 观察模式和专注兴趣度
- 冷却剩余时间和上次触发时间
- 心跳间隔和冷却时间配置
📈 版本历史
v1.0.3 (当前版本)
- ✅ 新增心流算法:能量系统和动态节奏控制
- ✅ 智能相似度计算:连续对话奖励机制
- ✅ 动态人格注入:缓存机制和自动注入
- ✅ 新增
群聊主动状态命令:实时状态查询 - ✅ 扩展配置系统:新增疲劳衰减、心跳阈值等参数
v1.0.2
- ✅ 优化状态管理器持久化机制
- ✅ 改进交互模式管理
- ✅ 增强读空气功能稳定性
v1.0.0
- ✅ 实现历史数据驱动的频率控制
- ✅ 多维度活跃度分析算法
- ✅ 语义相关性检测
- ✅ 动态人格关键词系统
- ✅ 高级上下文管理和回复决策
- ✅ 完整的状态持久化和配置系统
📞 技术支持
- GitHub Issues: https://github.com/qa296/astrbot_plugin_group_chat/issues
- AstrBot社区: https://github.com/AstrBotDevs/AstrBot
- 技术文档: 详见源码注释和架构说明
⭐ 如果这个插件对你有帮助,请给项目一个Star!