refactor(core): 延迟初始化知识库并优化导入结构

将LPMM知识库的初始化逻辑封装到`initialize_lpmm_knowledge`函数中,并将其调用移至`main.py`,以实现延迟加载并改善启动流程。

为了解决循环导入问题,将`component_registry`的导入移至`BaseAction.call`方法内部。
This commit is contained in:
minecraft1024a
2025-09-12 21:12:13 +08:00
parent cd19e89528
commit 9f084338dc
3 changed files with 54 additions and 44 deletions

View File

@@ -30,8 +30,13 @@ DATA_PATH = os.path.join(ROOT_PATH, "data")
qa_manager = None
inspire_manager = None
# 检查LPMM知识库是否启用
if global_config.lpmm_knowledge.enable:
def initialize_lpmm_knowledge():
"""初始化LPMM知识库"""
global qa_manager, inspire_manager
# 检查LPMM知识库是否启用
if global_config.lpmm_knowledge.enable:
logger.info("正在初始化Mai-LPMM")
logger.info("创建LLM客户端")
@@ -74,6 +79,6 @@ if global_config.lpmm_knowledge.enable:
# embed_manager,
# llm_client_list[global_config["embedding"]["provider"]],
# )
else:
else:
logger.info("LPMM知识库已禁用跳过初始化")
# 创建空的占位符对象,避免导入错误

View File

@@ -116,9 +116,9 @@ class MainSystem:
# 停止消息重组器
from src.plugin_system.core.event_manager import event_manager
from src.plugin_system import EventType
import asyncio
asyncio.run(event_manager.trigger_event(EventType.ON_STOP,permission_group="SYSTEM"))
from src.utils.message_chunker import reassembler
import asyncio
loop = asyncio.get_event_loop()
if loop.is_running():
@@ -250,6 +250,11 @@ MoFox_Bot(第三方修改版)
self.hippocampus_manager.initialize()
logger.info("记忆系统初始化成功")
# 初始化LPMM知识库
from src.chat.knowledge.knowledge_lib import initialize_lpmm_knowledge
initialize_lpmm_knowledge()
logger.info("LPMM知识库初始化成功")
# 初始化异步记忆管理器
try:
from src.chat.memory_system.async_memory_optimizer import async_memory_manager

View File

@@ -8,7 +8,6 @@ from src.common.logger import get_logger
from src.chat.message_receive.chat_stream import ChatStream
from src.plugin_system.base.component_types import ActionActivationType, ChatMode, ActionInfo, ComponentType, ChatType
from src.plugin_system.apis import send_api, database_api, message_api
from src.plugin_system.core.component_registry import component_registry
logger = get_logger("base_action")
@@ -397,6 +396,7 @@ class BaseAction(ABC):
logger.info(f"{log_prefix} 尝试调用Action: {action_name}")
try:
from src.plugin_system.core.component_registry import component_registry
# 1. 从注册中心获取Action类
action_class = component_registry.get_component_class(action_name, ComponentType.ACTION)
if not action_class: