refactor: move Memori initialization to fastapi_app.py
Move init_global_memori from deep_assistant.py to fastapi_app.py lifespan function for proper application-level initialization. This ensures Memori is initialized once at startup and closed at shutdown, rather than checking and potentially initializing on every agent creation. Changes: - fastapi_app.py: Add Memori init/close in lifespan - deep_assistant.py: Simplify to only get memori_manager 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
455a48409d
commit
456bcf50e6
@ -32,7 +32,7 @@ from utils.settings import (
|
||||
MEMORI_INJECT_TO_SYSTEM_PROMPT,
|
||||
)
|
||||
from agent.agent_config import AgentConfig
|
||||
from .memori_manager import get_memori_manager, init_global_memori
|
||||
from .memori_manager import get_memori_manager
|
||||
from .memori_middleware import create_memori_middleware
|
||||
from .memori_config import MemoriConfig
|
||||
from agent.prompt_loader import load_system_prompt_async, load_mcp_settings_async
|
||||
@ -206,24 +206,15 @@ async def init_agent(config: AgentConfig):
|
||||
middleware.append(tool_output_middleware)
|
||||
|
||||
# 添加 Memori 记忆中间件(如果启用)
|
||||
memori_middleware = None
|
||||
if config.enable_memori:
|
||||
try:
|
||||
# 确保有 user_identifier
|
||||
if not config.user_identifier:
|
||||
logger.warning("Memori enabled but user_identifier is missing, skipping Memori")
|
||||
else:
|
||||
# 获取 MemoriManager(使用共享的连接池)
|
||||
# 获取全局 MemoriManager(已在 fastapi_app.py 中初始化)
|
||||
memori_manager = get_memori_manager()
|
||||
|
||||
# 如果 MemoriManager 未初始化,则初始化
|
||||
if not memori_manager._initialized:
|
||||
db_pool = get_checkpointer_manager().pool if checkpointer else None
|
||||
await init_global_memori(
|
||||
db_pool=db_pool,
|
||||
api_key=MEMORI_API_KEY
|
||||
)
|
||||
|
||||
# 创建 Memori 中间件
|
||||
memori_middleware = create_memori_middleware(
|
||||
bot_id=config.bot_id,
|
||||
@ -240,7 +231,7 @@ async def init_agent(config: AgentConfig):
|
||||
logger.info("Memori middleware added to agent")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to initialize Memori middleware: {e}, continuing without Memori")
|
||||
logger.error(f"Failed to create Memori middleware: {e}, continuing without Memori")
|
||||
|
||||
|
||||
if config.robot_type == "deep_agent":
|
||||
|
||||
@ -40,7 +40,11 @@ async def lifespan(app: FastAPI):
|
||||
init_chat_history_manager,
|
||||
close_chat_history_manager
|
||||
)
|
||||
from utils.settings import CHECKPOINT_CLEANUP_ENABLED
|
||||
from agent.memori_manager import (
|
||||
init_global_memori,
|
||||
close_global_memori
|
||||
)
|
||||
from utils.settings import CHECKPOINT_CLEANUP_ENABLED, MEMORI_ENABLED, MEMORI_API_KEY
|
||||
|
||||
# 1. 初始化共享的数据库连接池
|
||||
db_pool_manager = await init_global_db_pool()
|
||||
@ -54,7 +58,18 @@ async def lifespan(app: FastAPI):
|
||||
await init_chat_history_manager(db_pool_manager.pool)
|
||||
logger.info("Chat history manager initialized")
|
||||
|
||||
# 4. 启动 checkpoint 清理调度器
|
||||
# 4. 初始化 Memori 长期记忆系统 (如果启用)
|
||||
if MEMORI_ENABLED:
|
||||
try:
|
||||
await init_global_memori(
|
||||
db_pool=db_pool_manager.pool,
|
||||
api_key=MEMORI_API_KEY
|
||||
)
|
||||
logger.info("Memori long-term memory initialized")
|
||||
except Exception as e:
|
||||
logger.warning(f"Memori initialization failed (continuing without): {e}")
|
||||
|
||||
# 5. 启动 checkpoint 清理调度器
|
||||
if CHECKPOINT_CLEANUP_ENABLED:
|
||||
# 启动时立即执行一次清理
|
||||
try:
|
||||
@ -70,6 +85,13 @@ async def lifespan(app: FastAPI):
|
||||
|
||||
# 关闭时清理(按相反顺序)
|
||||
logger.info("Shutting down...")
|
||||
# 关闭 Memori
|
||||
if MEMORI_ENABLED:
|
||||
try:
|
||||
await close_global_memori()
|
||||
logger.info("Memori long-term memory closed")
|
||||
except Exception as e:
|
||||
logger.warning(f"Memori close failed (non-fatal): {e}")
|
||||
await close_chat_history_manager()
|
||||
logger.info("Chat history manager closed")
|
||||
await close_global_checkpointer()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user