diff --git a/bot.py b/bot.py index e3c3cb5d4..8cecff756 100644 --- a/bot.py +++ b/bot.py @@ -35,15 +35,16 @@ loop = None # shutdown_requested = False # 新增全局变量 + async def request_shutdown() -> bool: """请求关闭程序""" try: if loop and not loop.is_closed(): - try: - loop.run_until_complete(graceful_shutdown()) - except Exception as ge: # 捕捉优雅关闭时可能发生的错误 - logger.error(f"优雅关闭时发生错误: {ge}") - return False + try: + loop.run_until_complete(graceful_shutdown()) + except Exception as ge: # 捕捉优雅关闭时可能发生的错误 + logger.error(f"优雅关闭时发生错误: {ge}") + return False return True except Exception as e: logger.error(f"请求关闭程序时发生错误: {e}") @@ -246,9 +247,6 @@ def raw_main(): return MainSystem() - - - if __name__ == "__main__": exit_code = 0 # 用于记录程序最终的退出状态 try: @@ -272,7 +270,7 @@ if __name__ == "__main__": except Exception as ge: # 捕捉优雅关闭时可能发生的错误 logger.error(f"优雅关闭时发生错误: {ge}") # 新增:检测外部请求关闭 - + # except Exception as e: # 将主异常捕获移到外层 try...except # logger.error(f"事件循环内发生错误: {str(e)} {str(traceback.format_exc())}") # exit_code = 1 diff --git a/src/api/apiforgui.py b/src/api/apiforgui.py index 7e2460b05..a8027c480 100644 --- a/src/api/apiforgui.py +++ b/src/api/apiforgui.py @@ -1,6 +1,7 @@ from src.heart_flow.heartflow import heartflow from src.heart_flow.sub_heartflow import ChatState from src.common.logger_manager import get_logger + logger = get_logger("api") diff --git a/src/api/main.py b/src/api/main.py index a39dafd5a..1f47a57cb 100644 --- a/src/api/main.py +++ b/src/api/main.py @@ -2,6 +2,7 @@ from fastapi import APIRouter from strawberry.fastapi import GraphQLRouter import os import sys + sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", ".."))) # from src.config.config import BotConfig from src.common.logger_manager import get_logger @@ -53,10 +54,12 @@ async def forced_change_subheartflow_status_api(subheartflow_id: str, status: Ch logger.error(f"子心流 {subheartflow_id} 状态更改为 {status.value} 失败") return {"status": "failed"} + @router.get("/stop") async def force_stop_maibot(): """强制停止MAI Bot""" from bot import request_shutdown + success = await request_shutdown() if success: logger.info("MAI Bot已强制停止") @@ -65,6 +68,7 @@ async def force_stop_maibot(): logger.error("MAI Bot强制停止失败") return {"status": "failed"} + def start_api_server(): """启动API服务器""" global_server.register_router(router, prefix="/api/v1") diff --git a/src/plugins/knowledge/src/embedding_store.py b/src/plugins/knowledge/src/embedding_store.py index 2a27c5396..cf139ad3a 100644 --- a/src/plugins/knowledge/src/embedding_store.py +++ b/src/plugins/knowledge/src/embedding_store.py @@ -28,7 +28,11 @@ from rich.progress import ( install(extra_lines=3) ROOT_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "..", "..")) -EMBEDDING_DATA_DIR = os.path.join(ROOT_PATH, "data", "embedding") if global_config["persistence"]["embedding_data_dir"] is None else os.path.join(ROOT_PATH, global_config["persistence"]["embedding_data_dir"]) +EMBEDDING_DATA_DIR = ( + os.path.join(ROOT_PATH, "data", "embedding") + if global_config["persistence"]["embedding_data_dir"] is None + else os.path.join(ROOT_PATH, global_config["persistence"]["embedding_data_dir"]) +) EMBEDDING_DATA_DIR_STR = str(EMBEDDING_DATA_DIR).replace("\\", "/") TOTAL_EMBEDDING_TIMES = 3 # 统计嵌入次数 diff --git a/src/plugins/knowledge/src/kg_manager.py b/src/plugins/knowledge/src/kg_manager.py index 19403f9ba..ad5df0923 100644 --- a/src/plugins/knowledge/src/kg_manager.py +++ b/src/plugins/knowledge/src/kg_manager.py @@ -30,9 +30,16 @@ from .lpmmconfig import ( ) from .global_logger import logger + ROOT_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "..", "..")) -KG_DIR = os.path.join(ROOT_PATH, "data/rag") if global_config["persistence"]["rag_data_dir"] is None else os.path.join(ROOT_PATH, global_config["persistence"]["rag_data_dir"]) +KG_DIR = ( + os.path.join(ROOT_PATH, "data/rag") + if global_config["persistence"]["rag_data_dir"] is None + else os.path.join(ROOT_PATH, global_config["persistence"]["rag_data_dir"]) +) KG_DIR_STR = str(KG_DIR).replace("\\", "/") + + class KGManager: def __init__(self): # 会被保存的字段