From 2e45a251d6e03ba5c7df5a6f1c3231ae557ecedd Mon Sep 17 00:00:00 2001 From: tt-P607 <68868379+tt-P607@users.noreply.github.com> Date: Mon, 6 Oct 2025 15:42:57 +0800 Subject: [PATCH] =?UTF-8?q?refactor(chat):=20=E9=87=8D=E6=9E=84=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E6=89=93=E6=96=AD=E9=80=BB=E8=BE=91=E4=BB=A5=E4=BB=8E?= =?UTF-8?q?=20ChatterManager=20=E8=8E=B7=E5=8F=96=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将正在处理的任务跟踪从 ContextManager 转移到 ChatterManager。 此举旨在集中管理聊天任务,降低 MessageManager 与 ContextManager 之间的耦合。现在,中断处理逻辑直接查询 ChatterManager 以获取并取消当前活动任务,使任务状态管理更加清晰和可靠。 --- src/chat/message_manager/message_manager.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/chat/message_manager/message_manager.py b/src/chat/message_manager/message_manager.py index b6ad48d4e..437b62b90 100644 --- a/src/chat/message_manager/message_manager.py +++ b/src/chat/message_manager/message_manager.py @@ -332,14 +332,13 @@ class MessageManager: async def _check_and_handle_interruption(self, chat_stream: ChatStream | None = None): """检查并处理消息打断""" - if not global_config.chat.interruption_enabled: + if not global_config.chat.interruption_enabled or not chat_stream: return - # 检查是否有正在进行的处理任务 - if ( - chat_stream.context_manager.context.processing_task - and not chat_stream.context_manager.context.processing_task.done() - ): + # 从 chatter_manager 检查是否有正在进行的处理任务 + processing_task = self.chatter_manager.get_processing_task(chat_stream.stream_id) + + if processing_task and not processing_task.done(): # 计算打断概率 interruption_probability = chat_stream.context_manager.context.calculate_interruption_probability( global_config.chat.interruption_max_limit, global_config.chat.interruption_probability_factor @@ -357,11 +356,11 @@ class MessageManager: logger.info(f"聊天流 {chat_stream.stream_id} 触发消息打断,打断概率: {interruption_probability:.2f}") # 取消现有任务 - chat_stream.context_manager.context.processing_task.cancel() + processing_task.cancel() try: - await chat_stream.context_manager.context.processing_task + await processing_task except asyncio.CancelledError: - pass + logger.debug(f"消息打断成功取消任务: {chat_stream.stream_id}") # 增加打断计数并应用afc阈值降低 await chat_stream.context_manager.context.increment_interruption_count()