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