refactor(chat): 从StreamContext获取消息兴趣度和连续无回复次数的计算逻辑
This commit is contained in:
@@ -321,9 +321,14 @@ class MessageManager:
|
|||||||
|
|
||||||
if chat_stream:
|
if chat_stream:
|
||||||
focus_energy = chat_stream.focus_energy
|
focus_energy = chat_stream.focus_energy
|
||||||
# 获取平均消息兴趣度用于更精确的计算
|
# 获取平均消息兴趣度用于更精确的计算 - 从StreamContext获取
|
||||||
if chat_stream.message_count > 0:
|
history_messages = context.get_history_messages(limit=100)
|
||||||
avg_message_interest = chat_stream.message_interest_total / chat_stream.message_count
|
unread_messages = context.get_unread_messages()
|
||||||
|
all_messages = history_messages + unread_messages
|
||||||
|
|
||||||
|
if all_messages:
|
||||||
|
message_interests = [msg.interest_degree for msg in all_messages if hasattr(msg, 'interest_degree')]
|
||||||
|
avg_message_interest = sum(message_interests) / len(message_interests) if message_interests else 0.5
|
||||||
|
|
||||||
# 获取AFC阈值用于参考,添加None值检查
|
# 获取AFC阈值用于参考,添加None值检查
|
||||||
reply_threshold = getattr(global_config.affinity_flow, 'reply_action_interest_threshold', 0.4)
|
reply_threshold = getattr(global_config.affinity_flow, 'reply_action_interest_threshold', 0.4)
|
||||||
@@ -542,9 +547,17 @@ class MessageManager:
|
|||||||
time_since_active = current_time - context.last_check_time
|
time_since_active = current_time - context.last_check_time
|
||||||
time_penalty = max(0, 1.0 - time_since_active / 3600.0) # 1小时内无惩罚
|
time_penalty = max(0, 1.0 - time_since_active / 3600.0) # 1小时内无惩罚
|
||||||
|
|
||||||
# 连续无回复惩罚
|
# 连续无回复惩罚 - 从StreamContext历史消息计算
|
||||||
if chat_stream:
|
if chat_stream:
|
||||||
consecutive_no_reply = chat_stream.consecutive_no_reply
|
# 计算连续无回复次数
|
||||||
|
consecutive_no_reply = 0
|
||||||
|
all_messages = context.get_history_messages(limit=50) + context.get_unread_messages()
|
||||||
|
for msg in reversed(all_messages):
|
||||||
|
if hasattr(msg, 'should_reply') and msg.should_reply:
|
||||||
|
if not (hasattr(msg, 'actions') and 'reply' in (msg.actions or [])):
|
||||||
|
consecutive_no_reply += 1
|
||||||
|
else:
|
||||||
|
break
|
||||||
no_reply_penalty = max(0, 1.0 - consecutive_no_reply * 0.05) # 每次无回复降低5%
|
no_reply_penalty = max(0, 1.0 - consecutive_no_reply * 0.05) # 每次无回复降低5%
|
||||||
else:
|
else:
|
||||||
no_reply_penalty = 1.0
|
no_reply_penalty = 1.0
|
||||||
|
|||||||
Reference in New Issue
Block a user