feat(chat): 引入睡眠系统,在睡眠状态下拦截消息
在消息处理的最前端 (`MessageManager`) 增加了对睡眠状态的检查。当系统处于 `SLEEPING` 状态时,将直接拦截所有新消息,不再进行后续处理。 同时,为了配合睡眠系统的正常运作: - 将睡眠系统的定时任务初始化移至 `main.py`,确保其在应用启动时正确加载。 - 在主动思维插件 (`proactive_thinker`) 的定时任务(冷启动和日常唤醒)中增加了睡眠状态检查,避免在睡眠期间触发主动行为。
This commit is contained in:
@@ -19,6 +19,8 @@ from src.config.config import global_config
|
||||
from src.plugin_system.apis.chat_api import get_chat_manager
|
||||
|
||||
from .distribution_manager import stream_loop_manager
|
||||
from .sleep_system.state_manager import SleepState, sleep_state_manager
|
||||
|
||||
|
||||
if TYPE_CHECKING:
|
||||
pass
|
||||
@@ -88,6 +90,7 @@ class MessageManager:
|
||||
logger.error(f"启动自适应流管理器失败: {e}")
|
||||
|
||||
# 启动睡眠和唤醒管理器
|
||||
# 睡眠系统的定时任务启动移至 main.py
|
||||
|
||||
# 启动流循环管理器并设置chatter_manager
|
||||
await stream_loop_manager.start()
|
||||
@@ -142,6 +145,14 @@ class MessageManager:
|
||||
|
||||
async def add_message(self, stream_id: str, message: DatabaseMessages):
|
||||
"""添加消息到指定聊天流"""
|
||||
# 在消息处理的最前端检查睡眠状态
|
||||
current_sleep_state = sleep_state_manager.get_current_state()
|
||||
if current_sleep_state == SleepState.SLEEPING:
|
||||
logger.info(f"处于 {current_sleep_state.name} 状态,消息被拦截。")
|
||||
return # 直接返回,不处理消息
|
||||
|
||||
# TODO: 在这里为 WOKEN_UP_ANGRY 等未来状态添加特殊处理逻辑
|
||||
|
||||
try:
|
||||
chat_manager = get_chat_manager()
|
||||
chat_stream = await chat_manager.get_stream(stream_id)
|
||||
|
||||
Reference in New Issue
Block a user