fix(proactive_thinker): 修复情绪模块关闭时主动思考报错的问题

当全局情绪模块被禁用时,尝试获取情绪状态会导致`AttributeError`或`KeyError`,从而中断主动思考任务。

本次提交通过以下方式修复了此问题:
1.  在获取情绪状态前,增加对`global_config.mood.enable_mood`的判断。
2.  在情绪获取逻辑中加入`try...except`块,捕获潜在的异常,并在失败时提供一个默认的情绪状态,增强了代码的鲁棒性。
3.  在日常唤醒任务的异常处理中,增加了`traceback.print_exc()`,以便在出现错误时打印完整的堆栈跟踪,方便快速定位问题。
This commit is contained in:
minecraft1024a
2025-10-03 18:19:18 +08:00
parent f4079f10fe
commit 62fe589c8f
2 changed files with 9 additions and 2 deletions

View File

@@ -1,6 +1,7 @@
import asyncio
import random
import time
import traceback
from datetime import datetime
from maim_message import UserInfo
@@ -199,6 +200,7 @@ class ProactiveThinkingTask(AsyncTask):
logger.info("日常唤醒任务被正常取消。")
break
except Exception as e:
traceback.print_exc() # 打印完整的堆栈跟踪
logger.error(f"【日常唤醒】任务出现错误将在60秒后重试: {e}", exc_info=True)
await asyncio.sleep(60)

View File

@@ -158,7 +158,12 @@ class ProactiveThinkerExecutor:
)
# 2. 构建基础上下文
mood_state = mood_manager.get_mood_by_chat_id(stream_id).mood_state
if global_config.mood.enable_mood:
try:
mood_state = mood_manager.get_mood_by_chat_id(stream.stream_id)
except Exception as e:
logger.error(f"获取情绪失败,原因:{e}")
mood_state = "暂时没有"
base_context = {
"schedule_context": schedule_context,
"recent_chat_history": recent_chat_history,
@@ -473,4 +478,4 @@ class ProactiveThinkerExecutor:
if global_config.debug.show_prompt:
logger.info(f"主动思考回复器原始提示词:{prompt}")
return prompt
return prompt