实现了新的睡眠系统喵~

This commit is contained in:
ikun-11451
2025-10-17 01:47:43 +08:00
parent bfbba6879c
commit e1dde64fc6
14 changed files with 371 additions and 804 deletions

View File

@@ -17,10 +17,11 @@ from src.common.data_models.message_manager_data_model import MessageManagerStat
from src.common.logger import get_logger
from src.config.config import global_config
from src.plugin_system.apis.chat_api import get_chat_manager
from src.plugins.built_in.sleep_system.api import on_message_received
from .distribution_manager import stream_loop_manager
from .sleep_manager.sleep_manager import SleepManager
from .sleep_manager.wakeup_manager import WakeUpManager
# from .sleep_manager.sleep_manager import SleepManager
# from .sleep_manager.wakeup_manager import WakeUpManager
if TYPE_CHECKING:
pass
@@ -43,9 +44,9 @@ class MessageManager:
self.action_manager = ChatterActionManager()
self.chatter_manager = ChatterManager(self.action_manager)
# 初始化睡眠和唤醒管理器
self.sleep_manager = SleepManager()
self.wakeup_manager = WakeUpManager(self.sleep_manager)
# 初始化睡眠和唤醒管理器 (已被新插件取代)
# self.sleep_manager = SleepManager()
# self.wakeup_manager = WakeUpManager(self.sleep_manager)
# 消息缓存系统 - 直接集成到消息管理器
self.message_caches: Dict[str, deque] = defaultdict(deque) # 每个流的消息缓存
@@ -93,8 +94,8 @@ class MessageManager:
except Exception as e:
logger.error(f"启动自适应流管理器失败: {e}")
# 启动睡眠和唤醒管理器
await self.wakeup_manager.start()
# 启动睡眠和唤醒管理器 (已被新插件取代)
# await self.wakeup_manager.start()
# 启动流循环管理器并设置chatter_manager
await stream_loop_manager.start()
@@ -141,8 +142,8 @@ class MessageManager:
except Exception as e:
logger.error(f"停止自适应流管理器失败: {e}")
# 停止睡眠和唤醒管理器
await self.wakeup_manager.stop()
# 停止睡眠和唤醒管理器 (已被新插件取代)
# await self.wakeup_manager.stop()
# 停止流循环管理器
await stream_loop_manager.stop()
@@ -152,6 +153,9 @@ class MessageManager:
async def add_message(self, stream_id: str, message: DatabaseMessages):
"""添加消息到指定聊天流"""
try:
# 触发睡眠系统外部事件
on_message_received()
chat_manager = get_chat_manager()
chat_stream = await chat_manager.get_stream(stream_id)
if not chat_stream:
@@ -335,9 +339,14 @@ class MessageManager:
inactive_streams.append(stream_id)
for stream_id in inactive_streams:
try:
await chat_stream.context_manager.clear_context()
del chat_manager.streams[stream_id]
logger.info(f"清理不活跃聊天流: {stream_id}")
# 修复: 直接通过 stream_id 获取 chat_stream避免潜在的未绑定问题
inactive_stream = chat_manager.streams.get(stream_id)
if inactive_stream:
await inactive_stream.context_manager.clear_context()
del chat_manager.streams[stream_id]
logger.info(f"清理不活跃聊天流: {stream_id}")
else:
logger.warning(f"尝试清理一个不存在的流: {stream_id}")
except Exception as e:
logger.error(f"清理聊天流 {stream_id} 失败: {e}")
if inactive_streams: