diff --git a/src/chat/normal_chat/normal_chat.py b/src/chat/normal_chat/normal_chat.py index c8cff24a1..4a107f63e 100644 --- a/src/chat/normal_chat/normal_chat.py +++ b/src/chat/normal_chat/normal_chat.py @@ -744,16 +744,18 @@ class NormalChat: # 计算回复概率(reply_count在总消息中的比值) reply_ratio = reply_count / total_messages if total_messages > 0 else 0 - # 使用对数函数让低比率时概率上升更快:log(1 + ratio * k) / log(1 + k) - # k=10时,0.1比率对应约0.67概率,0.5比率对应约0.95概率 - k_reply = 10 - reply_build_probability = math.log(1 + reply_ratio * k_reply) / math.log(1 + k_reply) if reply_ratio > 0 else 0 + # 使用对数函数让低比率时概率上升更快:log(1 + ratio * k) / log(1 + k) + base + # k=7时,0.05比率对应约0.4概率,0.1比率对应约0.6概率,0.2比率对应约0.8概率 + k_reply = 7 + base_reply_prob = 0.1 # 基础概率10% + reply_build_probability = (math.log(1 + reply_ratio * k_reply) / math.log(1 + k_reply)) * 0.9 + base_reply_prob if reply_ratio > 0 else base_reply_prob # 计算接收概率(receive_count的影响) receive_ratio = receive_count / total_messages if total_messages > 0 else 0 - # 接收概率使用更温和的对数曲线,最大0.4 - k_receive = 8 - receive_build_probability = (math.log(1 + receive_ratio * k_receive) / math.log(1 + k_receive)) * 0.4 if receive_ratio > 0 else 0 + # 接收概率使用更温和的对数曲线,最大0.5,基础0.08 + k_receive = 6 + base_receive_prob = 0.08 # 基础概率8% + receive_build_probability = (math.log(1 + receive_ratio * k_receive) / math.log(1 + k_receive)) * 0.42 + base_receive_prob if receive_ratio > 0 else base_receive_prob # 取最高概率 final_probability = max(reply_build_probability, receive_build_probability)