fix(proactive_thinker): 修复情绪模块关闭时主动思考报错的问题
当全局情绪模块被禁用时,尝试获取情绪状态会导致`AttributeError`或`KeyError`,从而中断主动思考任务。 本次提交通过以下方式修复了此问题: 1. 在获取情绪状态前,增加对`global_config.mood.enable_mood`的判断。 2. 在情绪获取逻辑中加入`try...except`块,捕获潜在的异常,并在失败时提供一个默认的情绪状态,增强了代码的鲁棒性。 3. 在日常唤醒任务的异常处理中,增加了`traceback.print_exc()`,以便在出现错误时打印完整的堆栈跟踪,方便快速定位问题。
This commit is contained in:
committed by
Windpicker-owo
parent
c512b187bf
commit
1f06bdf5e8
@@ -1,6 +1,7 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import random
|
import random
|
||||||
import time
|
import time
|
||||||
|
import traceback
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from maim_message import UserInfo
|
from maim_message import UserInfo
|
||||||
@@ -199,6 +200,7 @@ class ProactiveThinkingTask(AsyncTask):
|
|||||||
logger.info("日常唤醒任务被正常取消。")
|
logger.info("日常唤醒任务被正常取消。")
|
||||||
break
|
break
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
traceback.print_exc() # 打印完整的堆栈跟踪
|
||||||
logger.error(f"【日常唤醒】任务出现错误,将在60秒后重试: {e}", exc_info=True)
|
logger.error(f"【日常唤醒】任务出现错误,将在60秒后重试: {e}", exc_info=True)
|
||||||
await asyncio.sleep(60)
|
await asyncio.sleep(60)
|
||||||
|
|
||||||
|
|||||||
@@ -158,7 +158,12 @@ class ProactiveThinkerExecutor:
|
|||||||
)
|
)
|
||||||
|
|
||||||
# 2. 构建基础上下文
|
# 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 = {
|
base_context = {
|
||||||
"schedule_context": schedule_context,
|
"schedule_context": schedule_context,
|
||||||
"recent_chat_history": recent_chat_history,
|
"recent_chat_history": recent_chat_history,
|
||||||
@@ -473,4 +478,4 @@ class ProactiveThinkerExecutor:
|
|||||||
|
|
||||||
if global_config.debug.show_prompt:
|
if global_config.debug.show_prompt:
|
||||||
logger.info(f"主动思考回复器原始提示词:{prompt}")
|
logger.info(f"主动思考回复器原始提示词:{prompt}")
|
||||||
return prompt
|
return prompt
|
||||||
|
|||||||
Reference in New Issue
Block a user