fix:私聊爆炸
This commit is contained in:
@@ -617,10 +617,10 @@ class DefaultReplyer:
|
|||||||
chat_target_name = (
|
chat_target_name = (
|
||||||
self.chat_target_info.get("person_name") or self.chat_target_info.get("user_nickname") or "对方"
|
self.chat_target_info.get("person_name") or self.chat_target_info.get("user_nickname") or "对方"
|
||||||
)
|
)
|
||||||
chat_target_1 = await global_prompt_manager.get_prompt_async(
|
chat_target_1 = await global_prompt_manager.format_prompt(
|
||||||
"chat_target_private1", sender_name=chat_target_name
|
"chat_target_private1", sender_name=chat_target_name
|
||||||
)
|
)
|
||||||
chat_target_2 = await global_prompt_manager.get_prompt_async(
|
chat_target_2 = await global_prompt_manager.format_prompt(
|
||||||
"chat_target_private2", sender_name=chat_target_name
|
"chat_target_private2", sender_name=chat_target_name
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -747,10 +747,10 @@ class DefaultReplyer:
|
|||||||
chat_target_name = (
|
chat_target_name = (
|
||||||
self.chat_target_info.get("person_name") or self.chat_target_info.get("user_nickname") or "对方"
|
self.chat_target_info.get("person_name") or self.chat_target_info.get("user_nickname") or "对方"
|
||||||
)
|
)
|
||||||
chat_target_1 = await global_prompt_manager.get_prompt_async(
|
chat_target_1 = await global_prompt_manager.format_prompt(
|
||||||
"chat_target_private1", sender_name=chat_target_name
|
"chat_target_private1", sender_name=chat_target_name
|
||||||
)
|
)
|
||||||
chat_target_2 = await global_prompt_manager.get_prompt_async(
|
chat_target_2 = await global_prompt_manager.format_prompt(
|
||||||
"chat_target_private2", sender_name=chat_target_name
|
"chat_target_private2", sender_name=chat_target_name
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -165,6 +165,9 @@ class S4UChat:
|
|||||||
|
|
||||||
self._is_replying = False
|
self._is_replying = False
|
||||||
self.gpt = S4UStreamGenerator()
|
self.gpt = S4UStreamGenerator()
|
||||||
|
self.interest_dict: Dict[str, float] = {} # 用户兴趣分
|
||||||
|
self.at_bot_priority_bonus = 100.0 # @机器人的优先级加成
|
||||||
|
self.normal_queue_max_size = 50 # 普通队列最大容量
|
||||||
logger.info(f"[{self.stream_name}] S4UChat with two-queue system initialized.")
|
logger.info(f"[{self.stream_name}] S4UChat with two-queue system initialized.")
|
||||||
|
|
||||||
def _is_vip(self, message: MessageRecv) -> bool:
|
def _is_vip(self, message: MessageRecv) -> bool:
|
||||||
@@ -196,7 +199,7 @@ class S4UChat:
|
|||||||
async def add_message(self, message: MessageRecv) -> None:
|
async def add_message(self, message: MessageRecv) -> None:
|
||||||
"""根据VIP状态和中断逻辑将消息放入相应队列。"""
|
"""根据VIP状态和中断逻辑将消息放入相应队列。"""
|
||||||
is_vip = self._is_vip(message)
|
is_vip = self._is_vip(message)
|
||||||
self._get_message_priority(message)
|
new_priority_score = self._calculate_base_priority_score(message)
|
||||||
|
|
||||||
should_interrupt = False
|
should_interrupt = False
|
||||||
if self._current_generation_task and not self._current_generation_task.done():
|
if self._current_generation_task and not self._current_generation_task.done():
|
||||||
@@ -218,11 +221,11 @@ class S4UChat:
|
|||||||
new_sender_id = message.message_info.user_info.user_id
|
new_sender_id = message.message_info.user_info.user_id
|
||||||
current_sender_id = current_msg.message_info.user_info.user_id
|
current_sender_id = current_msg.message_info.user_info.user_id
|
||||||
# 新消息优先级更高
|
# 新消息优先级更高
|
||||||
if new_priority_score > current_priority_score:
|
if new_priority_score > current_priority:
|
||||||
should_interrupt = True
|
should_interrupt = True
|
||||||
logger.info(f"[{self.stream_name}] New normal message has higher priority, interrupting.")
|
logger.info(f"[{self.stream_name}] New normal message has higher priority, interrupting.")
|
||||||
# 同用户,新消息的优先级不能更低
|
# 同用户,新消息的优先级不能更低
|
||||||
elif new_sender_id == current_sender_id and new_priority_score >= current_priority_score:
|
elif new_sender_id == current_sender_id and new_priority_score >= current_priority:
|
||||||
should_interrupt = True
|
should_interrupt = True
|
||||||
logger.info(f"[{self.stream_name}] Same user sent new message, interrupting.")
|
logger.info(f"[{self.stream_name}] Same user sent new message, interrupting.")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user