feat(增量分析): 添加增量分析配置项

- ConfigManager 新增 11 个增量分析相关的 getter 方法
- _conf_schema.json 新增增量分析配置项定义,包含详细中文描述和提示
- 配置项包括:启用开关、分析间隔、每日上限、消息阈值、话题/金句数量、活跃时段、交错间隔
- 增量模式默认关闭,保持向后兼容
This commit is contained in:
SXP-Simon
2026-02-10 14:49:25 +08:00
parent 834012ab5b
commit 603fa4be07
2 changed files with 102 additions and 0 deletions
+60
View File
@@ -200,6 +200,66 @@
"default": "群聊分析报告_{group_id}_{date}.pdf",
"hint": "PDF文件名格式,支持变量:{group_id}(群号)、{date}(日期)"
},
"incremental_enabled": {
"type": "bool",
"description": "启用增量分析模式",
"default": false,
"hint": "启用后,插件会在一天内多次进行小规模分析并累积结果,最终在报告时间汇总输出。适用于消息量大的群聊,可显著提升分析覆盖率和24小时活跃图表准确性。关闭时保持传统的单次全量分析模式。"
},
"incremental_interval_minutes": {
"type": "int",
"description": "增量分析间隔(分钟)",
"default": 120,
"hint": "每隔多少分钟执行一次增量分析。建议60-180分钟,间隔越短分析越精细但消耗更多 Token。"
},
"incremental_max_daily_analyses": {
"type": "int",
"description": "每日最大增量分析次数",
"default": 8,
"hint": "一天内最多执行多少次增量分析。达到上限后当天不再触发新的增量分析,但仍会在报告时间生成最终报告。建议4-12次。"
},
"incremental_max_messages": {
"type": "int",
"description": "单次增量分析最大消息数",
"default": 300,
"hint": "每次增量分析最多处理的消息条数。数值越大单次分析越全面但 Token 消耗越高。建议200-500。"
},
"incremental_min_messages": {
"type": "int",
"description": "增量分析最小消息数阈值",
"default": 20,
"hint": "当自上次分析以来的新消息数低于此阈值时,跳过本次增量分析以节省 Token。建议10-50。"
},
"incremental_topics_per_batch": {
"type": "int",
"description": "单次增量提取话题数",
"default": 3,
"hint": "每次增量分析最多提取的话题数量。最终报告会汇总所有批次的话题。建议2-5。"
},
"incremental_quotes_per_batch": {
"type": "int",
"description": "单次增量提取金句数",
"default": 3,
"hint": "每次增量分析最多提取的金句数量。最终报告会汇总所有批次的金句。建议2-5。"
},
"incremental_active_start_hour": {
"type": "int",
"description": "增量分析活跃起始时段",
"default": 8,
"hint": "增量分析的活跃时段起始小时(24小时制)。在活跃时段之外不会触发增量分析,避免凌晨等低活跃时段浪费分析配额。"
},
"incremental_active_end_hour": {
"type": "int",
"description": "增量分析活跃结束时段",
"default": 23,
"hint": "增量分析的活跃时段结束小时(24小时制)。超过此时段后不再触发增量分析。"
},
"incremental_stagger_seconds": {
"type": "int",
"description": "多群增量分析交错间隔(秒)",
"default": 30,
"hint": "当同时对多个群进行增量分析时,每个群之间的延迟间隔(秒),用于均匀分散 API 请求压力。建议15-60秒。"
},
"topic_analysis_prompts": {
"description": "话题分析提示词模板",
"type": "object",
@@ -326,6 +326,48 @@ class ConfigManager:
"""获取是否使用用户群名片"""
return self.config.get("enable_user_card", False)
# ========== 增量分析配置 ==========
def get_incremental_enabled(self) -> bool:
"""获取是否启用增量分析模式"""
return self.config.get("incremental_enabled", False)
def get_incremental_interval_minutes(self) -> int:
"""获取增量分析间隔(分钟)"""
return self.config.get("incremental_interval_minutes", 120)
def get_incremental_max_daily_analyses(self) -> int:
"""获取每天最大增量分析次数"""
return self.config.get("incremental_max_daily_analyses", 8)
def get_incremental_max_messages(self) -> int:
"""获取单次增量分析的最大消息数"""
return self.config.get("incremental_max_messages", 300)
def get_incremental_min_messages(self) -> int:
"""获取触发增量分析的最小消息数阈值"""
return self.config.get("incremental_min_messages", 20)
def get_incremental_topics_per_batch(self) -> int:
"""获取单次增量分析提取的最大话题数"""
return self.config.get("incremental_topics_per_batch", 3)
def get_incremental_quotes_per_batch(self) -> int:
"""获取单次增量分析提取的最大金句数"""
return self.config.get("incremental_quotes_per_batch", 3)
def get_incremental_active_start_hour(self) -> int:
"""获取增量分析活跃时段起始小时(24小时制)"""
return self.config.get("incremental_active_start_hour", 8)
def get_incremental_active_end_hour(self) -> int:
"""获取增量分析活跃时段结束小时(24小时制)"""
return self.config.get("incremental_active_end_hour", 23)
def get_incremental_stagger_seconds(self) -> int:
"""获取多群增量分析的交错间隔(秒),避免 API 压力"""
return self.config.get("incremental_stagger_seconds", 30)
@property
def playwright_available(self) -> bool:
"""检查playwright是否可用"""