feat:添加后处理器统计时间

This commit is contained in:
SengokuCola
2025-06-24 01:09:04 +08:00
parent 2cfa0c04db
commit f3762df7dc
6 changed files with 452 additions and 287 deletions

View File

@@ -230,9 +230,22 @@ class NoReplyAction(BaseAction):
)
return True, f"累计消息数量达到{new_message_count}条,直接结束等待 (等待时间: {elapsed_time:.1f}秒)"
# 如果有新消息且距离上次判断>=1秒进行LLM判断
if new_message_count > 0 and (current_time - last_judge_time) >= min_judge_interval:
logger.info(f"{self.log_prefix} 检测到{new_message_count}条新消息,进行智能判断...")
# 判定条件累计3条消息或等待超过5秒且有新消息
time_since_last_judge = current_time - last_judge_time
should_judge = (
new_message_count >= 3 or # 累计3条消息
(new_message_count > 0 and time_since_last_judge >= 5.0) # 等待超过5秒且有新消息
)
if should_judge and time_since_last_judge >= min_judge_interval:
# 判断触发原因
trigger_reason = ""
if new_message_count >= 3:
trigger_reason = f"累计{new_message_count}条消息"
elif time_since_last_judge >= 5.0:
trigger_reason = f"等待{time_since_last_judge:.1f}秒且有{new_message_count}条新消息"
logger.info(f"{self.log_prefix} 触发判定({trigger_reason}),进行智能判断...")
# 获取最近的消息内容用于判断
recent_messages = message_api.get_messages_by_time_in_chat(
@@ -309,6 +322,14 @@ class NoReplyAction(BaseAction):
skip_probability = self._skip_probability_medium
else:
frequency_block = "你发现自己说话太多了,感觉很累,想要安静一会儿,除非有重要的事情否则不想回复。\n"
skip_probability = self._skip_probability_heavy
# 根据配置和概率决定是否跳过LLM判断
if self._skip_judge_when_tired and random.random() < skip_probability:
should_skip_llm_judge = True
logger.info(
f"{self.log_prefix} 发言过多(超过{over_count}条)随机决定跳过此次LLM判断(概率{skip_probability*100:.0f}%)"
)
logger.info(
f"{self.log_prefix} 过去10分钟发言{bot_message_count}条,超过阈值{talk_frequency_threshold},添加疲惫提示"