From 7b4e7b94f842c0a3ebcad18effc254e34a293a16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=A5=E6=B2=B3=E6=99=B4?= Date: Wed, 11 Jun 2025 15:17:08 +0900 Subject: [PATCH] use structlog instead of loguru --- bot.py | 12 +- docs/plugin_quick_start.md | 2 +- requirements.txt | Bin 908 -> 914 bytes scripts/import_openie.py | 4 +- scripts/info_extraction.py | 4 +- scripts/message_retrieval_script.py | 2 +- scripts/mongodb_to_sqlite.py | 2 +- scripts/raw_data_preprocessor.py | 2 +- src/api/apiforgui.py | 2 +- src/api/maigraphql/__init__.py | 4 +- src/api/main.py | 6 +- src/api/reload_config.py | 2 +- src/chat/actions/base_action.py | 2 +- src/chat/actions/plugin_action.py | 2 +- src/chat/command/command_handler.py | 2 +- src/chat/emoji_system/emoji_manager.py | 16 +- .../expressors/default_expressor.py | 2 +- .../expressors/exprssion_learner.py | 2 +- src/chat/focus_chat/heartFC_Cycleinfo.py | 2 +- src/chat/focus_chat/heartFC_chat.py | 2 +- src/chat/focus_chat/heartFC_sender.py | 8 +- .../focus_chat/heartflow_message_processor.py | 2 +- src/chat/focus_chat/hfc_utils.py | 2 +- .../info_processors/base_processor.py | 2 +- .../info_processors/chattinginfo_processor.py | 2 +- .../info_processors/mind_processor.py | 2 +- .../info_processors/relationship_processor.py | 2 +- .../info_processors/self_processor.py | 2 +- .../info_processors/tool_processor.py | 2 +- .../working_memory_processor.py | 2 +- src/chat/focus_chat/memory_activator.py | 2 +- .../focus_chat/planners/action_manager.py | 2 +- .../focus_chat/planners/modify_actions.py | 2 +- .../focus_chat/planners/planner_factory.py | 2 +- .../focus_chat/planners/planner_simple.py | 2 +- .../focus_chat/replyer/default_replyer.py | 2 +- .../working_memory/memory_manager.py | 2 +- .../working_memory/working_memory.py | 2 +- src/chat/heart_flow/background_tasks.py | 2 +- src/chat/heart_flow/heartflow.py | 2 +- .../observation/actions_observation.py | 2 +- .../observation/chatting_observation.py | 2 +- .../observation/hfcloop_observation.py | 2 +- .../heart_flow/observation/observation.py | 2 +- .../observation/structure_observation.py | 2 +- .../observation/working_observation.py | 2 +- src/chat/heart_flow/sub_heartflow.py | 2 +- src/chat/heart_flow/subheartflow_manager.py | 2 +- src/chat/heart_flow/utils_chat.py | 2 +- src/chat/knowledge/global_logger.py | 2 +- src/chat/memory_system/Hippocampus.py | 20 +- src/chat/message_receive/bot.py | 2 +- src/chat/message_receive/chat_stream.py | 4 +- src/chat/message_receive/message.py | 2 +- src/chat/message_receive/message_sender.py | 8 +- src/chat/message_receive/storage.py | 4 +- src/chat/normal_chat/normal_chat.py | 2 +- .../normal_chat_action_modifier.py | 2 +- src/chat/normal_chat/normal_chat_expressor.py | 2 +- src/chat/normal_chat/normal_chat_generator.py | 2 +- src/chat/normal_chat/normal_chat_planner.py | 2 +- src/chat/normal_chat/normal_prompt.py | 2 +- .../normal_chat/willing/willing_manager.py | 11 +- src/chat/utils/logger_config.py | 88 -- src/chat/utils/prompt_builder.py | 4 +- src/chat/utils/statistic.py | 4 +- src/chat/utils/typo_generator.py | 4 +- src/chat/utils/utils.py | 4 +- src/chat/utils/utils_image.py | 2 +- src/common/database/database_model.py | 2 +- src/common/log_decorators.py | 110 -- src/common/logger.py | 1233 +---------------- src/common/logger_manager.py | 118 -- src/common/message/__init__.py | 4 +- src/common/message/api.py | 90 +- src/common/message_repository.py | 4 +- src/common/remote.py | 3 +- src/common/server.py | 9 +- src/config/config.py | 2 +- src/experimental/PFC/action_planner.py | 2 +- src/experimental/PFC/chat_observer.py | 4 +- src/experimental/PFC/conversation.py | 2 +- src/experimental/PFC/message_sender.py | 4 +- src/experimental/PFC/observation_info.py | 4 +- src/experimental/PFC/pfc.py | 10 +- src/experimental/PFC/pfc_KnowledgeFetcher.py | 4 +- src/experimental/PFC/pfc_manager.py | 4 +- src/experimental/PFC/pfc_utils.py | 4 +- src/experimental/PFC/reply_checker.py | 4 +- src/experimental/PFC/reply_generator.py | 4 +- src/experimental/PFC/waiter.py | 4 +- src/experimental/only_message_process.py | 2 +- src/individuality/expression_style.py | 2 +- src/individuality/not_using/offline_llm.py | 4 +- src/llm_models/utils_model.py | 9 +- src/main.py | 56 +- src/manager/async_task_manager.py | 2 +- src/manager/local_store_manager.py | 8 +- src/manager/mood_manager.py | 2 +- src/person_info/impression_update_task.py | 2 +- src/person_info/person_info.py | 2 +- src/person_info/relationship_manager.py | 2 +- src/plugin_system/apis/action_apis.py | 2 +- src/plugin_system/apis/config_api.py | 2 +- src/plugin_system/apis/database_api.py | 2 +- src/plugin_system/apis/hearflow_api.py | 2 +- src/plugin_system/apis/independent_apis.py | 2 +- src/plugin_system/apis/llm_api.py | 2 +- src/plugin_system/apis/message_api.py | 2 +- src/plugin_system/apis/plugin_api.py | 2 +- src/plugin_system/apis/stream_api.py | 2 +- src/plugin_system/apis/utils_api.py | 2 +- src/plugin_system/base/base_action.py | 2 +- src/plugin_system/base/base_command.py | 2 +- src/plugin_system/base/base_plugin.py | 2 +- src/plugin_system/core/component_registry.py | 2 +- src/plugin_system/core/plugin_manager.py | 2 +- src/plugins/built_in/core_actions/plugin.py | 2 +- .../built_in/doubao_pic_plugin/plugin.py | 2 +- src/plugins/built_in/mute_plugin/plugin.py | 2 +- .../built_in/tts_plgin/actions/tts_action.py | 2 +- .../built_in/vtb_action/actions/vtb_action.py | 2 +- src/plugins/examples/example_plugin/plugin.py | 2 +- src/tools/not_used/change_mood.py | 2 +- src/tools/not_used/change_relationship.py | 2 +- src/tools/tool_can_use/base_tool.py | 2 +- .../tool_can_use/compare_numbers_tool.py | 4 +- src/tools/tool_can_use/get_knowledge.py | 2 +- src/tools/tool_can_use/lpmm_get_knowledge.py | 2 +- src/tools/tool_can_use/rename_person_tool.py | 2 +- src/tools/tool_use.py | 2 +- tests/test_build_readable_messages.py | 4 +- 132 files changed, 283 insertions(+), 1804 deletions(-) delete mode 100644 src/chat/utils/logger_config.py delete mode 100644 src/common/log_decorators.py delete mode 100644 src/common/logger_manager.py diff --git a/bot.py b/bot.py index 3737279d3..f31a7d95f 100644 --- a/bot.py +++ b/bot.py @@ -7,7 +7,7 @@ import time import platform import traceback from dotenv import load_dotenv -from src.common.logger_manager import get_logger +from src.common.logger import get_logger # from src.common.logger import LogConfig, CONFIRM_STYLE_CONFIG from src.common.crash_logger import install_crash_handler @@ -69,10 +69,9 @@ def load_env(): # 直接加载生产环境变量配置 if os.path.exists(".env"): load_dotenv(".env", override=True) - logger.success("成功加载环境变量配置") + logger.info("成功加载环境变量配置") else: - logger.error("未找到.env文件,请确保文件存在") - raise FileNotFoundError("未找到.env文件,请确保文件存在") + logger.warn("未找到.env文件,请确保程序所需的环境变量被正确设置") def scan_provider(env_config: dict): @@ -199,6 +198,7 @@ def check_eula(): def raw_main(): + load_env() # 利用 TZ 环境变量设定程序工作的时区 if platform.system().lower() != "windows": time.tzset() @@ -211,8 +211,6 @@ def raw_main(): easter_egg() - load_env() - env_config = {key: os.getenv(key) for key in os.environ} scan_provider(env_config) @@ -235,7 +233,7 @@ if __name__ == "__main__": loop.run_until_complete(main_system.initialize()) loop.run_until_complete(main_system.schedule_tasks()) except KeyboardInterrupt: - # loop.run_until_complete(global_api.stop()) + # loop.run_until_complete(get_global_api().stop()) logger.warning("收到中断信号,正在优雅关闭...") if loop and not loop.is_closed(): try: diff --git a/docs/plugin_quick_start.md b/docs/plugin_quick_start.md index f8ea8d5cf..a92d4afbb 100644 --- a/docs/plugin_quick_start.md +++ b/docs/plugin_quick_start.md @@ -39,7 +39,7 @@ from src.plugin_system import ( BasePlugin, register_plugin, BaseAction, BaseCommand, ComponentInfo, ActionInfo, CommandInfo, ActionActivationType, ChatMode ) -from src.common.logger_manager import get_logger +from src.common.logger import get_logger logger = get_logger("my_first_plugin") diff --git a/requirements.txt b/requirements.txt index 4ac814b21434cd97c3d68c793e2236d6a85c6116..fc10ee6657543bbbbd2f89cf56e5ce16b650f87f 100644 GIT binary patch delta 31 lcmeBSpTs_4$HrsFm_&*hN*Ib5N*R)YbPhv4LplQ&0|2ZB2)O_N delta 22 dcmbQl-orj&2X_ubK0`V~DMJxM>Bg-mnE+4`2TuS1 diff --git a/scripts/import_openie.py b/scripts/import_openie.py index 66faaaf11..2dbaf6eb4 100644 --- a/scripts/import_openie.py +++ b/scripts/import_openie.py @@ -15,7 +15,7 @@ from src.chat.knowledge.embedding_store import EmbeddingManager from src.chat.knowledge.llm_client import LLMClient from src.chat.knowledge.open_ie import OpenIE from src.chat.knowledge.kg_manager import KGManager -from src.common.logger import get_module_logger +from src.common.logger import get_logger from src.chat.knowledge.utils.hash import get_sha256 @@ -23,7 +23,7 @@ from src.chat.knowledge.utils.hash import get_sha256 ROOT_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) OPENIE_DIR = global_config["persistence"]["openie_data_path"] or os.path.join(ROOT_PATH, "data/openie") -logger = get_module_logger("OpenIE导入") +logger = get_logger("OpenIE导入") def hash_deduplicate( diff --git a/scripts/info_extraction.py b/scripts/info_extraction.py index 2b18f8e37..b9815d2f6 100644 --- a/scripts/info_extraction.py +++ b/scripts/info_extraction.py @@ -12,7 +12,7 @@ sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) from rich.progress import Progress # 替换为 rich 进度条 -from src.common.logger import get_module_logger +from src.common.logger import get_logger from src.chat.knowledge.lpmmconfig import global_config from src.chat.knowledge.ie_process import info_extract_from_str from src.chat.knowledge.llm_client import LLMClient @@ -28,7 +28,7 @@ from rich.progress import ( TextColumn, ) -logger = get_module_logger("LPMM知识库-信息提取") +logger = get_logger("LPMM知识库-信息提取") ROOT_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) diff --git a/scripts/message_retrieval_script.py b/scripts/message_retrieval_script.py index 1601e637c..3def2da00 100644 --- a/scripts/message_retrieval_script.py +++ b/scripts/message_retrieval_script.py @@ -32,7 +32,7 @@ sys.path.insert(0, str(project_root)) from src.chat.utils.chat_message_builder import build_readable_messages from src.common.database.database_model import Messages -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.common.database.database import db from src.config.config import global_config from src.llm_models.utils_model import LLMRequest diff --git a/scripts/mongodb_to_sqlite.py b/scripts/mongodb_to_sqlite.py index 1a1793f40..938b4f7c7 100644 --- a/scripts/mongodb_to_sqlite.py +++ b/scripts/mongodb_to_sqlite.py @@ -42,7 +42,7 @@ from src.common.database.database_model import ( GraphNodes, GraphEdges, ) -from src.common.logger_manager import get_logger +from src.common.logger import get_logger logger = get_logger("mongodb_to_sqlite") diff --git a/scripts/raw_data_preprocessor.py b/scripts/raw_data_preprocessor.py index 35fb21c9d..ee8960f66 100644 --- a/scripts/raw_data_preprocessor.py +++ b/scripts/raw_data_preprocessor.py @@ -5,7 +5,7 @@ import sys # 新增系统模块导入 import datetime # 新增导入 sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.knowledge.lpmmconfig import global_config logger = get_logger("lpmm") diff --git a/src/api/apiforgui.py b/src/api/apiforgui.py index 853e8b49b..e1cffebb6 100644 --- a/src/api/apiforgui.py +++ b/src/api/apiforgui.py @@ -1,6 +1,6 @@ from src.chat.heart_flow.heartflow import heartflow from src.chat.heart_flow.sub_heartflow import ChatState -from src.common.logger_manager import get_logger +from src.common.logger import get_logger import time logger = get_logger("api") diff --git a/src/api/maigraphql/__init__.py b/src/api/maigraphql/__init__.py index b0efa7f9a..c414911de 100644 --- a/src/api/maigraphql/__init__.py +++ b/src/api/maigraphql/__init__.py @@ -3,7 +3,7 @@ import strawberry from fastapi import FastAPI from strawberry.fastapi import GraphQLRouter -from src.common.server import global_server +from src.common.server import get_global_server @strawberry.type @@ -17,6 +17,6 @@ schema = strawberry.Schema(Query) graphql_app = GraphQLRouter(schema) -fast_api_app: FastAPI = global_server.get_app() +fast_api_app: FastAPI = get_global_server().get_app() fast_api_app.include_router(graphql_app, prefix="/graphql") diff --git a/src/api/main.py b/src/api/main.py index db3e697f1..81cd5a24a 100644 --- a/src/api/main.py +++ b/src/api/main.py @@ -6,9 +6,9 @@ import sys # from src.chat.heart_flow.heartflow import heartflow 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 +from src.common.logger import get_logger from src.api.reload_config import reload_config as reload_config_func -from src.common.server import global_server +from src.common.server import get_global_server from src.api.apiforgui import ( get_all_subheartflow_ids, forced_change_subheartflow_status, @@ -108,4 +108,4 @@ async def get_system_basic_info(): def start_api_server(): """启动API服务器""" - global_server.register_router(router, prefix="/api/v1") + get_global_server().register_router(router, prefix="/api/v1") diff --git a/src/api/reload_config.py b/src/api/reload_config.py index 5137f3331..087c47e4f 100644 --- a/src/api/reload_config.py +++ b/src/api/reload_config.py @@ -1,7 +1,7 @@ from fastapi import HTTPException from rich.traceback import install from src.config.config import get_config_dir, load_config -from src.common.logger_manager import get_logger +from src.common.logger import get_logger import os install(extra_lines=3) diff --git a/src/chat/actions/base_action.py b/src/chat/actions/base_action.py index f33d870c5..3bb132fae 100644 --- a/src/chat/actions/base_action.py +++ b/src/chat/actions/base_action.py @@ -1,6 +1,6 @@ from abc import ABC, abstractmethod from typing import Tuple, Dict, Type -from src.common.logger_manager import get_logger +from src.common.logger import get_logger logger = get_logger("base_action") diff --git a/src/chat/actions/plugin_action.py b/src/chat/actions/plugin_action.py index c2d17fb42..cc715ad4f 100644 --- a/src/chat/actions/plugin_action.py +++ b/src/chat/actions/plugin_action.py @@ -1,6 +1,6 @@ from typing import Tuple, Dict, Any, Optional from src.chat.actions.base_action import BaseAction, register_action, ActionActivationType, ChatMode # noqa F401 -from src.common.logger_manager import get_logger +from src.common.logger import get_logger import os import inspect import toml # 导入 toml 库 diff --git a/src/chat/command/command_handler.py b/src/chat/command/command_handler.py index dfa7d92a9..58bc21347 100644 --- a/src/chat/command/command_handler.py +++ b/src/chat/command/command_handler.py @@ -1,7 +1,7 @@ import re from abc import ABC, abstractmethod from typing import Dict, List, Type, Optional, Tuple, Pattern -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.message_receive.message import MessageRecv from src.chat.focus_chat.hfc_utils import create_empty_anchor_message from src.chat.focus_chat.expressors.default_expressor import DefaultExpressor diff --git a/src/chat/emoji_system/emoji_manager.py b/src/chat/emoji_system/emoji_manager.py index 68495df61..2681077af 100644 --- a/src/chat/emoji_system/emoji_manager.py +++ b/src/chat/emoji_system/emoji_manager.py @@ -17,7 +17,7 @@ from src.common.database.database import db as peewee_db from src.config.config import global_config from src.chat.utils.utils_image import image_path_to_base64, image_manager from src.llm_models.utils_model import LLMRequest -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from rich.traceback import install install(extra_lines=3) @@ -163,7 +163,7 @@ class MaiEmoji: last_used_time=self.last_used_time, ) - logger.success(f"[注册] 表情包信息保存到数据库: {self.filename} ({self.emotion})") + logger.info(f"[注册] 表情包信息保存到数据库: {self.filename} ({self.emotion})") return True @@ -317,7 +317,7 @@ async def clear_temp_emoji() -> None: os.remove(file_path) logger.debug(f"[清理] 删除: {filename}") - logger.success("[清理] 完成") + logger.info("[清理] 完成") async def clean_unused_emojis(emoji_dir: str, emoji_objects: List["MaiEmoji"]) -> None: @@ -349,7 +349,7 @@ async def clean_unused_emojis(emoji_dir: str, emoji_objects: List["MaiEmoji"]) - logger.error(f"[错误] 删除文件时出错 ({file_full_path}): {str(e)}") if cleaned_count > 0: - logger.success(f"[清理] 在目录 {emoji_dir} 中清理了 {cleaned_count} 个破损表情包。") + logger.info(f"[清理] 在目录 {emoji_dir} 中清理了 {cleaned_count} 个破损表情包。") else: logger.info(f"[清理] 目录 {emoji_dir} 中没有需要清理的。") @@ -568,7 +568,7 @@ class EmojiManager: # 输出清理结果 if removed_count > 0: - logger.success(f"[清理] 已清理 {removed_count} 个失效/文件丢失的表情包记录") + logger.info(f"[清理] 已清理 {removed_count} 个失效/文件丢失的表情包记录") logger.info(f"[统计] 清理前记录数: {total_count} | 清理后有效记录数: {len(self.emoji_objects)}") else: logger.info(f"[检查] 已检查 {total_count} 个表情包记录,全部完好") @@ -645,7 +645,7 @@ class EmojiManager: self.emoji_objects = emoji_objects self.emoji_num = len(emoji_objects) - logger.success(f"[数据库] 加载完成: 共加载 {self.emoji_num} 个表情包记录。") + logger.info(f"[数据库] 加载完成: 共加载 {self.emoji_num} 个表情包记录。") if load_errors > 0: logger.warning(f"[数据库] 加载过程中出现 {load_errors} 个错误。") @@ -808,7 +808,7 @@ class EmojiManager: if register_success: self.emoji_objects.append(new_emoji) self.emoji_num += 1 - logger.success(f"[成功] 注册: {new_emoji.filename}") + logger.info(f"[成功] 注册: {new_emoji.filename}") return True else: logger.error(f"[错误] 注册表情包到数据库失败: {new_emoji.filename}") @@ -973,7 +973,7 @@ class EmojiManager: # 注册成功后,添加到内存列表 self.emoji_objects.append(new_emoji) self.emoji_num += 1 - logger.success(f"[成功] 注册新表情包: {filename} (当前: {self.emoji_num}/{self.emoji_num_max})") + logger.info(f"[成功] 注册新表情包: {filename} (当前: {self.emoji_num}/{self.emoji_num_max})") return True else: logger.error(f"[注册失败] 保存表情包到数据库/移动文件失败: {filename}") diff --git a/src/chat/focus_chat/expressors/default_expressor.py b/src/chat/focus_chat/expressors/default_expressor.py index 5bb11936a..b419b01b1 100644 --- a/src/chat/focus_chat/expressors/default_expressor.py +++ b/src/chat/focus_chat/expressors/default_expressor.py @@ -4,7 +4,7 @@ from src.chat.message_receive.message import MessageRecv, MessageThinking, Messa from src.chat.message_receive.message import Seg # Local import needed after move from src.chat.message_receive.message import UserInfo from src.chat.message_receive.chat_stream import chat_manager -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.llm_models.utils_model import LLMRequest from src.config.config import global_config from src.chat.utils.utils_image import image_path_to_base64 # Local import needed after move diff --git a/src/chat/focus_chat/expressors/exprssion_learner.py b/src/chat/focus_chat/expressors/exprssion_learner.py index ac2206fec..93420d0af 100644 --- a/src/chat/focus_chat/expressors/exprssion_learner.py +++ b/src/chat/focus_chat/expressors/exprssion_learner.py @@ -1,7 +1,7 @@ import time import random from typing import List, Dict, Optional, Any, Tuple -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.llm_models.utils_model import LLMRequest from src.config.config import global_config from src.chat.utils.chat_message_builder import get_raw_msg_by_timestamp_random, build_anonymous_messages diff --git a/src/chat/focus_chat/heartFC_Cycleinfo.py b/src/chat/focus_chat/heartFC_Cycleinfo.py index 7900a16a2..37eea6e9a 100644 --- a/src/chat/focus_chat/heartFC_Cycleinfo.py +++ b/src/chat/focus_chat/heartFC_Cycleinfo.py @@ -1,7 +1,7 @@ import time import os from typing import Optional, Dict, Any -from src.common.logger_manager import get_logger +from src.common.logger import get_logger import json logger = get_logger("hfc") # Logger Name Changed diff --git a/src/chat/focus_chat/heartFC_chat.py b/src/chat/focus_chat/heartFC_chat.py index d212579df..8d368c073 100644 --- a/src/chat/focus_chat/heartFC_chat.py +++ b/src/chat/focus_chat/heartFC_chat.py @@ -7,7 +7,7 @@ from typing import List, Optional, Dict, Any, Deque, Callable, Awaitable from src.chat.message_receive.chat_stream import chat_manager from rich.traceback import install from src.chat.utils.prompt_builder import global_prompt_manager -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.utils.timer_calculator import Timer from src.chat.heart_flow.observation.observation import Observation from src.chat.focus_chat.heartFC_Cycleinfo import CycleDetail diff --git a/src/chat/focus_chat/heartFC_sender.py b/src/chat/focus_chat/heartFC_sender.py index b2e4849bd..772e086d3 100644 --- a/src/chat/focus_chat/heartFC_sender.py +++ b/src/chat/focus_chat/heartFC_sender.py @@ -1,10 +1,10 @@ import asyncio from typing import Dict, Optional # 重新导入类型 from src.chat.message_receive.message import MessageSending, MessageThinking -from src.common.message.api import global_api +from src.common.message.api import get_global_api from src.chat.message_receive.storage import MessageStorage from src.chat.utils.utils import truncate_message -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.utils.utils import calculate_typing_time from rich.traceback import install import traceback @@ -21,8 +21,8 @@ async def send_message(message: MessageSending) -> str: try: # 直接调用API发送消息 - await global_api.send_message(message) - logger.success(f"已将消息 '{message_preview}' 发往平台'{message.message_info.platform}'") + await get_global_api().send_message(message) + logger.info(f"已将消息 '{message_preview}' 发往平台'{message.message_info.platform}'") return message.processed_plain_text except Exception as e: diff --git a/src/chat/focus_chat/heartflow_message_processor.py b/src/chat/focus_chat/heartflow_message_processor.py index b09b72bdd..ea9ce674c 100644 --- a/src/chat/focus_chat/heartflow_message_processor.py +++ b/src/chat/focus_chat/heartflow_message_processor.py @@ -6,7 +6,7 @@ from src.chat.heart_flow.heartflow import heartflow from src.chat.message_receive.chat_stream import chat_manager, ChatStream from src.chat.utils.utils import is_mentioned_bot_in_message from src.chat.utils.timer_calculator import Timer -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.person_info.relationship_manager import relationship_manager import math diff --git a/src/chat/focus_chat/hfc_utils.py b/src/chat/focus_chat/hfc_utils.py index 36907c4c0..faec67eb8 100644 --- a/src/chat/focus_chat/hfc_utils.py +++ b/src/chat/focus_chat/hfc_utils.py @@ -3,7 +3,7 @@ from typing import Optional from src.chat.message_receive.message import MessageRecv, BaseMessageInfo from src.chat.message_receive.chat_stream import ChatStream from src.chat.message_receive.message import UserInfo -from src.common.logger_manager import get_logger +from src.common.logger import get_logger import json logger = get_logger(__name__) diff --git a/src/chat/focus_chat/info_processors/base_processor.py b/src/chat/focus_chat/info_processors/base_processor.py index d5b90a5e9..4cf48617a 100644 --- a/src/chat/focus_chat/info_processors/base_processor.py +++ b/src/chat/focus_chat/info_processors/base_processor.py @@ -2,7 +2,7 @@ from abc import ABC, abstractmethod from typing import List, Any, Optional, Dict from src.chat.focus_chat.info.info_base import InfoBase from src.chat.heart_flow.observation.observation import Observation -from src.common.logger_manager import get_logger +from src.common.logger import get_logger logger = get_logger("base_processor") diff --git a/src/chat/focus_chat/info_processors/chattinginfo_processor.py b/src/chat/focus_chat/info_processors/chattinginfo_processor.py index 561b90f5d..90f0021dd 100644 --- a/src/chat/focus_chat/info_processors/chattinginfo_processor.py +++ b/src/chat/focus_chat/info_processors/chattinginfo_processor.py @@ -3,7 +3,7 @@ from src.chat.focus_chat.info.obs_info import ObsInfo from src.chat.heart_flow.observation.observation import Observation from src.chat.focus_chat.info.info_base import InfoBase from .base_processor import BaseProcessor -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.heart_flow.observation.chatting_observation import ChattingObservation from src.chat.heart_flow.observation.hfcloop_observation import HFCloopObservation from src.chat.focus_chat.info.cycle_info import CycleInfo diff --git a/src/chat/focus_chat/info_processors/mind_processor.py b/src/chat/focus_chat/info_processors/mind_processor.py index 9392ed324..1e36bb6be 100644 --- a/src/chat/focus_chat/info_processors/mind_processor.py +++ b/src/chat/focus_chat/info_processors/mind_processor.py @@ -4,7 +4,7 @@ from src.llm_models.utils_model import LLMRequest from src.config.config import global_config import time import traceback -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.individuality.individuality import individuality from src.chat.utils.prompt_builder import Prompt, global_prompt_manager from src.chat.utils.json_utils import safe_json_dumps diff --git a/src/chat/focus_chat/info_processors/relationship_processor.py b/src/chat/focus_chat/info_processors/relationship_processor.py index 9d25235c4..70ad994ac 100644 --- a/src/chat/focus_chat/info_processors/relationship_processor.py +++ b/src/chat/focus_chat/info_processors/relationship_processor.py @@ -4,7 +4,7 @@ from src.llm_models.utils_model import LLMRequest from src.config.config import global_config import time import traceback -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.utils.prompt_builder import Prompt, global_prompt_manager from src.chat.message_receive.chat_stream import chat_manager from src.person_info.relationship_manager import relationship_manager diff --git a/src/chat/focus_chat/info_processors/self_processor.py b/src/chat/focus_chat/info_processors/self_processor.py index a296dbe86..892c6713a 100644 --- a/src/chat/focus_chat/info_processors/self_processor.py +++ b/src/chat/focus_chat/info_processors/self_processor.py @@ -4,7 +4,7 @@ from src.llm_models.utils_model import LLMRequest from src.config.config import global_config import time import traceback -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.individuality.individuality import individuality from src.chat.utils.prompt_builder import Prompt, global_prompt_manager from src.chat.message_receive.chat_stream import chat_manager diff --git a/src/chat/focus_chat/info_processors/tool_processor.py b/src/chat/focus_chat/info_processors/tool_processor.py index 832b4d478..15856a8de 100644 --- a/src/chat/focus_chat/info_processors/tool_processor.py +++ b/src/chat/focus_chat/info_processors/tool_processor.py @@ -2,7 +2,7 @@ from src.chat.heart_flow.observation.chatting_observation import ChattingObserva from src.llm_models.utils_model import LLMRequest from src.config.config import global_config import time -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.individuality.individuality import individuality from src.chat.utils.prompt_builder import Prompt, global_prompt_manager from src.tools.tool_use import ToolUser diff --git a/src/chat/focus_chat/info_processors/working_memory_processor.py b/src/chat/focus_chat/info_processors/working_memory_processor.py index af016e7bb..9a83dd7dd 100644 --- a/src/chat/focus_chat/info_processors/working_memory_processor.py +++ b/src/chat/focus_chat/info_processors/working_memory_processor.py @@ -4,7 +4,7 @@ from src.llm_models.utils_model import LLMRequest from src.config.config import global_config import time import traceback -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.utils.prompt_builder import Prompt, global_prompt_manager from src.chat.message_receive.chat_stream import chat_manager from .base_processor import BaseProcessor diff --git a/src/chat/focus_chat/memory_activator.py b/src/chat/focus_chat/memory_activator.py index 26178d961..a557999d1 100644 --- a/src/chat/focus_chat/memory_activator.py +++ b/src/chat/focus_chat/memory_activator.py @@ -3,7 +3,7 @@ from src.chat.heart_flow.observation.structure_observation import StructureObser from src.chat.heart_flow.observation.hfcloop_observation import HFCloopObservation from src.llm_models.utils_model import LLMRequest from src.config.config import global_config -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.utils.prompt_builder import Prompt, global_prompt_manager from datetime import datetime from src.chat.memory_system.Hippocampus import hippocampus_manager diff --git a/src/chat/focus_chat/planners/action_manager.py b/src/chat/focus_chat/planners/action_manager.py index 71e256d13..a92bda199 100644 --- a/src/chat/focus_chat/planners/action_manager.py +++ b/src/chat/focus_chat/planners/action_manager.py @@ -4,7 +4,7 @@ from src.chat.heart_flow.observation.observation import Observation from src.chat.focus_chat.replyer.default_replyer import DefaultReplyer from src.chat.focus_chat.expressors.default_expressor import DefaultExpressor from src.chat.message_receive.chat_stream import ChatStream -from src.common.logger_manager import get_logger +from src.common.logger import get_logger # 不再需要导入动作类,因为已经在main.py中导入 # import src.chat.actions.default_actions # noqa diff --git a/src/chat/focus_chat/planners/modify_actions.py b/src/chat/focus_chat/planners/modify_actions.py index 05d317a54..f6461bb35 100644 --- a/src/chat/focus_chat/planners/modify_actions.py +++ b/src/chat/focus_chat/planners/modify_actions.py @@ -1,6 +1,6 @@ from typing import List, Optional, Any, Dict from src.chat.heart_flow.observation.observation import Observation -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.heart_flow.observation.hfcloop_observation import HFCloopObservation from src.chat.heart_flow.observation.chatting_observation import ChattingObservation from src.chat.message_receive.chat_stream import chat_manager diff --git a/src/chat/focus_chat/planners/planner_factory.py b/src/chat/focus_chat/planners/planner_factory.py index c92168238..e0215776b 100644 --- a/src/chat/focus_chat/planners/planner_factory.py +++ b/src/chat/focus_chat/planners/planner_factory.py @@ -3,7 +3,7 @@ from src.chat.focus_chat.planners.base_planner import BasePlanner from src.chat.focus_chat.planners.planner_simple import ActionPlanner as SimpleActionPlanner from src.chat.focus_chat.planners.action_manager import ActionManager from src.config.config import global_config -from src.common.logger_manager import get_logger +from src.common.logger import get_logger logger = get_logger("planner_factory") diff --git a/src/chat/focus_chat/planners/planner_simple.py b/src/chat/focus_chat/planners/planner_simple.py index d7345095d..5bf159b36 100644 --- a/src/chat/focus_chat/planners/planner_simple.py +++ b/src/chat/focus_chat/planners/planner_simple.py @@ -11,7 +11,7 @@ from src.chat.focus_chat.info.action_info import ActionInfo from src.chat.focus_chat.info.structured_info import StructuredInfo from src.chat.focus_chat.info.self_info import SelfInfo from src.chat.focus_chat.info.relation_info import RelationInfo -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.utils.prompt_builder import Prompt, global_prompt_manager from src.individuality.individuality import individuality from src.chat.focus_chat.planners.action_manager import ActionManager diff --git a/src/chat/focus_chat/replyer/default_replyer.py b/src/chat/focus_chat/replyer/default_replyer.py index b69573fd8..bfd766169 100644 --- a/src/chat/focus_chat/replyer/default_replyer.py +++ b/src/chat/focus_chat/replyer/default_replyer.py @@ -4,7 +4,7 @@ from src.chat.message_receive.message import MessageRecv, MessageThinking, Messa from src.chat.message_receive.message import Seg # Local import needed after move from src.chat.message_receive.message import UserInfo from src.chat.message_receive.chat_stream import chat_manager -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.llm_models.utils_model import LLMRequest from src.config.config import global_config from src.chat.utils.utils_image import image_path_to_base64 # Local import needed after move diff --git a/src/chat/focus_chat/working_memory/memory_manager.py b/src/chat/focus_chat/working_memory/memory_manager.py index f574222b4..100f4f264 100644 --- a/src/chat/focus_chat/working_memory/memory_manager.py +++ b/src/chat/focus_chat/working_memory/memory_manager.py @@ -2,7 +2,7 @@ from typing import Dict, Any, Type, TypeVar, List, Optional import traceback from json_repair import repair_json from rich.traceback import install -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.llm_models.utils_model import LLMRequest from src.config.config import global_config from src.chat.focus_chat.working_memory.memory_item import MemoryItem diff --git a/src/chat/focus_chat/working_memory/working_memory.py b/src/chat/focus_chat/working_memory/working_memory.py index 190dc9362..005dfa02a 100644 --- a/src/chat/focus_chat/working_memory/working_memory.py +++ b/src/chat/focus_chat/working_memory/working_memory.py @@ -1,6 +1,6 @@ from typing import List, Any, Optional import asyncio -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.focus_chat.working_memory.memory_manager import MemoryManager, MemoryItem from src.config.config import global_config diff --git a/src/chat/heart_flow/background_tasks.py b/src/chat/heart_flow/background_tasks.py index 066f930b9..b24dad32b 100644 --- a/src/chat/heart_flow/background_tasks.py +++ b/src/chat/heart_flow/background_tasks.py @@ -1,7 +1,7 @@ import asyncio import traceback from typing import Optional, Coroutine, Callable, Any, List -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.heart_flow.subheartflow_manager import SubHeartflowManager from src.config.config import global_config diff --git a/src/chat/heart_flow/heartflow.py b/src/chat/heart_flow/heartflow.py index d58c5cde2..c8c5d1295 100644 --- a/src/chat/heart_flow/heartflow.py +++ b/src/chat/heart_flow/heartflow.py @@ -1,5 +1,5 @@ from src.chat.heart_flow.sub_heartflow import SubHeartflow, ChatState -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from typing import Any, Optional, List from src.chat.heart_flow.subheartflow_manager import SubHeartflowManager from src.chat.heart_flow.background_tasks import BackgroundTaskManager # Import BackgroundTaskManager diff --git a/src/chat/heart_flow/observation/actions_observation.py b/src/chat/heart_flow/observation/actions_observation.py index 6550ddb72..12e972daf 100644 --- a/src/chat/heart_flow/observation/actions_observation.py +++ b/src/chat/heart_flow/observation/actions_observation.py @@ -1,7 +1,7 @@ # 定义了来自外部世界的信息 # 外部世界可以是某个聊天 不同平台的聊天 也可以是任意媒体 from datetime import datetime -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.focus_chat.planners.action_manager import ActionManager logger = get_logger("observation") diff --git a/src/chat/heart_flow/observation/chatting_observation.py b/src/chat/heart_flow/observation/chatting_observation.py index 72dbb596f..f6a266735 100644 --- a/src/chat/heart_flow/observation/chatting_observation.py +++ b/src/chat/heart_flow/observation/chatting_observation.py @@ -14,7 +14,7 @@ import difflib from src.chat.message_receive.message import MessageRecv # 添加 MessageRecv 导入 from src.chat.heart_flow.observation.observation import Observation -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.heart_flow.utils_chat import get_chat_type_and_target_info from src.chat.utils.prompt_builder import Prompt diff --git a/src/chat/heart_flow/observation/hfcloop_observation.py b/src/chat/heart_flow/observation/hfcloop_observation.py index 02617cba8..42944fccd 100644 --- a/src/chat/heart_flow/observation/hfcloop_observation.py +++ b/src/chat/heart_flow/observation/hfcloop_observation.py @@ -1,7 +1,7 @@ # 定义了来自外部世界的信息 # 外部世界可以是某个聊天 不同平台的聊天 也可以是任意媒体 from datetime import datetime -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.focus_chat.heartFC_Cycleinfo import CycleDetail from typing import List # Import the new utility function diff --git a/src/chat/heart_flow/observation/observation.py b/src/chat/heart_flow/observation/observation.py index 6396cda06..272f43d99 100644 --- a/src/chat/heart_flow/observation/observation.py +++ b/src/chat/heart_flow/observation/observation.py @@ -1,7 +1,7 @@ # 定义了来自外部世界的信息 # 外部世界可以是某个聊天 不同平台的聊天 也可以是任意媒体 from datetime import datetime -from src.common.logger_manager import get_logger +from src.common.logger import get_logger logger = get_logger("observation") diff --git a/src/chat/heart_flow/observation/structure_observation.py b/src/chat/heart_flow/observation/structure_observation.py index cfe06e435..f8ba27ba5 100644 --- a/src/chat/heart_flow/observation/structure_observation.py +++ b/src/chat/heart_flow/observation/structure_observation.py @@ -1,5 +1,5 @@ from datetime import datetime -from src.common.logger_manager import get_logger +from src.common.logger import get_logger # Import the new utility function diff --git a/src/chat/heart_flow/observation/working_observation.py b/src/chat/heart_flow/observation/working_observation.py index 8cb4a6d3a..ac6f7fb75 100644 --- a/src/chat/heart_flow/observation/working_observation.py +++ b/src/chat/heart_flow/observation/working_observation.py @@ -1,7 +1,7 @@ # 定义了来自外部世界的信息 # 外部世界可以是某个聊天 不同平台的聊天 也可以是任意媒体 from datetime import datetime -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.focus_chat.working_memory.working_memory import WorkingMemory from src.chat.focus_chat.working_memory.memory_item import MemoryItem from typing import List diff --git a/src/chat/heart_flow/sub_heartflow.py b/src/chat/heart_flow/sub_heartflow.py index d94f94f75..1d745384b 100644 --- a/src/chat/heart_flow/sub_heartflow.py +++ b/src/chat/heart_flow/sub_heartflow.py @@ -4,7 +4,7 @@ import asyncio import time from typing import Optional, List, Dict, Tuple import traceback -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.message_receive.message import MessageRecv from src.chat.message_receive.chat_stream import chat_manager from src.chat.focus_chat.heartFC_chat import HeartFChatting diff --git a/src/chat/heart_flow/subheartflow_manager.py b/src/chat/heart_flow/subheartflow_manager.py index 992672976..32deed530 100644 --- a/src/chat/heart_flow/subheartflow_manager.py +++ b/src/chat/heart_flow/subheartflow_manager.py @@ -1,7 +1,7 @@ import asyncio import time from typing import Dict, Any, Optional, List -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.message_receive.chat_stream import chat_manager from src.chat.heart_flow.sub_heartflow import SubHeartflow, ChatState diff --git a/src/chat/heart_flow/utils_chat.py b/src/chat/heart_flow/utils_chat.py index 22581e482..95af96be9 100644 --- a/src/chat/heart_flow/utils_chat.py +++ b/src/chat/heart_flow/utils_chat.py @@ -1,5 +1,5 @@ from typing import Optional, Tuple, Dict -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.message_receive.chat_stream import chat_manager from src.person_info.person_info import person_info_manager, PersonInfoManager diff --git a/src/chat/knowledge/global_logger.py b/src/chat/knowledge/global_logger.py index eebc88d65..48d43bdbd 100644 --- a/src/chat/knowledge/global_logger.py +++ b/src/chat/knowledge/global_logger.py @@ -1,5 +1,5 @@ # Configure logger -from src.common.logger_manager import get_logger +from src.common.logger import get_logger logger = get_logger("lpmm") diff --git a/src/chat/memory_system/Hippocampus.py b/src/chat/memory_system/Hippocampus.py index debb0e0ca..11131e013 100644 --- a/src/chat/memory_system/Hippocampus.py +++ b/src/chat/memory_system/Hippocampus.py @@ -12,7 +12,7 @@ import networkx as nx import numpy as np from collections import Counter from ...llm_models.utils_model import LLMRequest -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.memory_system.sample_distribution import MemoryBuildScheduler # 分布生成器 from ..utils.chat_message_builder import ( get_raw_msg_by_timestamp, @@ -829,7 +829,7 @@ class EntorhinalCortex: ) if messages: time_diff = (datetime.datetime.now().timestamp() - timestamp) / 3600 - logger.success(f"成功抽取 {time_diff:.1f} 小时前的消息样本,共{len(messages)}条") + logger.info(f"成功抽取 {time_diff:.1f} 小时前的消息样本,共{len(messages)}条") chat_samples.append(messages) else: logger.debug(f"时间戳 {timestamp} 的消息无需记忆") @@ -1046,8 +1046,8 @@ class EntorhinalCortex: GraphEdges.delete().where((GraphEdges.source == source) & (GraphEdges.target == target)).execute() end_time = time.time() - logger.success(f"[同步] 总耗时: {end_time - start_time:.2f}秒") - logger.success(f"[同步] 同步了 {len(memory_nodes)} 个节点和 {len(memory_edges)} 条边") + logger.info(f"[同步] 总耗时: {end_time - start_time:.2f}秒") + logger.info(f"[同步] 同步了 {len(memory_nodes)} 个节点和 {len(memory_edges)} 条边") async def resync_memory_to_db(self): """清空数据库并重新同步所有记忆数据""" @@ -1133,8 +1133,8 @@ class EntorhinalCortex: logger.info(f"[数据库] 写入 {len(edges_data)} 条边耗时: {edge_end - edge_start:.2f}秒") end_time = time.time() - logger.success(f"[数据库] 重新同步完成,总耗时: {end_time - start_time:.2f}秒") - logger.success(f"[数据库] 同步了 {len(nodes_data)} 个节点和 {len(edges_data)} 条边") + logger.info(f"[数据库] 重新同步完成,总耗时: {end_time - start_time:.2f}秒") + logger.info(f"[数据库] 同步了 {len(nodes_data)} 个节点和 {len(edges_data)} 条边") def sync_memory_from_db(self): """从数据库同步数据到内存中的图结构""" @@ -1209,7 +1209,7 @@ class EntorhinalCortex: ) if need_update: - logger.success("[数据库] 已为缺失的时间字段进行补充") + logger.info("[数据库] 已为缺失的时间字段进行补充") # 负责整合,遗忘,合并记忆 @@ -1387,7 +1387,7 @@ class ParahippocampalGyrus: logger.debug(f"进度: [{bar}] {progress:.1f}% ({i}/{len(memory_samples)})") if all_added_nodes: - logger.success(f"更新记忆: {', '.join(all_added_nodes)}") + logger.info(f"更新记忆: {', '.join(all_added_nodes)}") if all_added_edges: logger.debug(f"强化连接: {', '.join(all_added_edges)}") if all_connected_nodes: @@ -1396,7 +1396,7 @@ class ParahippocampalGyrus: await self.hippocampus.entorhinal_cortex.sync_memory_to_db() end_time = time.time() - logger.success(f"---------------------记忆构建耗时: {end_time - start_time:.2f} 秒---------------------") + logger.info(f"---------------------记忆构建耗时: {end_time - start_time:.2f} 秒---------------------") async def operation_forget_topic(self, percentage=0.005): start_time = time.time() @@ -1686,7 +1686,7 @@ class HippocampusManager: node_count = len(memory_graph.nodes()) edge_count = len(memory_graph.edges()) - logger.success(f"""-------------------------------- + logger.info(f"""-------------------------------- 记忆系统参数配置: 构建间隔: {global_config.memory.memory_build_interval}秒|样本数: {global_config.memory.memory_build_sample_num},长度: {global_config.memory.memory_build_sample_length}|压缩率: {global_config.memory.memory_compress_rate} 记忆构建分布: {global_config.memory.memory_build_distribution} diff --git a/src/chat/message_receive/bot.py b/src/chat/message_receive/bot.py index 67b956b04..a8885f9bc 100644 --- a/src/chat/message_receive/bot.py +++ b/src/chat/message_receive/bot.py @@ -1,7 +1,7 @@ import traceback from typing import Dict, Any -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.manager.mood_manager import mood_manager # 导入情绪管理器 from src.chat.message_receive.chat_stream import chat_manager from src.chat.message_receive.message import MessageRecv diff --git a/src/chat/message_receive/chat_stream.py b/src/chat/message_receive/chat_stream.py index 0f60d4942..4a9966d9e 100644 --- a/src/chat/message_receive/chat_stream.py +++ b/src/chat/message_receive/chat_stream.py @@ -13,7 +13,7 @@ from maim_message import GroupInfo, UserInfo if TYPE_CHECKING: from .message import MessageRecv -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from rich.traceback import install install(extra_lines=3) @@ -135,7 +135,7 @@ class ChatManager: """异步初始化""" try: await self.load_all_streams() - logger.success(f"聊天管理器已启动,已加载 {len(self.streams)} 个聊天流") + logger.info(f"聊天管理器已启动,已加载 {len(self.streams)} 个聊天流") except Exception as e: logger.error(f"聊天管理器启动失败: {str(e)}") diff --git a/src/chat/message_receive/message.py b/src/chat/message_receive/message.py index 92aff4c31..25ce81d7e 100644 --- a/src/chat/message_receive/message.py +++ b/src/chat/message_receive/message.py @@ -5,7 +5,7 @@ from typing import Optional, Any, TYPE_CHECKING import urllib3 -from src.common.logger_manager import get_logger +from src.common.logger import get_logger if TYPE_CHECKING: from .chat_stream import ChatStream diff --git a/src/chat/message_receive/message_sender.py b/src/chat/message_receive/message_sender.py index 364a5b6c2..77b013031 100644 --- a/src/chat/message_receive/message_sender.py +++ b/src/chat/message_receive/message_sender.py @@ -3,7 +3,7 @@ import asyncio import time from asyncio import Task from typing import Union -from src.common.message.api import global_api +from src.common.message.api import get_global_api # from ...common.database import db # 数据库依赖似乎不需要了,注释掉 from .message import MessageSending, MessageThinking, MessageSet @@ -12,7 +12,7 @@ from .storage import MessageStorage from ...config.config import global_config from ..utils.utils import truncate_message, calculate_typing_time, count_messages_between -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from rich.traceback import install install(extra_lines=3) @@ -24,7 +24,7 @@ logger = get_logger("sender") async def send_via_ws(message: MessageSending) -> None: """通过 WebSocket 发送消息""" try: - await global_api.send_message(message) + await get_global_api().send_message(message) except Exception as e: logger.error(f"WS发送失败: {e}") raise ValueError(f"未找到平台:{message.message_info.platform} 的url配置,请检查配置文件") from e @@ -50,7 +50,7 @@ async def send_message( try: await send_via_ws(message) - logger.success(f"发送消息 '{message_preview}' 成功") # 调整日志格式 + logger.info(f"发送消息 '{message_preview}' 成功") # 调整日志格式 except Exception as e: logger.error(f"发送消息 '{message_preview}' 失败: {str(e)}") diff --git a/src/chat/message_receive/storage.py b/src/chat/message_receive/storage.py index 8c05a9ab0..ebaf32b26 100644 --- a/src/chat/message_receive/storage.py +++ b/src/chat/message_receive/storage.py @@ -5,9 +5,9 @@ from typing import Union from .message import MessageSending, MessageRecv from .chat_stream import ChatStream from ...common.database.database_model import Messages, RecalledMessages # Import Peewee models -from src.common.logger import get_module_logger +from src.common.logger import get_logger -logger = get_module_logger("message_storage") +logger = get_logger("message_storage") class MessageStorage: diff --git a/src/chat/normal_chat/normal_chat.py b/src/chat/normal_chat/normal_chat.py index 7d37f7ead..5fb969ae1 100644 --- a/src/chat/normal_chat/normal_chat.py +++ b/src/chat/normal_chat/normal_chat.py @@ -4,7 +4,7 @@ import traceback from random import random from typing import List, Optional # 导入 Optional from maim_message import UserInfo, Seg -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.heart_flow.utils_chat import get_chat_type_and_target_info from src.manager.mood_manager import mood_manager from src.chat.message_receive.chat_stream import ChatStream, chat_manager diff --git a/src/chat/normal_chat/normal_chat_action_modifier.py b/src/chat/normal_chat/normal_chat_action_modifier.py index b13c1ee41..331d43615 100644 --- a/src/chat/normal_chat/normal_chat_action_modifier.py +++ b/src/chat/normal_chat/normal_chat_action_modifier.py @@ -1,5 +1,5 @@ from typing import List, Any, Dict -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.focus_chat.planners.action_manager import ActionManager from src.chat.actions.base_action import ActionActivationType, ChatMode from src.chat.utils.chat_message_builder import build_readable_messages, get_raw_msg_before_timestamp_with_chat diff --git a/src/chat/normal_chat/normal_chat_expressor.py b/src/chat/normal_chat/normal_chat_expressor.py index 0f423259f..6c9c1e3fe 100644 --- a/src/chat/normal_chat/normal_chat_expressor.py +++ b/src/chat/normal_chat/normal_chat_expressor.py @@ -12,7 +12,7 @@ from src.chat.message_receive.message import UserInfo from src.chat.message_receive.chat_stream import ChatStream, chat_manager from src.chat.message_receive.message_sender import message_manager from src.config.config import global_config -from src.common.logger_manager import get_logger +from src.common.logger import get_logger logger = get_logger("normal_chat_expressor") diff --git a/src/chat/normal_chat/normal_chat_generator.py b/src/chat/normal_chat/normal_chat_generator.py index 65e60e963..0dbf38a98 100644 --- a/src/chat/normal_chat/normal_chat_generator.py +++ b/src/chat/normal_chat/normal_chat_generator.py @@ -5,7 +5,7 @@ from src.config.config import global_config from src.chat.message_receive.message import MessageThinking from src.chat.normal_chat.normal_prompt import prompt_builder from src.chat.utils.timer_calculator import Timer -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.person_info.person_info import person_info_manager, PersonInfoManager from src.chat.utils.utils import process_llm_response diff --git a/src/chat/normal_chat/normal_chat_planner.py b/src/chat/normal_chat/normal_chat_planner.py index eceb73d77..1c9395303 100644 --- a/src/chat/normal_chat/normal_chat_planner.py +++ b/src/chat/normal_chat/normal_chat_planner.py @@ -3,7 +3,7 @@ from typing import Dict, Any from rich.traceback import install from src.llm_models.utils_model import LLMRequest from src.config.config import global_config -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.utils.prompt_builder import Prompt, global_prompt_manager from src.individuality.individuality import individuality from src.chat.focus_chat.planners.action_manager import ActionManager diff --git a/src/chat/normal_chat/normal_prompt.py b/src/chat/normal_chat/normal_prompt.py index 168b52da2..de016da38 100644 --- a/src/chat/normal_chat/normal_prompt.py +++ b/src/chat/normal_chat/normal_prompt.py @@ -1,5 +1,5 @@ from src.config.config import global_config -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.individuality.individuality import individuality from src.chat.utils.prompt_builder import Prompt, global_prompt_manager from src.chat.utils.chat_message_builder import build_readable_messages, get_raw_msg_before_timestamp_with_chat diff --git a/src/chat/normal_chat/willing/willing_manager.py b/src/chat/normal_chat/willing/willing_manager.py index 09f303a6e..201d3d85f 100644 --- a/src/chat/normal_chat/willing/willing_manager.py +++ b/src/chat/normal_chat/willing/willing_manager.py @@ -1,4 +1,4 @@ -from src.common.logger import LogConfig, WILLING_STYLE_CONFIG, LoguruLogger, get_module_logger +from src.common.logger import get_logger from dataclasses import dataclass from src.config.config import global_config from src.chat.message_receive.chat_stream import ChatStream, GroupInfo @@ -33,12 +33,7 @@ set_willing 设置某聊天流意愿 示例: 在 `mode_aggressive.py` 中,类名应为 `AggressiveWillingManager` """ -willing_config = LogConfig( - # 使用消息发送专用样式 - console_format=WILLING_STYLE_CONFIG["console_format"], - file_format=WILLING_STYLE_CONFIG["file_format"], -) -logger = get_module_logger("willing", config=willing_config) +logger = get_logger("willing") @dataclass @@ -93,7 +88,7 @@ class BaseWillingManager(ABC): self.chat_reply_willing: Dict[str, float] = {} # 存储每个聊天流的回复意愿(chat_id) self.ongoing_messages: Dict[str, WillingInfo] = {} # 当前正在进行的消息(message_id) self.lock = asyncio.Lock() - self.logger: LoguruLogger = logger + self.logger = logger def setup(self, message: MessageRecv, chat: ChatStream, is_mentioned_bot: bool, interested_rate: float): person_id = PersonInfoManager.get_person_id(chat.platform, chat.user_info.user_id) diff --git a/src/chat/utils/logger_config.py b/src/chat/utils/logger_config.py deleted file mode 100644 index 570ce41cd..000000000 --- a/src/chat/utils/logger_config.py +++ /dev/null @@ -1,88 +0,0 @@ -import sys -import loguru -from enum import Enum - - -class LogClassification(Enum): - BASE = "base" - MEMORY = "memory" - EMOJI = "emoji" - CHAT = "chat" - PBUILDER = "promptbuilder" - - -class LogModule: - logger = loguru.logger.opt() - - def __init__(self): - pass - - def setup_logger(self, log_type: LogClassification): - """配置日志格式 - - Args: - log_type: 日志类型,可选值:BASE(基础日志)、MEMORY(记忆系统日志)、EMOJI(表情包系统日志) - """ - # 移除默认日志处理器 - self.logger.remove() - - # 基础日志格式 - base_format = ( - "{time:HH:mm:ss} | {level: <8} | " - " d{name}:{function}:{line} - {message}" - ) - - chat_format = ( - "{time:HH:mm:ss} | {level: <8} | " - "{name}:{function}:{line} - {message}" - ) - - # 记忆系统日志格式 - memory_format = ( - "{time:HH:mm} | {level: <8} | " - "海马体 | {message}" - ) - - # 表情包系统日志格式 - emoji_format = ( - "{time:HH:mm} | {level: <8} | 表情包 | " - "{function}:{line} - {message}" - ) - - promptbuilder_format = ( - "{time:HH:mm} | {level: <8} | Prompt | " - "{function}:{line} - {message}" - ) - - # 根据日志类型选择日志格式和输出 - if log_type == LogClassification.CHAT: - self.logger.add( - sys.stderr, - format=chat_format, - # level="INFO" - ) - elif log_type == LogClassification.PBUILDER: - self.logger.add( - sys.stderr, - format=promptbuilder_format, - # level="INFO" - ) - elif log_type == LogClassification.MEMORY: - # 同时输出到控制台和文件 - self.logger.add( - sys.stderr, - format=memory_format, - # level="INFO" - ) - self.logger.add("logs/memory.log", format=memory_format, level="INFO", rotation="1 day", retention="7 days") - elif log_type == LogClassification.EMOJI: - self.logger.add( - sys.stderr, - format=emoji_format, - # level="INFO" - ) - self.logger.add("logs/emoji.log", format=emoji_format, level="INFO", rotation="1 day", retention="7 days") - else: # BASE - self.logger.add(sys.stderr, format=base_format, level="INFO") - - return self.logger diff --git a/src/chat/utils/prompt_builder.py b/src/chat/utils/prompt_builder.py index 5d7c6ac5a..cc9ee3e64 100644 --- a/src/chat/utils/prompt_builder.py +++ b/src/chat/utils/prompt_builder.py @@ -3,14 +3,14 @@ import re from contextlib import asynccontextmanager import asyncio import contextvars -from src.common.logger import get_module_logger +from src.common.logger import get_logger # import traceback from rich.traceback import install install(extra_lines=3) -logger = get_module_logger("prompt_build") +logger = get_logger("prompt_build") class PromptContext: diff --git a/src/chat/utils/statistic.py b/src/chat/utils/statistic.py index a657ae85b..567ec24cc 100644 --- a/src/chat/utils/statistic.py +++ b/src/chat/utils/statistic.py @@ -3,14 +3,14 @@ from datetime import datetime, timedelta from typing import Any, Dict, Tuple, List -from src.common.logger import get_module_logger +from src.common.logger import get_logger from src.manager.async_task_manager import AsyncTask from ...common.database.database import db # This db is the Peewee database instance from ...common.database.database_model import OnlineTime, LLMUsage, Messages # Import the Peewee model from src.manager.local_store_manager import local_storage -logger = get_module_logger("maibot_statistic") +logger = get_logger("maibot_statistic") # 统计数据的键 TOTAL_REQ_CNT = "total_requests" diff --git a/src/chat/utils/typo_generator.py b/src/chat/utils/typo_generator.py index 304a2abe5..24d65057c 100644 --- a/src/chat/utils/typo_generator.py +++ b/src/chat/utils/typo_generator.py @@ -13,9 +13,9 @@ from pathlib import Path import jieba from pypinyin import Style, pinyin -from src.common.logger import get_module_logger +from src.common.logger import get_logger -logger = get_module_logger("typo_gen") +logger = get_logger("typo_gen") class ChineseTypoGenerator: diff --git a/src/chat/utils/utils.py b/src/chat/utils/utils.py index 26be121e0..4f7280659 100644 --- a/src/chat/utils/utils.py +++ b/src/chat/utils/utils.py @@ -7,7 +7,7 @@ import jieba import numpy as np from maim_message import UserInfo -from src.common.logger import get_module_logger +from src.common.logger import get_logger from src.manager.mood_manager import mood_manager from ..message_receive.message import MessageRecv from src.llm_models.utils_model import LLMRequest @@ -15,7 +15,7 @@ from .typo_generator import ChineseTypoGenerator from ...config.config import global_config from ...common.message_repository import find_messages, count_messages -logger = get_module_logger("chat_utils") +logger = get_logger("chat_utils") def is_english_letter(char: str) -> bool: diff --git a/src/chat/utils/utils_image.py b/src/chat/utils/utils_image.py index 0fd9a91ca..ded80c052 100644 --- a/src/chat/utils/utils_image.py +++ b/src/chat/utils/utils_image.py @@ -13,7 +13,7 @@ from src.common.database.database_model import Images, ImageDescriptions from src.config.config import global_config from src.llm_models.utils_model import LLMRequest -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from rich.traceback import install install(extra_lines=3) diff --git a/src/common/database/database_model.py b/src/common/database/database_model.py index b9d6a6e15..bbca0753d 100644 --- a/src/common/database/database_model.py +++ b/src/common/database/database_model.py @@ -1,7 +1,7 @@ from peewee import Model, DoubleField, IntegerField, BooleanField, TextField, FloatField, DateTimeField from .database import db import datetime -from ..logger_manager import get_logger +from src.common.logger import get_logger logger = get_logger("database_model") # 请在此处定义您的数据库实例。 diff --git a/src/common/log_decorators.py b/src/common/log_decorators.py deleted file mode 100644 index 414ba923b..000000000 --- a/src/common/log_decorators.py +++ /dev/null @@ -1,110 +0,0 @@ -import functools -import inspect -from typing import Callable, Any -from .logger import logger, add_custom_style_handler -from rich.traceback import install - -install(extra_lines=3) - - -def use_log_style( - style_name: str, - console_format: str, - console_level: str = "INFO", - # file_format: Optional[str] = None, # 暂未支持文件输出 - # file_level: str = "DEBUG", -) -> Callable: - """装饰器:为函数内的日志启用特定的自定义样式。 - - Args: - style_name (str): 自定义样式的唯一名称。 - console_format (str): 控制台输出的格式字符串。 - console_level (str, optional): 控制台日志级别. Defaults to "INFO". - # file_format (Optional[str], optional): 文件输出格式 (暂未支持). Defaults to None. - # file_level (str, optional): 文件日志级别 (暂未支持). Defaults to "DEBUG". - - Returns: - Callable: 返回装饰器本身。 - """ - - def decorator(func: Callable) -> Callable: - # 获取被装饰函数所在的模块名 - module = inspect.getmodule(func) - if module is None: - # 如果无法获取模块(例如,在交互式解释器中定义函数),则使用默认名称 - module_name = "unknown_module" - logger.warning(f"无法确定函数 {func.__name__} 的模块,将使用 '{module_name}'") - else: - module_name = module.__name__ - - # 在函数首次被调用(或模块加载时)确保自定义处理器已添加 - # 注意:这会在模块加载时执行,而不是每次函数调用时 - # print(f"Setting up custom style '{style_name}' for module '{module_name}' in decorator definition") - add_custom_style_handler( - module_name=module_name, - style_name=style_name, - console_format=console_format, - console_level=console_level, - # file_format=file_format, - # file_level=file_level, - ) - - @functools.wraps(func) - def wrapper(*args: Any, **kwargs: Any) -> Any: - # 创建绑定了模块名和自定义样式标记的 logger 实例 - custom_logger = logger.bind(module=module_name, custom_style=style_name) - # print(f"Executing {func.__name__} with custom logger for style '{style_name}'") - # 将自定义 logger 作为第一个参数传递给原函数 - # 注意:这要求被装饰的函数第一个参数用于接收 logger - try: - return func(custom_logger, *args, **kwargs) - except TypeError as e: - # 捕获可能的类型错误,比如原函数不接受 logger 参数 - logger.error( - f"调用 {func.__name__} 时出错:请确保该函数接受一个 logger 实例作为其第一个参数。错误:{e}" - ) - # 可以选择重新抛出异常或返回特定值 - raise e - - return wrapper - - return decorator - - -# --- 示例用法 (可以在其他模块中这样使用) --- - -# # 假设这是你的模块 my_module.py -# from src.common.log_decorators import use_log_style -# from src.common.logger import get_module_logger, LoguruLogger - -# # 获取模块的标准 logger -# standard_logger = get_module_logger(__name__) - -# # 定义一个自定义样式 -# MY_SPECIAL_STYLE = "special" -# MY_SPECIAL_FORMAT = " SPECIAL [{time:HH:mm:ss}] | {message}" - -# @use_log_style(style_name=MY_SPECIAL_STYLE, console_format=MY_SPECIAL_FORMAT) -# def my_function_with_special_logs(custom_logger: LoguruLogger, x: int, y: int): -# standard_logger.info("这是一条使用标准格式的日志") -# custom_logger.info(f"开始执行特殊操作,参数: x={x}, y={y}") -# result = x + y -# custom_logger.success(f"特殊操作完成,结果: {result}") -# standard_logger.info("标准格式日志:函数即将结束") -# return result - -# @use_log_style(style_name="another_style", console_format="任务: {message}") -# def another_task(task_logger: LoguruLogger, task_name: str): -# standard_logger.debug("准备执行另一个任务") -# task_logger.info(f"正在处理任务 '{task_name}'") -# # ... 执行任务 ... -# task_logger.warning("任务处理中遇到一个警告") -# standard_logger.info("另一个任务的标准日志") - -# if __name__ == "__main__": -# print("\n--- 调用 my_function_with_special_logs ---") -# my_function_with_special_logs(10, 5) -# print("\n--- 调用 another_task ---") -# another_task("数据清理") -# print("\n--- 单独使用标准 logger ---") -# standard_logger.info("这是一条完全独立的标准日志") diff --git a/src/common/logger.py b/src/common/logger.py index 614ccdb1d..b7993f7a8 100644 --- a/src/common/logger.py +++ b/src/common/logger.py @@ -1,1227 +1,16 @@ -from loguru import logger -from typing import Optional, Union, List, Tuple -import sys -import os -from types import ModuleType -from pathlib import Path -from dotenv import load_dotenv +from typing import Callable, Optional +import structlog -# 加载 .env 文件 -env_path = Path(os.getcwd()) / ".env" -load_dotenv(dotenv_path=env_path) +raw_logger = structlog.get_logger() -# 保存原生处理器ID -default_handler_id = None -for handler_id in logger._core.handlers: - default_handler_id = handler_id - break +binds: dict[str, Callable] = {} -# 移除默认处理器 -if default_handler_id is not None: - logger.remove(default_handler_id) -# 类型别名 -LoguruLogger = logger.__class__ - -# 全局注册表:记录模块与处理器ID的映射 -_handler_registry: dict[str, List[int]] = {} -_custom_style_handlers: dict[Tuple[str, str], List[int]] = {} # 记录自定义样式处理器ID - -# 获取日志存储根地址 -ROOT_PATH = os.getcwd() -LOG_ROOT = str(ROOT_PATH) + "/" + "logs" - -SIMPLE_OUTPUT = os.getenv("SIMPLE_OUTPUT", "false").strip().lower() -if SIMPLE_OUTPUT == "true": - SIMPLE_OUTPUT = True -else: - SIMPLE_OUTPUT = False -print(f"SIMPLE_OUTPUT: {SIMPLE_OUTPUT}") - -if not SIMPLE_OUTPUT: - # 默认全局配置 - DEFAULT_CONFIG = { - # 日志级别配置 - "console_level": "INFO", - "file_level": "DEBUG", - # 格式配置 - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | {extra[module]: <12} | {message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | {message}", - "log_dir": LOG_ROOT, - "rotation": "00:00", - "retention": "3 days", - "compression": "zip", - } -else: - DEFAULT_CONFIG = { - # 日志级别配置 - "console_level": "INFO", - "file_level": "DEBUG", - # 格式配置 - "console_format": "{time:HH:mm:ss} | {extra[module]} | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | {message}", - "log_dir": LOG_ROOT, - "rotation": "00:00", - "retention": "3 days", - "compression": "zip", - } - - -MAIN_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "主程序 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 主程序 | {message}", - }, - "simple": { - "console_format": ( - "{time:HH:mm:ss} | 主程序 | {message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 主程序 | {message}", - }, -} - -# pfc配置 -PFC_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "PFC | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | PFC | {message}", - }, - "simple": { - "console_format": ( - "{time:HH:mm:ss} | PFC | {message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | PFC | {message}", - }, -} - -# MOOD -MOOD_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "心情 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 心情 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 心情 | {message} ", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 心情 | {message}", - }, -} -# tool use -TOOL_USE_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "工具使用 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 工具使用 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 工具使用 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 工具使用 | {message}", - }, -} - - -# relationship -RELATION_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "关系 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 关系 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 关系 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 关系 | {message}", - }, -} - -# config -CONFIG_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "配置 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 配置 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 配置 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 配置 | {message}", - }, -} - -SENDER_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "消息发送 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 消息发送 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 消息发送 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 消息发送 | {message}", - }, -} - -HEARTFLOW_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "麦麦大脑袋 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦大脑袋 | {message}", - }, - "simple": { - "console_format": ( - "{time:HH:mm:ss} | 麦麦大脑袋 | {message}" - ), # noqa: E501 - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦大脑袋 | {message}", - }, -} - -SCHEDULE_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "在干嘛 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 在干嘛 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 在干嘛 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 在干嘛 | {message}", - }, -} - -NORMAL_CHAT_RESPONSE_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "普通水群回复 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 普通水群回复 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 普通水群回复 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 普通水群回复 | {message}", - }, -} - -EXPRESS_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "麦麦表达 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦表达 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 麦麦表达 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦表达 | {message}", - }, -} - -# Topic日志样式配置 -TOPIC_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "话题 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 话题 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 主题 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 话题 | {message}", - }, -} - -# Topic日志样式配置 -CHAT_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "见闻 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 见闻 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 见闻 | {message}", # noqa: E501 - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 见闻 | {message}", - }, -} - -# Topic日志样式配置 -NORMAL_CHAT_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "普通水群 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 普通水群 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 普通水群 | {message}", # noqa: E501 - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 普通水群 | {message}", - }, -} - -# Topic日志样式配置 -FOCUS_CHAT_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "专注水群 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 专注水群 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 专注水群 | {message}", # noqa: E501 - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 专注水群 | {message}", - }, -} - - -REMOTE_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "远程 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 远程 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 远程| {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 远程 | {message}", - }, -} - -SUB_HEARTFLOW_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "麦麦水群 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦小脑袋 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 麦麦水群 | {message}", # noqa: E501 - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦水群 | {message}", - }, -} - -INTEREST_CHAT_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "兴趣 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 兴趣 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 兴趣 | {message}", # noqa: E501 - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 兴趣 | {message}", - }, -} - - -SUB_HEARTFLOW_MIND_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "麦麦小脑袋 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦小脑袋 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 麦麦小脑袋 | {message}", # noqa: E501 - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦小脑袋 | {message}", - }, -} - -SUBHEARTFLOW_MANAGER_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "麦麦水群[管理] | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦水群[管理] | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 麦麦水群[管理] | {message}", # noqa: E501 - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦水群[管理] | {message}", - }, -} - -BASE_TOOL_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "工具使用 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 工具使用 | {message}", - }, - "simple": { - "console_format": ( - "{time:HH:mm:ss} | 工具使用 | {message}" - ), # noqa: E501 - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 工具使用 | {message}", - }, -} - -CHAT_STREAM_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "聊天流 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天流 | {message}", - }, - "simple": { - "console_format": ( - "{time:HH:mm:ss} | 聊天流 | {message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天流 | {message}", - }, -} - -CHAT_MESSAGE_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "聊天消息 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天消息 | {message}", - }, - "simple": { - "console_format": ( - "{time:HH:mm:ss} | 聊天消息 | {message}" - ), # noqa: E501 - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天消息 | {message}", - }, -} - -PERSON_INFO_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "人物信息 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 人物信息 | {message}", - }, - "simple": { - "console_format": ( - "{time:HH:mm:ss} | 人物信息 | {message}" - ), # noqa: E501 - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 人物信息 | {message}", - }, -} - -BACKGROUND_TASKS_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "后台任务 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 后台任务 | {message}", - }, - "simple": { - "console_format": ( - "{time:HH:mm:ss} | 后台任务 | {message}" - ), # noqa: E501 - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 后台任务 | {message}", - }, -} - -WILLING_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "意愿 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 意愿 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 意愿 | {message} ", # noqa: E501 - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 意愿 | {message}", - }, -} - -PFC_ACTION_PLANNER_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "PFC私聊规划 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | PFC私聊规划 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | PFC私聊规划 | {message} ", # noqa: E501 - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | PFC私聊规划 | {message}", - }, -} - -# EMOJI,橙色,全着色 -EMOJI_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "表情包 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 表情包 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 表情包 | {message} ", # noqa: E501 - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 表情包 | {message}", - }, -} - -STATISTIC_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "麦麦统计 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦统计 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 麦麦统计 | {message} ", # noqa: E501 - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦统计 | {message}", - }, -} - - -# 海马体日志样式配置 -MEMORY_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "海马体 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 海马体 | {message}", - }, - "simple": { - "console_format": ( - "{time:HH:mm:ss} | 海马体 | {message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 海马体 | {message}", - }, -} - - -# LPMM配置 -LPMM_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "LPMM | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | LPMM | {message}", - }, - "simple": { - "console_format": ( - "{time:HH:mm:ss} | LPMM | {message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | LPMM | {message}", - }, -} - -# OBSERVATION_STYLE_CONFIG = { -# "advanced": { -# "console_format": ( -# "{time:YYYY-MM-DD HH:mm:ss} | " -# "{level: <8} | " -# "聊天观察 | " -# "{message}" -# ), -# "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天观察 | {message}", -# }, -# "simple": { -# "console_format": ( -# "{time:HH:mm:ss} | 聊天观察 | {message}" -# ), # noqa: E501 -# "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天观察 | {message}", -# }, -# } - -CHAT_IMAGE_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "聊天图片 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天图片 | {message}", - }, - "simple": { - "console_format": ( - "{time:HH:mm:ss} | 聊天图片 | {message}" - ), # noqa: E501 - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天图片 | {message}", - }, -} - -# HFC log -HFC_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "专注聊天 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 专注聊天 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 专注聊天 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 专注聊天 | {message}", - }, -} - -OBSERVATION_STYLE_CONFIG = { - "advanced": { - "console_format": "{time:HH:mm:ss} | 观察 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 观察 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 观察 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 观察 | {message}", - }, -} - -PROCESSOR_STYLE_CONFIG = { - "advanced": { - "console_format": "{time:HH:mm:ss} | 处理器 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 处理器 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 处理器 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 处理器 | {message}", - }, -} - -PLANNER_STYLE_CONFIG = { - "advanced": { - "console_format": "{time:HH:mm:ss} | 规划器 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 规划器 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 规划器 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 规划器 | {message}", - }, -} - -ACTION_TAKEN_STYLE_CONFIG = { - "advanced": { - "console_format": "{time:HH:mm:ss} | 动作 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 动作 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 动作 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 动作 | {message}", - }, -} - - -CONFIRM_STYLE_CONFIG = { - "console_format": "{message}", # noqa: E501 - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | EULA与PRIVACY确认 | {message}", -} - -# 天依蓝配置 -TIANYI_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "天依 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 天依 | {message}", - }, - "simple": { - "console_format": ( - "{time:HH:mm:ss} | 天依 | {message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 天依 | {message}", - }, -} - -# 模型日志样式配置 -MODEL_UTILS_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "模型 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 模型 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 模型 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 模型 | {message}", - }, -} - -MESSAGE_BUFFER_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "消息缓存 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 消息缓存 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 消息缓存 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 消息缓存 | {message}", - }, -} - -PROMPT_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "提示词构建 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 提示词构建 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 提示词构建 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 提示词构建 | {message}", - }, -} - -CHANGE_MOOD_TOOL_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "心情工具 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 心情工具 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 心情工具 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 心情工具 | {message}", - }, -} - -CHANGE_RELATIONSHIP_TOOL_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "关系工具 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 关系工具 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 关系工具 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 关系工具 | {message}", - }, -} - -GET_KNOWLEDGE_TOOL_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "获取知识 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 获取知识 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 获取知识 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 获取知识 | {message}", - }, -} - -GET_TIME_DATE_TOOL_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "获取时间日期 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 获取时间日期 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 获取时间日期 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 获取时间日期 | {message}", - }, -} - -LPMM_GET_KNOWLEDGE_TOOL_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "LPMM获取知识 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | LPMM获取知识 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | LPMM获取知识 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | LPMM获取知识 | {message}", - }, -} - -INIT_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "初始化 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 初始化 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 初始化 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 初始化 | {message}", - }, -} - -API_SERVER_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "API服务 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | API服务 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | API服务 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | API服务 | {message}", - }, -} - -ACTION_MANAGER_STYLE_CONFIG = { - "advanced": { - "console_format": "{time:HH:mm:ss} | 动作选择 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 动作选择 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 动作选择 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 动作选择 | {message}", - }, -} - -# maim_message 消息服务样式配置 -MAIM_MESSAGE_STYLE_CONFIG = { - "advanced": { - "console_format": ( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "消息服务 | " - "{message}" - ), - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 消息服务 | {message}", - }, - "simple": { - "console_format": "{time:HH:mm:ss} | 消息服务 | {message}", - "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 消息服务 | {message}", - }, -} - - -# 根据SIMPLE_OUTPUT选择配置 -MAIN_STYLE_CONFIG = MAIN_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else MAIN_STYLE_CONFIG["advanced"] -EMOJI_STYLE_CONFIG = EMOJI_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else EMOJI_STYLE_CONFIG["advanced"] -PFC_ACTION_PLANNER_STYLE_CONFIG = ( - PFC_ACTION_PLANNER_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else PFC_ACTION_PLANNER_STYLE_CONFIG["advanced"] -) -ACTION_MANAGER_STYLE_CONFIG = ( - ACTION_MANAGER_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else ACTION_MANAGER_STYLE_CONFIG["advanced"] -) -REMOTE_STYLE_CONFIG = REMOTE_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else REMOTE_STYLE_CONFIG["advanced"] -BASE_TOOL_STYLE_CONFIG = BASE_TOOL_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else BASE_TOOL_STYLE_CONFIG["advanced"] -PERSON_INFO_STYLE_CONFIG = PERSON_INFO_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else PERSON_INFO_STYLE_CONFIG["advanced"] -SUBHEARTFLOW_MANAGER_STYLE_CONFIG = ( - SUBHEARTFLOW_MANAGER_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else SUBHEARTFLOW_MANAGER_STYLE_CONFIG["advanced"] -) -BACKGROUND_TASKS_STYLE_CONFIG = ( - BACKGROUND_TASKS_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else BACKGROUND_TASKS_STYLE_CONFIG["advanced"] -) -MEMORY_STYLE_CONFIG = MEMORY_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else MEMORY_STYLE_CONFIG["advanced"] -CHAT_STREAM_STYLE_CONFIG = CHAT_STREAM_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CHAT_STREAM_STYLE_CONFIG["advanced"] -TOPIC_STYLE_CONFIG = TOPIC_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else TOPIC_STYLE_CONFIG["advanced"] -SENDER_STYLE_CONFIG = SENDER_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else SENDER_STYLE_CONFIG["advanced"] -NORMAL_CHAT_RESPONSE_STYLE_CONFIG = ( - NORMAL_CHAT_RESPONSE_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else NORMAL_CHAT_RESPONSE_STYLE_CONFIG["advanced"] -) -CHAT_STYLE_CONFIG = CHAT_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CHAT_STYLE_CONFIG["advanced"] -MOOD_STYLE_CONFIG = MOOD_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else MOOD_STYLE_CONFIG["advanced"] -RELATION_STYLE_CONFIG = RELATION_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else RELATION_STYLE_CONFIG["advanced"] -SCHEDULE_STYLE_CONFIG = SCHEDULE_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else SCHEDULE_STYLE_CONFIG["advanced"] -HEARTFLOW_STYLE_CONFIG = HEARTFLOW_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else HEARTFLOW_STYLE_CONFIG["advanced"] -SUB_HEARTFLOW_STYLE_CONFIG = ( - SUB_HEARTFLOW_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else SUB_HEARTFLOW_STYLE_CONFIG["advanced"] -) # noqa: E501 -SUB_HEARTFLOW_MIND_STYLE_CONFIG = ( - SUB_HEARTFLOW_MIND_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else SUB_HEARTFLOW_MIND_STYLE_CONFIG["advanced"] -) -WILLING_STYLE_CONFIG = WILLING_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else WILLING_STYLE_CONFIG["advanced"] -STATISTIC_STYLE_CONFIG = STATISTIC_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else STATISTIC_STYLE_CONFIG["advanced"] -CONFIG_STYLE_CONFIG = CONFIG_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CONFIG_STYLE_CONFIG["advanced"] -TOOL_USE_STYLE_CONFIG = TOOL_USE_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else TOOL_USE_STYLE_CONFIG["advanced"] -PFC_STYLE_CONFIG = PFC_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else PFC_STYLE_CONFIG["advanced"] -LPMM_STYLE_CONFIG = LPMM_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else LPMM_STYLE_CONFIG["advanced"] -HFC_STYLE_CONFIG = HFC_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else HFC_STYLE_CONFIG["advanced"] -ACTION_TAKEN_STYLE_CONFIG = ( - ACTION_TAKEN_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else ACTION_TAKEN_STYLE_CONFIG["advanced"] -) -OBSERVATION_STYLE_CONFIG = OBSERVATION_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else OBSERVATION_STYLE_CONFIG["advanced"] -PLANNER_STYLE_CONFIG = PLANNER_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else PLANNER_STYLE_CONFIG["advanced"] -PROCESSOR_STYLE_CONFIG = PROCESSOR_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else PROCESSOR_STYLE_CONFIG["advanced"] -TIANYI_STYLE_CONFIG = TIANYI_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else TIANYI_STYLE_CONFIG["advanced"] -MODEL_UTILS_STYLE_CONFIG = MODEL_UTILS_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else MODEL_UTILS_STYLE_CONFIG["advanced"] -PROMPT_STYLE_CONFIG = PROMPT_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else PROMPT_STYLE_CONFIG["advanced"] -CHANGE_MOOD_TOOL_STYLE_CONFIG = ( - CHANGE_MOOD_TOOL_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CHANGE_MOOD_TOOL_STYLE_CONFIG["advanced"] -) -CHANGE_RELATIONSHIP_TOOL_STYLE_CONFIG = ( - CHANGE_RELATIONSHIP_TOOL_STYLE_CONFIG["simple"] - if SIMPLE_OUTPUT - else CHANGE_RELATIONSHIP_TOOL_STYLE_CONFIG["advanced"] -) -GET_KNOWLEDGE_TOOL_STYLE_CONFIG = ( - GET_KNOWLEDGE_TOOL_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else GET_KNOWLEDGE_TOOL_STYLE_CONFIG["advanced"] -) -GET_TIME_DATE_TOOL_STYLE_CONFIG = ( - GET_TIME_DATE_TOOL_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else GET_TIME_DATE_TOOL_STYLE_CONFIG["advanced"] -) -LPMM_GET_KNOWLEDGE_TOOL_STYLE_CONFIG = ( - LPMM_GET_KNOWLEDGE_TOOL_STYLE_CONFIG["simple"] - if SIMPLE_OUTPUT - else LPMM_GET_KNOWLEDGE_TOOL_STYLE_CONFIG["advanced"] -) -# OBSERVATION_STYLE_CONFIG = OBSERVATION_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else OBSERVATION_STYLE_CONFIG["advanced"] -MESSAGE_BUFFER_STYLE_CONFIG = ( - MESSAGE_BUFFER_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else MESSAGE_BUFFER_STYLE_CONFIG["advanced"] -) -CHAT_MESSAGE_STYLE_CONFIG = ( - CHAT_MESSAGE_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CHAT_MESSAGE_STYLE_CONFIG["advanced"] -) -CHAT_IMAGE_STYLE_CONFIG = CHAT_IMAGE_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CHAT_IMAGE_STYLE_CONFIG["advanced"] -INIT_STYLE_CONFIG = INIT_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else INIT_STYLE_CONFIG["advanced"] -API_SERVER_STYLE_CONFIG = API_SERVER_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else API_SERVER_STYLE_CONFIG["advanced"] -MAIM_MESSAGE_STYLE_CONFIG = ( - MAIM_MESSAGE_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else MAIM_MESSAGE_STYLE_CONFIG["advanced"] -) -INTEREST_CHAT_STYLE_CONFIG = ( - INTEREST_CHAT_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else INTEREST_CHAT_STYLE_CONFIG["advanced"] -) -NORMAL_CHAT_STYLE_CONFIG = NORMAL_CHAT_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else NORMAL_CHAT_STYLE_CONFIG["advanced"] -FOCUS_CHAT_STYLE_CONFIG = FOCUS_CHAT_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else FOCUS_CHAT_STYLE_CONFIG["advanced"] -EXPRESS_STYLE_CONFIG = EXPRESS_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else EXPRESS_STYLE_CONFIG["advanced"] - - -def is_registered_module(record: dict) -> bool: - """检查是否为已注册的模块""" - return record["extra"].get("module") in _handler_registry - - -def is_unregistered_module(record: dict) -> bool: - """检查是否为未注册的模块""" - return not is_registered_module(record) - - -def log_patcher(record: dict) -> None: - """自动填充未设置模块名的日志记录,保留原生模块名称""" - if "module" not in record["extra"]: - # 尝试从name中提取模块名 - module_name = record.get("name", "") - if module_name == "": - module_name = "root" - record["extra"]["module"] = module_name - - -# 应用全局修补器 -logger.configure(patcher=log_patcher) - - -class LogConfig: - """日志配置类""" - - def __init__(self, **kwargs): - self.config = DEFAULT_CONFIG.copy() - self.config.update(kwargs) - - def to_dict(self) -> dict: - return self.config.copy() - - def update(self, **kwargs): - self.config.update(kwargs) - - -def get_module_logger( - module: Union[str, ModuleType], - *, - console_level: Optional[str] = None, - file_level: Optional[str] = None, - extra_handlers: Optional[List[dict]] = None, - config: Optional[LogConfig] = None, -) -> LoguruLogger: - module_name = module if isinstance(module, str) else module.__name__ - current_config = config.config if config else DEFAULT_CONFIG - - # 清理旧处理器 - if module_name in _handler_registry: - for handler_id in _handler_registry[module_name]: - logger.remove(handler_id) - del _handler_registry[module_name] - - handler_ids = [] - - # 控制台处理器 - console_id = logger.add( - sink=sys.stderr, - level=os.getenv("CONSOLE_LOG_LEVEL", console_level or current_config["console_level"]), - format=current_config["console_format"], - filter=lambda record: record["extra"].get("module") == module_name and "custom_style" not in record["extra"], - enqueue=True, - ) - handler_ids.append(console_id) - - # 文件处理器 - log_dir = Path(current_config["log_dir"]) - log_dir.mkdir(parents=True, exist_ok=True) - log_file = log_dir / "{time:YYYY-MM-DD}.log" - log_file.parent.mkdir(parents=True, exist_ok=True) - - file_id = logger.add( - sink=str(log_file), - level=os.getenv("FILE_LOG_LEVEL", file_level or current_config["file_level"]), - format=current_config["file_format"], - rotation=current_config["rotation"], - retention=current_config["retention"], - compression=current_config["compression"], - encoding="utf-8", - filter=lambda record: record["extra"].get("module") == module_name and "custom_style" not in record["extra"], - enqueue=True, - ) - handler_ids.append(file_id) - - # 额外处理器 - if extra_handlers: - for handler in extra_handlers: - handler_id = logger.add(**handler) - handler_ids.append(handler_id) - - # 更新注册表 - _handler_registry[module_name] = handler_ids - - return logger.bind(module=module_name) - - -def add_custom_style_handler( - module_name: str, - style_name: str, - console_format: str, - console_level: str = "INFO", - # file_format: Optional[str] = None, # 暂时只支持控制台 - # file_level: str = "DEBUG", - # config: Optional[LogConfig] = None, # 暂时不使用全局配置 -) -> None: - """为指定模块和样式名添加自定义日志处理器(目前仅支持控制台).""" - handler_key = (module_name, style_name) - - # 如果已存在该模块和样式的处理器,则不重复添加 - if handler_key in _custom_style_handlers: - # print(f"Custom handler for {handler_key} already exists.") - return - - handler_ids = [] - - # 添加自定义控制台处理器 - try: - custom_console_id = logger.add( - sink=sys.stderr, - level=os.getenv(f"{module_name.upper()}_{style_name.upper()}_CONSOLE_LEVEL", console_level), - format=console_format, - filter=lambda record: record["extra"].get("module") == module_name - and record["extra"].get("custom_style") == style_name, - enqueue=True, - ) - handler_ids.append(custom_console_id) - # print(f"Added custom console handler {custom_console_id} for {handler_key}") - except Exception as e: - logger.error(f"Failed to add custom console handler for {handler_key}: {e}") - # 如果添加失败,确保列表为空,避免记录不存在的ID - handler_ids = [] - - # # 文件处理器 (可选,按需启用) - # if file_format: - # current_config = config.config if config else DEFAULT_CONFIG - # log_dir = Path(current_config["log_dir"]) - # log_dir.mkdir(parents=True, exist_ok=True) - # # 可以考虑将自定义样式的日志写入单独文件或模块主文件 - # log_file = log_dir / module_name / f"{style_name}_{{time:YYYY-MM-DD}}.log" - # log_file.parent.mkdir(parents=True, exist_ok=True) - # try: - # custom_file_id = logger.add( - # sink=str(log_file), - # level=os.getenv(f"{module_name.upper()}_{style_name.upper()}_FILE_LEVEL", file_level), - # format=file_format, - # rotation=current_config["rotation"], - # retention=current_config["retention"], - # compression=current_config["compression"], - # encoding="utf-8", - # message_filter=lambda record: record["extra"].get("module") == module_name - # and record["extra"].get("custom_style") == style_name, - # enqueue=True, - # ) - # handler_ids.append(custom_file_id) - # except Exception as e: - # logger.error(f"Failed to add custom file handler for {handler_key}: {e}") - - # 更新自定义处理器注册表 - if handler_ids: - _custom_style_handlers[handler_key] = handler_ids - - -def remove_custom_style_handler(module_name: str, style_name: str) -> None: - """移除指定模块和样式名的自定义日志处理器.""" - handler_key = (module_name, style_name) - if handler_key in _custom_style_handlers: - for handler_id in _custom_style_handlers[handler_key]: - try: - logger.remove(handler_id) - # print(f"Removed custom handler {handler_id} for {handler_key}") - except ValueError: - # 可能已经被移除或不存在 - # print(f"Handler {handler_id} for {handler_key} already removed or invalid.") - pass - del _custom_style_handlers[handler_key] - - -def remove_module_logger(module_name: str) -> None: - """清理指定模块的日志处理器""" - if module_name in _handler_registry: - for handler_id in _handler_registry[module_name]: - logger.remove(handler_id) - del _handler_registry[module_name] - - -# 添加全局默认处理器(只处理未注册模块的日志--->控制台) -# print(os.getenv("DEFAULT_CONSOLE_LOG_LEVEL", "SUCCESS")) -DEFAULT_GLOBAL_HANDLER = logger.add( - sink=sys.stderr, - level=os.getenv("DEFAULT_CONSOLE_LOG_LEVEL", "SUCCESS"), - format=( - "{time:YYYY-MM-DD HH:mm:ss} | " - "{level: <8} | " - "{name: <12} | " - "{message}" - ), - filter=lambda record: is_unregistered_module(record), # 只处理未注册模块的日志,并过滤nonebot - enqueue=True, -) - -# 添加全局默认文件处理器(只处理未注册模块的日志--->logs文件夹) -log_dir = Path(DEFAULT_CONFIG["log_dir"]) -log_dir.mkdir(parents=True, exist_ok=True) -other_log_dir = log_dir / "other" -other_log_dir.mkdir(parents=True, exist_ok=True) - -DEFAULT_FILE_HANDLER = logger.add( - sink=str(other_log_dir / "{time:YYYY-MM-DD}.log"), - level=os.getenv("DEFAULT_FILE_LOG_LEVEL", "DEBUG"), - format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name: <15} | {message}", - rotation=DEFAULT_CONFIG["rotation"], - retention=DEFAULT_CONFIG["retention"], - compression=DEFAULT_CONFIG["compression"], - encoding="utf-8", - filter=lambda record: is_unregistered_module(record), # 只处理未注册模块的日志,并过滤nonebot - enqueue=True, -) +def get_logger(name: Optional[str]): + if name is None: + return raw_logger + logger = binds.get(name) + if logger is None: + binds[name] = logger = structlog.get_logger(name).bind(name=name) + return logger diff --git a/src/common/logger_manager.py b/src/common/logger_manager.py deleted file mode 100644 index be75b0018..000000000 --- a/src/common/logger_manager.py +++ /dev/null @@ -1,118 +0,0 @@ -from src.common.logger import get_module_logger, LogConfig -from src.common.logger import ( - BACKGROUND_TASKS_STYLE_CONFIG, - MAIN_STYLE_CONFIG, - MEMORY_STYLE_CONFIG, - PFC_STYLE_CONFIG, - MOOD_STYLE_CONFIG, - TOOL_USE_STYLE_CONFIG, - RELATION_STYLE_CONFIG, - CONFIG_STYLE_CONFIG, - HEARTFLOW_STYLE_CONFIG, - CHAT_STYLE_CONFIG, - EMOJI_STYLE_CONFIG, - SUB_HEARTFLOW_STYLE_CONFIG, - SUB_HEARTFLOW_MIND_STYLE_CONFIG, - SUBHEARTFLOW_MANAGER_STYLE_CONFIG, - BASE_TOOL_STYLE_CONFIG, - CHAT_STREAM_STYLE_CONFIG, - PERSON_INFO_STYLE_CONFIG, - WILLING_STYLE_CONFIG, - PFC_ACTION_PLANNER_STYLE_CONFIG, - STATISTIC_STYLE_CONFIG, - NORMAL_CHAT_STYLE_CONFIG, - FOCUS_CHAT_STYLE_CONFIG, - LPMM_STYLE_CONFIG, - HFC_STYLE_CONFIG, - OBSERVATION_STYLE_CONFIG, - PLANNER_STYLE_CONFIG, - PROCESSOR_STYLE_CONFIG, - ACTION_TAKEN_STYLE_CONFIG, - TIANYI_STYLE_CONFIG, - REMOTE_STYLE_CONFIG, - TOPIC_STYLE_CONFIG, - SENDER_STYLE_CONFIG, - CONFIRM_STYLE_CONFIG, - MODEL_UTILS_STYLE_CONFIG, - PROMPT_STYLE_CONFIG, - CHANGE_MOOD_TOOL_STYLE_CONFIG, - CHANGE_RELATIONSHIP_TOOL_STYLE_CONFIG, - GET_KNOWLEDGE_TOOL_STYLE_CONFIG, - GET_TIME_DATE_TOOL_STYLE_CONFIG, - LPMM_GET_KNOWLEDGE_TOOL_STYLE_CONFIG, - MESSAGE_BUFFER_STYLE_CONFIG, - CHAT_MESSAGE_STYLE_CONFIG, - CHAT_IMAGE_STYLE_CONFIG, - INIT_STYLE_CONFIG, - INTEREST_CHAT_STYLE_CONFIG, - API_SERVER_STYLE_CONFIG, - NORMAL_CHAT_RESPONSE_STYLE_CONFIG, - EXPRESS_STYLE_CONFIG, - ACTION_MANAGER_STYLE_CONFIG, -) - -# 可根据实际需要补充更多模块配置 -MODULE_LOGGER_CONFIGS = { - "background_tasks": BACKGROUND_TASKS_STYLE_CONFIG, # 后台任务 - "main": MAIN_STYLE_CONFIG, # 主程序 - "memory": MEMORY_STYLE_CONFIG, # 海马体 - "pfc": PFC_STYLE_CONFIG, # PFC - "mood": MOOD_STYLE_CONFIG, # 心情 - "tool_use": TOOL_USE_STYLE_CONFIG, # 工具使用 - "relation": RELATION_STYLE_CONFIG, # 关系 - "config": CONFIG_STYLE_CONFIG, # 配置 - "heartflow": HEARTFLOW_STYLE_CONFIG, # 麦麦大脑袋 - "normal_chat_response": NORMAL_CHAT_RESPONSE_STYLE_CONFIG, # 麦麦组织语言 - "chat": CHAT_STYLE_CONFIG, # 见闻 - "emoji": EMOJI_STYLE_CONFIG, # 表情包 - "sub_heartflow": SUB_HEARTFLOW_STYLE_CONFIG, # 麦麦水群 - "sub_heartflow_mind": SUB_HEARTFLOW_MIND_STYLE_CONFIG, # 麦麦小脑袋 - "subheartflow_manager": SUBHEARTFLOW_MANAGER_STYLE_CONFIG, # 麦麦水群[管理] - "base_tool": BASE_TOOL_STYLE_CONFIG, # 工具使用 - "chat_stream": CHAT_STREAM_STYLE_CONFIG, # 聊天流 - "person_info": PERSON_INFO_STYLE_CONFIG, # 人物信息 - "willing": WILLING_STYLE_CONFIG, # 意愿 - "pfc_action_planner": PFC_ACTION_PLANNER_STYLE_CONFIG, # PFC私聊规划 - "statistic": STATISTIC_STYLE_CONFIG, # 麦麦统计 - "lpmm": LPMM_STYLE_CONFIG, # LPMM - "hfc": HFC_STYLE_CONFIG, # HFC - "observation": OBSERVATION_STYLE_CONFIG, # 聊天观察 - "planner": PLANNER_STYLE_CONFIG, # 规划器 - "processor": PROCESSOR_STYLE_CONFIG, # 处理器 - "action_taken": ACTION_TAKEN_STYLE_CONFIG, # 动作 - "tianyi": TIANYI_STYLE_CONFIG, # 天依 - "remote": REMOTE_STYLE_CONFIG, # 远程 - "topic": TOPIC_STYLE_CONFIG, # 话题 - "sender": SENDER_STYLE_CONFIG, # 消息发送 - "confirm": CONFIRM_STYLE_CONFIG, # EULA与PRIVACY确认 - "model_utils": MODEL_UTILS_STYLE_CONFIG, # 模型工具 - "prompt": PROMPT_STYLE_CONFIG, # 提示词 - "change_mood_tool": CHANGE_MOOD_TOOL_STYLE_CONFIG, # 改变心情工具 - "change_relationship": CHANGE_RELATIONSHIP_TOOL_STYLE_CONFIG, # 改变关系工具 - "get_knowledge_tool": GET_KNOWLEDGE_TOOL_STYLE_CONFIG, # 获取知识工具 - "get_time_date": GET_TIME_DATE_TOOL_STYLE_CONFIG, # 获取时间日期工具 - "lpm_get_knowledge_tool": LPMM_GET_KNOWLEDGE_TOOL_STYLE_CONFIG, # LPMM获取知识工具 - "message_buffer": MESSAGE_BUFFER_STYLE_CONFIG, # 消息缓冲 - "chat_message": CHAT_MESSAGE_STYLE_CONFIG, # 聊天消息 - "chat_image": CHAT_IMAGE_STYLE_CONFIG, # 聊天图片 - "init": INIT_STYLE_CONFIG, # 初始化 - "interest_chat": INTEREST_CHAT_STYLE_CONFIG, # 兴趣 - "api": API_SERVER_STYLE_CONFIG, # API服务器 - "normal_chat": NORMAL_CHAT_STYLE_CONFIG, # 一般水群 - "focus_chat": FOCUS_CHAT_STYLE_CONFIG, # 专注水群 - "expressor": EXPRESS_STYLE_CONFIG, # 麦麦表达 - "action_manager": ACTION_MANAGER_STYLE_CONFIG, # 动作选择 - # ...如有更多模块,继续添加... -} - - -def get_logger(module_name: str): - style_config = MODULE_LOGGER_CONFIGS.get(module_name) - if style_config: - log_config = LogConfig( - console_format=style_config["console_format"], - file_format=style_config["file_format"], - ) - return get_module_logger(module_name, config=log_config) - # 若无特殊样式,使用默认 - return get_module_logger(module_name) diff --git a/src/common/message/__init__.py b/src/common/message/__init__.py index b5eed4d45..160456b0f 100644 --- a/src/common/message/__init__.py +++ b/src/common/message/__init__.py @@ -2,9 +2,9 @@ __version__ = "0.1.0" -from .api import global_api +from .api import get_global_api __all__ = [ - "global_api", + "get_global_api", ] diff --git a/src/common/message/api.py b/src/common/message/api.py index 7f8ffe7f9..8863a9796 100644 --- a/src/common/message/api.py +++ b/src/common/message/api.py @@ -1,55 +1,59 @@ -from src.common.server import global_server +from src.common.server import get_global_server import os import importlib.metadata from maim_message import MessageServer -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.config.config import global_config +global_api = None -# 检查maim_message版本 -try: - maim_message_version = importlib.metadata.version("maim_message") - version_compatible = [int(x) for x in maim_message_version.split(".")] >= [0, 3, 3] -except (importlib.metadata.PackageNotFoundError, ValueError): - version_compatible = False +def get_global_api() -> MessageServer: + """获取全局MessageServer实例""" + global global_api + if global_api is None: + # 检查maim_message版本 + try: + maim_message_version = importlib.metadata.version("maim_message") + version_compatible = [int(x) for x in maim_message_version.split(".")] >= [0, 3, 3] + except (importlib.metadata.PackageNotFoundError, ValueError): + version_compatible = False -# 读取配置项 -maim_message_config = global_config.maim_message + # 读取配置项 + maim_message_config = global_config.maim_message -# 设置基本参数 -kwargs = { - "host": os.environ["HOST"], - "port": int(os.environ["PORT"]), - "app": global_server.get_app(), -} + # 设置基本参数 + kwargs = { + "host": os.environ["HOST"], + "port": int(os.environ["PORT"]), + "app": get_global_server().get_app(), + } -# 只有在版本 >= 0.3.0 时才使用高级特性 -if version_compatible: - # 添加自定义logger - maim_message_logger = get_logger("maim_message") - kwargs["custom_logger"] = maim_message_logger + # 只有在版本 >= 0.3.0 时才使用高级特性 + if version_compatible: + # 添加自定义logger + maim_message_logger = get_logger("maim_message") + kwargs["custom_logger"] = maim_message_logger - # 添加token认证 - if maim_message_config.auth_token: - if len(maim_message_config.auth_token) > 0: - kwargs["enable_token"] = True + # 添加token认证 + if maim_message_config.auth_token: + if len(maim_message_config.auth_token) > 0: + kwargs["enable_token"] = True - if maim_message_config.use_custom: - # 添加WSS模式支持 - del kwargs["app"] - kwargs["host"] = maim_message_config.host - kwargs["port"] = maim_message_config.port - kwargs["mode"] = maim_message_config.mode - if maim_message_config.use_wss: - if maim_message_config.cert_file: - kwargs["ssl_certfile"] = maim_message_config.cert_file - if maim_message_config.key_file: - kwargs["ssl_keyfile"] = maim_message_config.key_file - kwargs["enable_custom_uvicorn_logger"] = False + if maim_message_config.use_custom: + # 添加WSS模式支持 + del kwargs["app"] + kwargs["host"] = maim_message_config.host + kwargs["port"] = maim_message_config.port + kwargs["mode"] = maim_message_config.mode + if maim_message_config.use_wss: + if maim_message_config.cert_file: + kwargs["ssl_certfile"] = maim_message_config.cert_file + if maim_message_config.key_file: + kwargs["ssl_keyfile"] = maim_message_config.key_file + kwargs["enable_custom_uvicorn_logger"] = False - -global_api = MessageServer(**kwargs) - -if version_compatible and maim_message_config.auth_token: - for token in maim_message_config.auth_token: - global_api.add_valid_token(token) + global_api = MessageServer(**kwargs) + if version_compatible and maim_message_config.auth_token: + for token in maim_message_config.auth_token: + global_api.add_valid_token(token) + return global_api diff --git a/src/common/message_repository.py b/src/common/message_repository.py index ee69b22b0..107ee1c5e 100644 --- a/src/common/message_repository.py +++ b/src/common/message_repository.py @@ -1,10 +1,10 @@ from src.common.database.database_model import Messages # 更改导入 -from src.common.logger import get_module_logger +from src.common.logger import get_logger import traceback from typing import List, Any, Optional from peewee import Model # 添加 Peewee Model 导入 -logger = get_module_logger(__name__) +logger = get_logger(__name__) def _model_to_dict(model_instance: Model) -> dict[str, Any]: diff --git a/src/common/remote.py b/src/common/remote.py index ff0d1e41c..197f8d3fa 100644 --- a/src/common/remote.py +++ b/src/common/remote.py @@ -3,8 +3,7 @@ import asyncio import requests import platform -# from loguru import logger -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.config.config import global_config from src.manager.async_task_manager import AsyncTask from src.manager.local_store_manager import local_storage diff --git a/src/common/server.py b/src/common/server.py index 9f4a94592..efb217bde 100644 --- a/src/common/server.py +++ b/src/common/server.py @@ -90,4 +90,11 @@ class Server: return self.app -global_server = Server(host=os.environ["HOST"], port=int(os.environ["PORT"])) +global_server = None + +def get_global_server() -> Server: + """获取全局服务器实例""" + global global_server + if global_server is None: + global_server = Server(host=os.environ["HOST"], port=int(os.environ["PORT"])) + return global_server diff --git a/src/config/config.py b/src/config/config.py index 46605c090..c30e8fe0f 100644 --- a/src/config/config.py +++ b/src/config/config.py @@ -8,7 +8,7 @@ from datetime import datetime from tomlkit import TOMLDocument from tomlkit.items import Table -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from rich.traceback import install from src.config.config_base import ConfigBase diff --git a/src/experimental/PFC/action_planner.py b/src/experimental/PFC/action_planner.py index f4defaf7c..95c777235 100644 --- a/src/experimental/PFC/action_planner.py +++ b/src/experimental/PFC/action_planner.py @@ -1,6 +1,6 @@ import time from typing import Tuple, Optional # 增加了 Optional -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.llm_models.utils_model import LLMRequest from src.config.config import global_config from src.experimental.PFC.chat_observer import ChatObserver diff --git a/src/experimental/PFC/chat_observer.py b/src/experimental/PFC/chat_observer.py index 55914d800..6021ef73c 100644 --- a/src/experimental/PFC/chat_observer.py +++ b/src/experimental/PFC/chat_observer.py @@ -2,7 +2,7 @@ import time import asyncio import traceback from typing import Optional, Dict, Any, List -from src.common.logger import get_module_logger +from src.common.logger import get_logger from maim_message import UserInfo from src.config.config import global_config from src.experimental.PFC.chat_states import ( @@ -15,7 +15,7 @@ from rich.traceback import install install(extra_lines=3) -logger = get_module_logger("chat_observer") +logger = get_logger("chat_observer") class ChatObserver: diff --git a/src/experimental/PFC/conversation.py b/src/experimental/PFC/conversation.py index e007c7601..f5044b67d 100644 --- a/src/experimental/PFC/conversation.py +++ b/src/experimental/PFC/conversation.py @@ -11,7 +11,7 @@ from src.chat.message_receive.message import Message from .pfc_types import ConversationState from .pfc import ChatObserver, GoalAnalyzer from .message_sender import DirectMessageSender -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from .action_planner import ActionPlanner from .observation_info import ObservationInfo from .conversation_info import ConversationInfo # 确保导入 ConversationInfo diff --git a/src/experimental/PFC/message_sender.py b/src/experimental/PFC/message_sender.py index 4b193a41d..841ebe450 100644 --- a/src/experimental/PFC/message_sender.py +++ b/src/experimental/PFC/message_sender.py @@ -1,6 +1,6 @@ import time from typing import Optional -from src.common.logger import get_module_logger +from src.common.logger import get_logger from src.chat.message_receive.chat_stream import ChatStream from src.chat.message_receive.message import Message from maim_message import UserInfo, Seg @@ -13,7 +13,7 @@ from rich.traceback import install install(extra_lines=3) -logger = get_module_logger("message_sender") +logger = get_logger("message_sender") class DirectMessageSender: diff --git a/src/experimental/PFC/observation_info.py b/src/experimental/PFC/observation_info.py index cc3dbf97c..5a7d72da8 100644 --- a/src/experimental/PFC/observation_info.py +++ b/src/experimental/PFC/observation_info.py @@ -1,13 +1,13 @@ from typing import List, Optional, Dict, Any, Set from maim_message import UserInfo import time -from src.common.logger import get_module_logger +from src.common.logger import get_logger from src.experimental.PFC.chat_observer import ChatObserver from src.experimental.PFC.chat_states import NotificationHandler, NotificationType, Notification from src.chat.utils.chat_message_builder import build_readable_messages import traceback # 导入 traceback 用于调试 -logger = get_module_logger("observation_info") +logger = get_logger("observation_info") class ObservationInfoHandler(NotificationHandler): diff --git a/src/experimental/PFC/pfc.py b/src/experimental/PFC/pfc.py index f0666b674..893d47937 100644 --- a/src/experimental/PFC/pfc.py +++ b/src/experimental/PFC/pfc.py @@ -1,5 +1,5 @@ from typing import List, Tuple, TYPE_CHECKING -from src.common.logger import get_module_logger +from src.common.logger import get_logger from src.llm_models.utils_model import LLMRequest from src.config.config import global_config from src.experimental.PFC.chat_observer import ChatObserver @@ -15,7 +15,7 @@ install(extra_lines=3) if TYPE_CHECKING: pass -logger = get_module_logger("pfc") +logger = get_logger("pfc") def _calculate_similarity(goal1: str, goal2: str) -> float: @@ -289,13 +289,13 @@ class GoalAnalyzer: # """直接发送消息到平台的发送器""" # def __init__(self, private_name: str): -# self.logger = get_module_logger("direct_sender") +# self.logger = get_logger("direct_sender") # self.storage = MessageStorage() # self.private_name = private_name # async def send_via_ws(self, message: MessageSending) -> None: # try: -# await global_api.send_message(message) +# await get_global_api().send_message(message) # except Exception as e: # raise ValueError(f"未找到平台:{message.message_info.platform} 的url配置,请检查配置文件") from e @@ -341,6 +341,6 @@ class GoalAnalyzer: # try: # await self.send_via_ws(message) # await self.storage.store_message(message, chat_stream) -# logger.success(f"[私聊][{self.private_name}]PFC消息已发送: {content}") +# logger.info(f"[私聊][{self.private_name}]PFC消息已发送: {content}") # except Exception as e: # logger.error(f"[私聊][{self.private_name}]PFC消息发送失败: {str(e)}") diff --git a/src/experimental/PFC/pfc_KnowledgeFetcher.py b/src/experimental/PFC/pfc_KnowledgeFetcher.py index f48ce2013..38a6dafb9 100644 --- a/src/experimental/PFC/pfc_KnowledgeFetcher.py +++ b/src/experimental/PFC/pfc_KnowledgeFetcher.py @@ -1,5 +1,5 @@ from typing import List, Tuple -from src.common.logger import get_module_logger +from src.common.logger import get_logger from src.chat.memory_system.Hippocampus import hippocampus_manager from src.llm_models.utils_model import LLMRequest from src.config.config import global_config @@ -7,7 +7,7 @@ from src.chat.message_receive.message import Message from src.chat.knowledge.knowledge_lib import qa_manager from src.chat.utils.chat_message_builder import build_readable_messages -logger = get_module_logger("knowledge_fetcher") +logger = get_logger("knowledge_fetcher") class KnowledgeFetcher: diff --git a/src/experimental/PFC/pfc_manager.py b/src/experimental/PFC/pfc_manager.py index 7837606ca..174be78b1 100644 --- a/src/experimental/PFC/pfc_manager.py +++ b/src/experimental/PFC/pfc_manager.py @@ -1,10 +1,10 @@ import time from typing import Dict, Optional -from src.common.logger import get_module_logger +from src.common.logger import get_logger from .conversation import Conversation import traceback -logger = get_module_logger("pfc_manager") +logger = get_logger("pfc_manager") class PFCManager: diff --git a/src/experimental/PFC/pfc_utils.py b/src/experimental/PFC/pfc_utils.py index 2f7bd5e06..b9e93ee51 100644 --- a/src/experimental/PFC/pfc_utils.py +++ b/src/experimental/PFC/pfc_utils.py @@ -1,9 +1,9 @@ import json import re from typing import Dict, Any, Optional, Tuple, List, Union -from src.common.logger import get_module_logger +from src.common.logger import get_logger -logger = get_module_logger("pfc_utils") +logger = get_logger("pfc_utils") def get_items_from_json( diff --git a/src/experimental/PFC/reply_checker.py b/src/experimental/PFC/reply_checker.py index a13618797..78319d00f 100644 --- a/src/experimental/PFC/reply_checker.py +++ b/src/experimental/PFC/reply_checker.py @@ -1,12 +1,12 @@ import json from typing import Tuple, List, Dict, Any -from src.common.logger import get_module_logger +from src.common.logger import get_logger from src.llm_models.utils_model import LLMRequest from src.config.config import global_config from src.experimental.PFC.chat_observer import ChatObserver from maim_message import UserInfo -logger = get_module_logger("reply_checker") +logger = get_logger("reply_checker") class ReplyChecker: diff --git a/src/experimental/PFC/reply_generator.py b/src/experimental/PFC/reply_generator.py index bcc35eedb..75a475ff4 100644 --- a/src/experimental/PFC/reply_generator.py +++ b/src/experimental/PFC/reply_generator.py @@ -1,5 +1,5 @@ from typing import Tuple, List, Dict, Any -from src.common.logger import get_module_logger +from src.common.logger import get_logger from src.llm_models.utils_model import LLMRequest from src.config.config import global_config from src.experimental.PFC.chat_observer import ChatObserver @@ -9,7 +9,7 @@ from .observation_info import ObservationInfo from .conversation_info import ConversationInfo from src.chat.utils.chat_message_builder import build_readable_messages -logger = get_module_logger("reply_generator") +logger = get_logger("reply_generator") # --- 定义 Prompt 模板 --- diff --git a/src/experimental/PFC/waiter.py b/src/experimental/PFC/waiter.py index d5f994fe5..83f21424e 100644 --- a/src/experimental/PFC/waiter.py +++ b/src/experimental/PFC/waiter.py @@ -1,4 +1,4 @@ -from src.common.logger import get_module_logger +from src.common.logger import get_logger from .chat_observer import ChatObserver from .conversation_info import ConversationInfo @@ -7,7 +7,7 @@ from src.config.config import global_config import time import asyncio -logger = get_module_logger("waiter") +logger = get_logger("waiter") # --- 在这里设定你想要的超时时间(秒) --- # 例如: 120 秒 = 2 分钟 diff --git a/src/experimental/only_message_process.py b/src/experimental/only_message_process.py index 6dd70ca7f..e5ca6b82d 100644 --- a/src/experimental/only_message_process.py +++ b/src/experimental/only_message_process.py @@ -1,4 +1,4 @@ -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.message_receive.message import MessageRecv from src.chat.message_receive.storage import MessageStorage from src.config.config import global_config diff --git a/src/individuality/expression_style.py b/src/individuality/expression_style.py index 40b8da211..74f05bbbf 100644 --- a/src/individuality/expression_style.py +++ b/src/individuality/expression_style.py @@ -1,6 +1,6 @@ import random -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.llm_models.utils_model import LLMRequest from src.config.config import global_config from src.chat.utils.prompt_builder import Prompt, global_prompt_manager diff --git a/src/individuality/not_using/offline_llm.py b/src/individuality/not_using/offline_llm.py index 40ec0889d..83cb263c7 100644 --- a/src/individuality/not_using/offline_llm.py +++ b/src/individuality/not_using/offline_llm.py @@ -5,13 +5,13 @@ from typing import Tuple, Union import aiohttp import requests -from src.common.logger import get_module_logger +from src.common.logger import get_logger from src.common.tcp_connector import get_tcp_connector from rich.traceback import install install(extra_lines=3) -logger = get_module_logger("offline_llm") +logger = get_logger("offline_llm") class LLMRequestOff: diff --git a/src/llm_models/utils_model.py b/src/llm_models/utils_model.py index 4022f9367..7884f4bc7 100644 --- a/src/llm_models/utils_model.py +++ b/src/llm_models/utils_model.py @@ -1,11 +1,12 @@ import asyncio import json import re +import sys from datetime import datetime from typing import Tuple, Union, Dict, Any import aiohttp from aiohttp.client import ClientResponse -from src.common.logger import get_module_logger +from src.common.logger import get_logger import base64 from PIL import Image import io @@ -18,7 +19,7 @@ from rich.traceback import install install(extra_lines=3) -logger = get_module_logger("model_utils") +logger = get_logger("model_utils") class PayLoadTooLargeError(Exception): @@ -115,6 +116,8 @@ class LLMRequest: logger.error(f"原始 model dict 信息:{model}") logger.error(f"配置错误:找不到对应的配置项 - {str(e)}") raise ValueError(f"配置错误:找不到对应的配置项 - {str(e)}") from e + except KeyError as e: + logger.warn(f"找不到{model['provider']}_KEY或{model['provider']}_BASE_URL环境变量,请检查配置文件或环境变量设置。") self.model_name: str = model["name"] self.params = kwargs @@ -885,7 +888,7 @@ def compress_base64_image_by_scale(base64_data: str, target_size: int = 0.8 * 10 # 获取压缩后的数据并转换为base64 compressed_data = output_buffer.getvalue() - logger.success(f"压缩图片: {original_width}x{original_height} -> {new_width}x{new_height}") + logger.info(f"压缩图片: {original_width}x{original_height} -> {new_width}x{new_height}") logger.info(f"压缩前大小: {len(image_data) / 1024:.1f}KB, 压缩后大小: {len(compressed_data) / 1024:.1f}KB") return base64.b64encode(compressed_data).decode("utf-8") diff --git a/src/main.py b/src/main.py index c117ed5cb..2c70b695c 100644 --- a/src/main.py +++ b/src/main.py @@ -1,34 +1,34 @@ import asyncio import time from maim_message import MessageServer -from .common.remote import TelemetryHeartBeatTask -from .manager.async_task_manager import async_task_manager -from .chat.utils.statistic import OnlineTimeRecordTask, StatisticOutputTask -from .manager.mood_manager import MoodPrintTask, MoodUpdateTask -from .chat.emoji_system.emoji_manager import emoji_manager -from .chat.normal_chat.willing.willing_manager import willing_manager -from .chat.message_receive.chat_stream import chat_manager +from src.common.remote import TelemetryHeartBeatTask +from src.manager.async_task_manager import async_task_manager +from src.chat.utils.statistic import OnlineTimeRecordTask, StatisticOutputTask +from src.manager.mood_manager import MoodPrintTask, MoodUpdateTask +from src.chat.emoji_system.emoji_manager import emoji_manager +from src.chat.normal_chat.willing.willing_manager import willing_manager +from src.chat.message_receive.chat_stream import chat_manager from src.chat.heart_flow.heartflow import heartflow -from .chat.message_receive.message_sender import message_manager -from .chat.message_receive.storage import MessageStorage -from .config.config import global_config -from .chat.message_receive.bot import chat_bot -from .common.logger_manager import get_logger -from .individuality.individuality import individuality, Individuality -from .common.server import global_server, Server +from src.chat.message_receive.message_sender import message_manager +from src.chat.message_receive.storage import MessageStorage +from src.config.config import global_config +from src.chat.message_receive.bot import chat_bot +from src.common.logger import get_logger +from src.individuality.individuality import individuality, Individuality +from src.common.server import get_global_server, Server from rich.traceback import install -from .chat.focus_chat.expressors.exprssion_learner import expression_learner -from .api.main import start_api_server +from src.chat.focus_chat.expressors.exprssion_learner import expression_learner +from src.api.main import start_api_server # 导入新的插件管理器 from src.plugin_system.core.plugin_manager import plugin_manager # 导入消息API和traceback模块 -from src.common.message import global_api +from src.common.message import get_global_api # 条件导入记忆系统 if global_config.memory.enable_memory: - from .chat.memory_system.Hippocampus import hippocampus_manager + from src.chat.memory_system.Hippocampus import hippocampus_manager # 插件系统现在使用统一的插件加载器 @@ -48,8 +48,8 @@ class MainSystem: self.individuality: Individuality = individuality # 使用消息API替代直接的FastAPI实例 - self.app: MessageServer = global_api - self.server: Server = global_server + self.app: MessageServer = get_global_api() + self.server: Server = get_global_server() async def initialize(self): """初始化系统组件""" @@ -75,15 +75,15 @@ class MainSystem: # 启动API服务器 start_api_server() - logger.success("API服务器启动成功") + logger.info("API服务器启动成功") # 加载所有actions,包括默认的和插件的 plugin_count, component_count = plugin_manager.load_all_plugins() - logger.success(f"插件系统加载成功: {plugin_count} 个插件,{component_count} 个组件") + logger.info(f"插件系统加载成功: {plugin_count} 个插件,{component_count} 个组件") # 初始化表情管理器 emoji_manager.initialize() - logger.success("表情包管理器初始化成功") + logger.info("表情包管理器初始化成功") # 添加情绪衰减任务 await async_task_manager.add_task(MoodUpdateTask()) @@ -101,7 +101,7 @@ class MainSystem: if global_config.memory.enable_memory: if self.hippocampus_manager: self.hippocampus_manager.initialize() - logger.success("记忆系统初始化成功") + logger.info("记忆系统初始化成功") else: logger.info("记忆系统已禁用,跳过初始化") @@ -117,19 +117,19 @@ class MainSystem: personality_sides=global_config.personality.personality_sides, identity_detail=global_config.identity.identity_detail, ) - logger.success("个体特征初始化成功") + logger.info("个体特征初始化成功") try: # 启动全局消息管理器 (负责消息发送/排队) await message_manager.start() - logger.success("全局消息管理器启动成功") + logger.info("全局消息管理器启动成功") # 启动心流系统主循环 asyncio.create_task(heartflow.heartflow_start_working()) - logger.success("心流系统启动成功") + logger.info("心流系统启动成功") init_time = int(1000 * (time.time() - init_start_time)) - logger.success(f"初始化完成,神经元放电{init_time}次") + logger.info(f"初始化完成,神经元放电{init_time}次") except Exception as e: logger.error(f"启动大脑和外部世界失败: {e}") raise diff --git a/src/manager/async_task_manager.py b/src/manager/async_task_manager.py index e198d0e10..0a6a5e45f 100644 --- a/src/manager/async_task_manager.py +++ b/src/manager/async_task_manager.py @@ -4,7 +4,7 @@ import asyncio from asyncio import Task, Event, Lock from typing import Callable, Dict -from src.common.logger_manager import get_logger +from src.common.logger import get_logger logger = get_logger("async_task_manager") diff --git a/src/manager/local_store_manager.py b/src/manager/local_store_manager.py index 33a30cec7..0f7a2a71c 100644 --- a/src/manager/local_store_manager.py +++ b/src/manager/local_store_manager.py @@ -1,7 +1,7 @@ import json import os -from src.common.logger_manager import get_logger +from src.common.logger import get_logger LOCAL_STORE_FILE_PATH = "data/local_store.json" @@ -50,20 +50,20 @@ class LocalStoreManager: try: with open(self.file_path, "r", encoding="utf-8") as f: self.store = json.load(f) - logger.success("全都记起来了!") + logger.info("全都记起来了!") except json.JSONDecodeError: logger.warning("啊咧?记事本被弄脏了,正在重建记事本......") self.store = {} with open(self.file_path, "w", encoding="utf-8") as f: json.dump({}, f, ensure_ascii=False, indent=4) - logger.success("记事本重建成功!") + logger.info("记事本重建成功!") else: # 不存在本地存储文件,创建新的目录和文件 logger.warning("啊咧?记事本不存在,正在创建新的记事本......") os.makedirs(os.path.dirname(self.file_path), exist_ok=True) with open(self.file_path, "w", encoding="utf-8") as f: json.dump({}, f, ensure_ascii=False, indent=4) - logger.success("记事本创建成功!") + logger.info("记事本创建成功!") def save_local_store(self): """保存本地存储数据""" diff --git a/src/manager/mood_manager.py b/src/manager/mood_manager.py index f1253bbc9..b73fa7112 100644 --- a/src/manager/mood_manager.py +++ b/src/manager/mood_manager.py @@ -5,7 +5,7 @@ from dataclasses import dataclass from typing import Dict, Tuple from ..config.config import global_config -from ..common.logger_manager import get_logger +from ..common.logger import get_logger from ..manager.async_task_manager import AsyncTask from ..individuality.individuality import individuality diff --git a/src/person_info/impression_update_task.py b/src/person_info/impression_update_task.py index 480090163..27271c544 100644 --- a/src/person_info/impression_update_task.py +++ b/src/person_info/impression_update_task.py @@ -1,5 +1,5 @@ from src.manager.async_task_manager import AsyncTask -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.person_info.person_info import PersonInfoManager from src.person_info.relationship_manager import relationship_manager from src.chat.utils.chat_message_builder import get_raw_msg_by_timestamp diff --git a/src/person_info/person_info.py b/src/person_info/person_info.py index a62200c90..f57bfb090 100644 --- a/src/person_info/person_info.py +++ b/src/person_info/person_info.py @@ -1,4 +1,4 @@ -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.common.database.database import db from src.common.database.database_model import PersonInfo # 新增导入 import copy diff --git a/src/person_info/relationship_manager.py b/src/person_info/relationship_manager.py index 0029e6492..3e51583d5 100644 --- a/src/person_info/relationship_manager.py +++ b/src/person_info/relationship_manager.py @@ -1,4 +1,4 @@ -from src.common.logger_manager import get_logger +from src.common.logger import get_logger import math from src.person_info.person_info import person_info_manager, PersonInfoManager import time diff --git a/src/plugin_system/apis/action_apis.py b/src/plugin_system/apis/action_apis.py index b6a31dcd7..84b750dad 100644 --- a/src/plugin_system/apis/action_apis.py +++ b/src/plugin_system/apis/action_apis.py @@ -7,7 +7,7 @@ Action相关API聚合模块 from src.plugin_system.apis.message_api import MessageAPI from src.plugin_system.apis.database_api import DatabaseAPI -from src.common.logger_manager import get_logger +from src.common.logger import get_logger logger = get_logger("action_apis") diff --git a/src/plugin_system/apis/config_api.py b/src/plugin_system/apis/config_api.py index 06f64a9da..af1aa61a5 100644 --- a/src/plugin_system/apis/config_api.py +++ b/src/plugin_system/apis/config_api.py @@ -1,5 +1,5 @@ from typing import Any -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.config.config import global_config from src.person_info.person_info import person_info_manager diff --git a/src/plugin_system/apis/database_api.py b/src/plugin_system/apis/database_api.py index 7b99e895b..5239fb9ac 100644 --- a/src/plugin_system/apis/database_api.py +++ b/src/plugin_system/apis/database_api.py @@ -1,7 +1,7 @@ import traceback import time from typing import Dict, List, Any, Union, Type -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.common.database.database_model import ActionRecords from src.common.database.database import db from peewee import Model, DoesNotExist diff --git a/src/plugin_system/apis/hearflow_api.py b/src/plugin_system/apis/hearflow_api.py index 2c26ce768..54a3c3689 100644 --- a/src/plugin_system/apis/hearflow_api.py +++ b/src/plugin_system/apis/hearflow_api.py @@ -1,5 +1,5 @@ from typing import Optional, List, Any -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.heart_flow.heartflow import heartflow from src.chat.heart_flow.sub_heartflow import SubHeartflow, ChatState diff --git a/src/plugin_system/apis/independent_apis.py b/src/plugin_system/apis/independent_apis.py index a3078d677..d094b3889 100644 --- a/src/plugin_system/apis/independent_apis.py +++ b/src/plugin_system/apis/independent_apis.py @@ -10,7 +10,7 @@ from src.plugin_system.apis.config_api import ConfigAPI from src.plugin_system.apis.utils_api import UtilsAPI from src.plugin_system.apis.stream_api import StreamAPI from src.plugin_system.apis.hearflow_api import HearflowAPI -from src.common.logger_manager import get_logger +from src.common.logger import get_logger logger = get_logger("independent_apis") diff --git a/src/plugin_system/apis/llm_api.py b/src/plugin_system/apis/llm_api.py index 743aac748..c4a9aeb92 100644 --- a/src/plugin_system/apis/llm_api.py +++ b/src/plugin_system/apis/llm_api.py @@ -1,5 +1,5 @@ from typing import Tuple, Dict, Any -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.llm_models.utils_model import LLMRequest from src.config.config import global_config diff --git a/src/plugin_system/apis/message_api.py b/src/plugin_system/apis/message_api.py index 6b6dbdbe3..cd0ce4bfb 100644 --- a/src/plugin_system/apis/message_api.py +++ b/src/plugin_system/apis/message_api.py @@ -1,7 +1,7 @@ import traceback import time from typing import List, Dict, Any -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.focus_chat.hfc_utils import create_empty_anchor_message # 以下为类型注解需要 diff --git a/src/plugin_system/apis/plugin_api.py b/src/plugin_system/apis/plugin_api.py index d38999065..fe2475d8a 100644 --- a/src/plugin_system/apis/plugin_api.py +++ b/src/plugin_system/apis/plugin_api.py @@ -5,7 +5,7 @@ 提供所有插件API功能的统一访问入口 """ -from src.common.logger_manager import get_logger +from src.common.logger import get_logger # 导入所有API模块 from src.plugin_system.apis.message_api import MessageAPI diff --git a/src/plugin_system/apis/stream_api.py b/src/plugin_system/apis/stream_api.py index 0ed20401d..881a4bb1a 100644 --- a/src/plugin_system/apis/stream_api.py +++ b/src/plugin_system/apis/stream_api.py @@ -1,5 +1,5 @@ from typing import Optional, List, Dict, Any, Tuple -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.message_receive.chat_stream import ChatManager, ChatStream from src.chat.focus_chat.hfc_utils import parse_thinking_id_to_timestamp import asyncio diff --git a/src/plugin_system/apis/utils_api.py b/src/plugin_system/apis/utils_api.py index 1cae23b03..61efec821 100644 --- a/src/plugin_system/apis/utils_api.py +++ b/src/plugin_system/apis/utils_api.py @@ -2,7 +2,7 @@ import os import json import time from typing import Any, Optional -from src.common.logger_manager import get_logger +from src.common.logger import get_logger logger = get_logger("utils_api") diff --git a/src/plugin_system/base/base_action.py b/src/plugin_system/base/base_action.py index b9899f9a4..75e297977 100644 --- a/src/plugin_system/base/base_action.py +++ b/src/plugin_system/base/base_action.py @@ -1,6 +1,6 @@ from abc import ABC, abstractmethod from typing import Tuple -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.plugin_system.apis.plugin_api import PluginAPI from src.plugin_system.base.component_types import ActionActivationType, ChatMode, ActionInfo, ComponentType diff --git a/src/plugin_system/base/base_command.py b/src/plugin_system/base/base_command.py index 9596c5d38..e20e8c947 100644 --- a/src/plugin_system/base/base_command.py +++ b/src/plugin_system/base/base_command.py @@ -1,6 +1,6 @@ from abc import ABC, abstractmethod from typing import Dict, Tuple, Optional, List -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.plugin_system.apis.plugin_api import PluginAPI from src.plugin_system.base.component_types import CommandInfo, ComponentType from src.chat.message_receive.message import MessageRecv diff --git a/src/plugin_system/base/base_plugin.py b/src/plugin_system/base/base_plugin.py index 9b000dbd0..ba202b78d 100644 --- a/src/plugin_system/base/base_plugin.py +++ b/src/plugin_system/base/base_plugin.py @@ -3,7 +3,7 @@ from typing import Dict, List, Type, Optional, Any import os import inspect import toml -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.plugin_system.base.component_types import ( PluginInfo, ComponentInfo, diff --git a/src/plugin_system/core/component_registry.py b/src/plugin_system/core/component_registry.py index d3283f5f2..863146a86 100644 --- a/src/plugin_system/core/component_registry.py +++ b/src/plugin_system/core/component_registry.py @@ -1,6 +1,6 @@ from typing import Dict, List, Type, Optional, Any, Pattern import re -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.plugin_system.base.component_types import ( ComponentInfo, ActionInfo, diff --git a/src/plugin_system/core/plugin_manager.py b/src/plugin_system/core/plugin_manager.py index ea2d0c51d..2be1279bb 100644 --- a/src/plugin_system/core/plugin_manager.py +++ b/src/plugin_system/core/plugin_manager.py @@ -7,7 +7,7 @@ from pathlib import Path if TYPE_CHECKING: from src.plugin_system.base.base_plugin import BasePlugin -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.plugin_system.core.component_registry import component_registry from src.plugin_system.base.component_types import ComponentType, PluginInfo diff --git a/src/plugins/built_in/core_actions/plugin.py b/src/plugins/built_in/core_actions/plugin.py index c7b9f483f..734308471 100644 --- a/src/plugins/built_in/core_actions/plugin.py +++ b/src/plugins/built_in/core_actions/plugin.py @@ -13,7 +13,7 @@ from src.plugin_system import BasePlugin, register_plugin, BaseAction, Component from src.plugin_system.base.base_command import BaseCommand # 导入依赖的系统组件 -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.heart_flow.observation.chatting_observation import ChattingObservation from src.chat.focus_chat.hfc_utils import create_empty_anchor_message diff --git a/src/plugins/built_in/doubao_pic_plugin/plugin.py b/src/plugins/built_in/doubao_pic_plugin/plugin.py index 1fc2a39d3..de0147805 100644 --- a/src/plugins/built_in/doubao_pic_plugin/plugin.py +++ b/src/plugins/built_in/doubao_pic_plugin/plugin.py @@ -28,7 +28,7 @@ from src.plugin_system.base.base_plugin import BasePlugin from src.plugin_system.base.base_plugin import register_plugin from src.plugin_system.base.base_action import BaseAction from src.plugin_system.base.component_types import ComponentInfo, ActionActivationType, ChatMode -from src.common.logger_manager import get_logger +from src.common.logger import get_logger logger = get_logger("doubao_pic_plugin") diff --git a/src/plugins/built_in/mute_plugin/plugin.py b/src/plugins/built_in/mute_plugin/plugin.py index 4e83624f4..2697f4b03 100644 --- a/src/plugins/built_in/mute_plugin/plugin.py +++ b/src/plugins/built_in/mute_plugin/plugin.py @@ -24,7 +24,7 @@ from src.plugin_system.base.base_plugin import register_plugin from src.plugin_system.base.base_action import BaseAction from src.plugin_system.base.base_command import BaseCommand from src.plugin_system.base.component_types import ComponentInfo, ActionActivationType, ChatMode -from src.common.logger_manager import get_logger +from src.common.logger import get_logger logger = get_logger("mute_plugin") diff --git a/src/plugins/built_in/tts_plgin/actions/tts_action.py b/src/plugins/built_in/tts_plgin/actions/tts_action.py index 0e64dcb4c..87d30aa7c 100644 --- a/src/plugins/built_in/tts_plgin/actions/tts_action.py +++ b/src/plugins/built_in/tts_plgin/actions/tts_action.py @@ -1,4 +1,4 @@ -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.actions.base_action import ActionActivationType from src.chat.actions.plugin_action import PluginAction, register_action from typing import Tuple diff --git a/src/plugins/built_in/vtb_action/actions/vtb_action.py b/src/plugins/built_in/vtb_action/actions/vtb_action.py index 30b625c39..6089bc252 100644 --- a/src/plugins/built_in/vtb_action/actions/vtb_action.py +++ b/src/plugins/built_in/vtb_action/actions/vtb_action.py @@ -1,4 +1,4 @@ -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.chat.actions.plugin_action import PluginAction, register_action, ActionActivationType from typing import Tuple diff --git a/src/plugins/examples/example_plugin/plugin.py b/src/plugins/examples/example_plugin/plugin.py index ffd0cbd91..34689685d 100644 --- a/src/plugins/examples/example_plugin/plugin.py +++ b/src/plugins/examples/example_plugin/plugin.py @@ -31,7 +31,7 @@ from src.plugin_system.base.base_plugin import register_plugin from src.plugin_system.base.base_action import BaseAction from src.plugin_system.base.base_command import BaseCommand from src.plugin_system.base.component_types import ComponentInfo, ActionActivationType, ChatMode -from src.common.logger_manager import get_logger +from src.common.logger import get_logger logger = get_logger("example_comprehensive") diff --git a/src/tools/not_used/change_mood.py b/src/tools/not_used/change_mood.py index 69fc3bb78..e8276abf5 100644 --- a/src/tools/not_used/change_mood.py +++ b/src/tools/not_used/change_mood.py @@ -1,6 +1,6 @@ from typing import Any -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.config.config import global_config from src.tools.tool_can_use.base_tool import BaseTool from src.manager.mood_manager import mood_manager diff --git a/src/tools/not_used/change_relationship.py b/src/tools/not_used/change_relationship.py index b038a3e62..721397087 100644 --- a/src/tools/not_used/change_relationship.py +++ b/src/tools/not_used/change_relationship.py @@ -1,5 +1,5 @@ from typing import Any -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.tools.tool_can_use.base_tool import BaseTool diff --git a/src/tools/tool_can_use/base_tool.py b/src/tools/tool_can_use/base_tool.py index 62697168f..89d051dc5 100644 --- a/src/tools/tool_can_use/base_tool.py +++ b/src/tools/tool_can_use/base_tool.py @@ -3,7 +3,7 @@ import inspect import importlib import pkgutil import os -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from rich.traceback import install install(extra_lines=3) diff --git a/src/tools/tool_can_use/compare_numbers_tool.py b/src/tools/tool_can_use/compare_numbers_tool.py index 72c7d7d15..e73f6e79f 100644 --- a/src/tools/tool_can_use/compare_numbers_tool.py +++ b/src/tools/tool_can_use/compare_numbers_tool.py @@ -1,8 +1,8 @@ from src.tools.tool_can_use.base_tool import BaseTool -from src.common.logger import get_module_logger +from src.common.logger import get_logger from typing import Any -logger = get_module_logger("compare_numbers_tool") +logger = get_logger("compare_numbers_tool") class CompareNumbersTool(BaseTool): diff --git a/src/tools/tool_can_use/get_knowledge.py b/src/tools/tool_can_use/get_knowledge.py index fd37f11e7..cebb01684 100644 --- a/src/tools/tool_can_use/get_knowledge.py +++ b/src/tools/tool_can_use/get_knowledge.py @@ -1,7 +1,7 @@ from src.tools.tool_can_use.base_tool import BaseTool from src.chat.utils.utils import get_embedding from src.common.database.database_model import Knowledges # Updated import -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from typing import Any, Union, List # Added List import json # Added for parsing embedding import math # Added for cosine similarity diff --git a/src/tools/tool_can_use/lpmm_get_knowledge.py b/src/tools/tool_can_use/lpmm_get_knowledge.py index fc2dc072b..df4fa6a4f 100644 --- a/src/tools/tool_can_use/lpmm_get_knowledge.py +++ b/src/tools/tool_can_use/lpmm_get_knowledge.py @@ -1,7 +1,7 @@ from src.tools.tool_can_use.base_tool import BaseTool # from src.common.database import db -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from typing import Dict, Any from src.chat.knowledge.knowledge_lib import qa_manager diff --git a/src/tools/tool_can_use/rename_person_tool.py b/src/tools/tool_can_use/rename_person_tool.py index e7f07a84e..84e048ef6 100644 --- a/src/tools/tool_can_use/rename_person_tool.py +++ b/src/tools/tool_can_use/rename_person_tool.py @@ -1,6 +1,6 @@ from src.tools.tool_can_use.base_tool import BaseTool, register_tool from src.person_info.person_info import person_info_manager -from src.common.logger_manager import get_logger +from src.common.logger import get_logger import time logger = get_logger("rename_person_tool") diff --git a/src/tools/tool_use.py b/src/tools/tool_use.py index b6fabb21e..738eeed48 100644 --- a/src/tools/tool_use.py +++ b/src/tools/tool_use.py @@ -1,5 +1,5 @@ import json -from src.common.logger_manager import get_logger +from src.common.logger import get_logger from src.tools.tool_can_use import get_all_tool_definitions, get_tool_instance logger = get_logger("tool_use") diff --git a/tests/test_build_readable_messages.py b/tests/test_build_readable_messages.py index da963e45a..e1658bcbc 100644 --- a/tests/test_build_readable_messages.py +++ b/tests/test_build_readable_messages.py @@ -10,10 +10,10 @@ import copy sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) from src.chat.utils.chat_message_builder import get_raw_msg_by_timestamp_with_chat, build_readable_messages -from src.common.logger import get_module_logger +from src.common.logger import get_logger # 创建测试日志记录器 -logger = get_module_logger("test_readable_msg") +logger = get_logger("test_readable_msg") class TestBuildReadableMessages(unittest.TestCase):