fix:修复状态没有及时转移,和概率可能为负的BUG
This commit is contained in:
@@ -37,13 +37,13 @@ class MaiState(enum.Enum):
|
||||
return 1000
|
||||
|
||||
if self == MaiState.OFFLINE:
|
||||
return 0
|
||||
return 10
|
||||
elif self == MaiState.PEEKING:
|
||||
return 2
|
||||
return 30
|
||||
elif self == MaiState.NORMAL_CHAT:
|
||||
return 3
|
||||
return 40
|
||||
elif self == MaiState.FOCUSED_CHAT:
|
||||
return 2
|
||||
return 30
|
||||
|
||||
def get_focused_chat_max_num(self):
|
||||
# 调试用
|
||||
@@ -51,13 +51,13 @@ class MaiState(enum.Enum):
|
||||
return 1000
|
||||
|
||||
if self == MaiState.OFFLINE:
|
||||
return 0
|
||||
return 10
|
||||
elif self == MaiState.PEEKING:
|
||||
return 1
|
||||
return 20
|
||||
elif self == MaiState.NORMAL_CHAT:
|
||||
return 1
|
||||
return 30
|
||||
elif self == MaiState.FOCUSED_CHAT:
|
||||
return 3
|
||||
return 40
|
||||
|
||||
|
||||
class MaiStateInfo:
|
||||
|
||||
@@ -151,8 +151,8 @@ class InterestChatting:
|
||||
if self.above_threshold:
|
||||
self.start_hfc_probability += 0.1
|
||||
else:
|
||||
if self.start_hfc_probability != 0:
|
||||
self.start_hfc_probability -= 0.1
|
||||
if self.start_hfc_probability > 0:
|
||||
self.start_hfc_probability = max(0, self.start_hfc_probability - 0.1)
|
||||
|
||||
async def increase_interest(self, value: float):
|
||||
self.interest_level += value
|
||||
@@ -170,7 +170,7 @@ class InterestChatting:
|
||||
return {
|
||||
"interest_level": round(interest, 2),
|
||||
"start_hfc_probability": round(self.start_hfc_probability, 4),
|
||||
"is_above_threshold": self.is_above_threshold,
|
||||
"above_threshold": self.above_threshold,
|
||||
}
|
||||
|
||||
async def should_evaluate_reply(self) -> bool:
|
||||
|
||||
@@ -267,6 +267,7 @@ class SubHeartflowManager:
|
||||
# 使用 self.mai_state_info 获取当前状态和限制
|
||||
current_state = self.mai_state_info.get_current_state()
|
||||
focused_limit = current_state.get_focused_chat_max_num()
|
||||
|
||||
logger.debug(f"{log_prefix} 当前状态 ({current_state.value}) 开始尝试提升到FOCUSED状态")
|
||||
|
||||
if int(time.time()) % 20 == 0: # 每20秒输出一次
|
||||
@@ -285,6 +286,8 @@ class SubHeartflowManager:
|
||||
flow_id = sub_hf.subheartflow_id
|
||||
stream_name = chat_manager.get_stream_name(flow_id) or flow_id
|
||||
|
||||
logger.debug(f"{log_prefix} 检查子心流: {stream_name},现在状态: {sub_hf.chat_state.chat_status.value}")
|
||||
|
||||
# 跳过非CHAT状态或已经是FOCUSED状态的子心流
|
||||
if sub_hf.chat_state.chat_status == ChatState.FOCUSED:
|
||||
continue
|
||||
@@ -296,6 +299,7 @@ class SubHeartflowManager:
|
||||
continue
|
||||
|
||||
# 检查是否满足提升概率
|
||||
logger.debug(f"{log_prefix} 检查子心流: {stream_name},现在概率: {sub_hf.interest_chatting.start_hfc_probability}")
|
||||
if random.random() >= sub_hf.interest_chatting.start_hfc_probability:
|
||||
continue
|
||||
|
||||
|
||||
Reference in New Issue
Block a user