diff --git a/src/heart_flow/background_tasks.py b/src/heart_flow/background_tasks.py index 2bfd74204..85fb6c502 100644 --- a/src/heart_flow/background_tasks.py +++ b/src/heart_flow/background_tasks.py @@ -51,14 +51,14 @@ class BackgroundTaskManager: self.log_interval = log_interval self.inactive_threshold = inactive_threshold # For cleanup task self.interest_eval_interval = interest_eval_interval # 存储兴趣评估间隔 - self.random_deactivation_interval = random_deactivation_interval # 存储随机停用间隔 + self.random_deactivation_interval = random_deactivation_interval # 存储随机停用间隔 # Task references self._state_update_task: Optional[asyncio.Task] = None self._cleanup_task: Optional[asyncio.Task] = None self._logging_task: Optional[asyncio.Task] = None self._interest_eval_task: Optional[asyncio.Task] = None # 新增兴趣评估任务引用 - self._random_deactivation_task: Optional[asyncio.Task] = None # 新增随机停用任务引用 + self._random_deactivation_task: Optional[asyncio.Task] = None # 新增随机停用任务引用 self._tasks: List[Optional[asyncio.Task]] = [] # Keep track of all tasks async def start_tasks(self): @@ -110,7 +110,7 @@ class BackgroundTaskManager: self._random_deactivation_task, self._run_random_deactivation_cycle, "hf_random_deactivation", - "debug", # 设为debug,避免过多日志 + "debug", # 设为debug,避免过多日志 f"随机停用任务已启动 间隔:{self.random_deactivation_interval}s", "_random_deactivation_task", ), @@ -249,6 +249,7 @@ class BackgroundTaskManager: async def _perform_random_deactivation_work(self): """执行一轮子心流随机停用检查。""" await self.subheartflow_manager.randomly_deactivate_subflows() + # --- 结束新增 --- # --- Specific Task Runners --- # diff --git a/src/heart_flow/sub_heartflow.py b/src/heart_flow/sub_heartflow.py index 85ceaf76f..76d60b14e 100644 --- a/src/heart_flow/sub_heartflow.py +++ b/src/heart_flow/sub_heartflow.py @@ -364,17 +364,17 @@ class SubHeartflow: if self.heart_fc_instance._loop_task is None or self.heart_fc_instance._loop_task.done(): logger.info(f"{log_prefix} HeartFChatting 实例存在但循环未运行,尝试启动...") try: - await self.heart_fc_instance.start() # 启动循环 + await self.heart_fc_instance.start() # 启动循环 logger.info(f"{log_prefix} HeartFChatting 循环已启动。") return True except Exception as e: logger.error(f"{log_prefix} 尝试启动现有 HeartFChatting 循环时出错: {e}") logger.error(traceback.format_exc()) - return False # 启动失败 + return False # 启动失败 else: # 任务正在运行 logger.debug(f"{log_prefix} HeartFChatting 已在运行中。") - return True # 已经在运行 + return True # 已经在运行 # 如果实例不存在,则创建并启动 logger.info(f"{log_prefix} 麦麦准备开始专注聊天 (创建新实例)...") @@ -383,7 +383,7 @@ class SubHeartflow: chat_id=self.chat_id, ) if await self.heart_fc_instance._initialize(): - await self.heart_fc_instance.start() # 初始化成功后启动循环 + await self.heart_fc_instance.start() # 初始化成功后启动循环 logger.info(f"{log_prefix} 麦麦已成功进入专注聊天模式 (新实例已启动)。") return True else: diff --git a/src/plugins/heartFC_chat/heartFC_chat.py b/src/plugins/heartFC_chat/heartFC_chat.py index 371c817e4..ac8030f00 100644 --- a/src/plugins/heartFC_chat/heartFC_chat.py +++ b/src/plugins/heartFC_chat/heartFC_chat.py @@ -159,7 +159,7 @@ class HeartFChatting: # 直接检查是否激活,无需检查计时器 if not self._loop_active: should_start_loop = True - self._loop_active = True # 标记为活动,防止重复启动 + self._loop_active = True # 标记为活动,防止重复启动 if should_start_loop: # 检查是否已有任务在运行(理论上不应该,因为 _loop_active=False) @@ -210,7 +210,7 @@ class HeartFChatting: logger.info(f"{log_prefix} HeartFChatting: 麦麦打算好好聊聊 (进入专注模式)") try: thinking_id = "" - while True: # Loop indefinitely until cancelled + while True: # Loop indefinitely until cancelled cycle_timers = {} # <--- Initialize timers dict for this cycle # Access MessageManager directly @@ -406,13 +406,12 @@ class HeartFChatting: if cycle_duration > 0.1: logger.debug(f"{log_prefix} HeartFChatting: 周期耗时 {cycle_duration:.2f}s.") - # --- Delay --- # try: sleep_duration = 0.0 if not action_taken_this_cycle and cycle_duration < 1.5: sleep_duration = 1.5 - cycle_duration - elif cycle_duration < 0.2: # Keep minimal sleep even after action + elif cycle_duration < 0.2: # Keep minimal sleep even after action sleep_duration = 0.2 if sleep_duration > 0: @@ -421,7 +420,7 @@ class HeartFChatting: except asyncio.CancelledError: logger.info(f"{log_prefix} Sleep interrupted, loop likely cancelling.") - break # Exit loop immediately on cancellation + break # Exit loop immediately on cancellation except asyncio.CancelledError: logger.info(f"{log_prefix} HeartFChatting: 麦麦的聊天主循环被取消了")