diff --git a/src/common/logger.py b/src/common/logger.py index 0a8839d2f..7365e34a6 100644 --- a/src/common/logger.py +++ b/src/common/logger.py @@ -102,10 +102,28 @@ MOOD_STYLE_CONFIG = { "file_format": ("{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 心情 | {message}"), }, "simple": { - "console_format": ("{time:MM-DD HH:mm} | 心情 | {message}"), + "console_format": ("{time:MM-DD HH:mm} | 心情 | {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} | " + "{extra[module]: <12} | " + "工具使用 | " + "{message}" + ), + "file_format": ("{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 工具使用 | {message}"), + }, + "simple": { + "console_format": ("{time:MM-DD HH:mm} | 工具使用 | {message}"), + "file_format": ("{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 工具使用 | {message}"), + }, +} + # relationship RELATION_STYLE_CONFIG = { @@ -308,6 +326,7 @@ SUB_HEARTFLOW_STYLE_CONFIG = ( ) # noqa: E501 WILLING_STYLE_CONFIG = WILLING_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else WILLING_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"] def is_registered_module(record: dict) -> bool: diff --git a/src/do_tool/tool_can_use/fibonacci_sequence_tool.py b/src/do_tool/tool_can_use/fibonacci_sequence_tool.py deleted file mode 100644 index 4609b18a0..000000000 --- a/src/do_tool/tool_can_use/fibonacci_sequence_tool.py +++ /dev/null @@ -1,47 +0,0 @@ -from src.do_tool.tool_can_use.base_tool import BaseTool, register_tool -from src.common.logger import get_module_logger -from typing import Dict, Any - -logger = get_module_logger("fibonacci_sequence_tool") - - -class FibonacciSequenceTool(BaseTool): - """生成斐波那契数列的工具""" - - name = "fibonacci_sequence" - description = "生成指定长度的斐波那契数列" - parameters = { - "type": "object", - "properties": {"n": {"type": "integer", "description": "斐波那契数列的长度", "minimum": 1}}, - "required": ["n"], - } - - async def execute(self, function_args: Dict[str, Any], message_txt: str = "") -> Dict[str, Any]: - """执行工具功能 - - Args: - function_args: 工具参数 - message_txt: 原始消息文本 - - Returns: - Dict: 工具执行结果 - """ - try: - n = function_args.get("n") - if n <= 0: - raise ValueError("参数n必须大于0") - - sequence = [] - a, b = 0, 1 - for _ in range(n): - sequence.append(a) - a, b = b, a + b - - return {"name": self.name, "content": sequence} - except Exception as e: - logger.error(f"fibonacci_sequence工具执行失败: {str(e)}") - return {"name": self.name, "content": f"执行失败: {str(e)}"} - - -# 注册工具 -register_tool(FibonacciSequenceTool) diff --git a/src/do_tool/tool_use.py b/src/do_tool/tool_use.py index dd1ca7044..b29bfcb02 100644 --- a/src/do_tool/tool_use.py +++ b/src/do_tool/tool_use.py @@ -4,10 +4,15 @@ from src.plugins.chat.chat_stream import ChatStream from src.common.database import db import time import json -from src.common.logger import get_module_logger +from src.common.logger import get_module_logger, TOOL_USE_STYLE_CONFIG, LogConfig from src.do_tool.tool_can_use import get_all_tool_definitions, get_tool_instance -logger = get_module_logger("tool_use") +tool_use_config = LogConfig( + # 使用消息发送专用样式 + console_format=TOOL_USE_STYLE_CONFIG["console_format"], + file_format=TOOL_USE_STYLE_CONFIG["file_format"], +) +logger = get_module_logger("tool_use", config=tool_use_config) class ToolUser: diff --git a/src/plugins/chat/bot.py b/src/plugins/chat/bot.py index c2126eee2..a3c56f636 100644 --- a/src/plugins/chat/bot.py +++ b/src/plugins/chat/bot.py @@ -38,7 +38,7 @@ class ChatBot: async def _ensure_started(self): """确保所有任务已启动""" if not self._started: - logger.info("确保ChatBot所有任务已启动") + logger.trace("确保ChatBot所有任务已启动") self._started = True @@ -84,7 +84,7 @@ class ChatBot: message = MessageRecv(message_data) groupinfo = message.message_info.group_info userinfo = message.message_info.user_info - logger.debug(f"处理消息:{str(message_data)[:120]}...") + logger.trace(f"处理消息:{str(message_data)[:120]}...") if userinfo.user_id in global_config.ban_user_id: logger.debug(f"用户{userinfo.user_id}被禁止回复") diff --git a/src/plugins/chat/message_sender.py b/src/plugins/chat/message_sender.py index 9f547ed10..c223bbe4d 100644 --- a/src/plugins/chat/message_sender.py +++ b/src/plugins/chat/message_sender.py @@ -70,9 +70,9 @@ class Message_Sender: thinking_start_time=message.thinking_start_time, is_emoji=message.is_emoji, ) - logger.debug(f"{message.processed_plain_text},{typing_time},计算输入时间结束") + logger.trace(f"{message.processed_plain_text},{typing_time},计算输入时间结束") await asyncio.sleep(typing_time) - logger.debug(f"{message.processed_plain_text},{typing_time},等待输入时间结束") + logger.trace(f"{message.processed_plain_text},{typing_time},等待输入时间结束") message_json = message.to_dict() diff --git a/src/plugins/chat_module/think_flow_chat/think_flow_chat.py b/src/plugins/chat_module/think_flow_chat/think_flow_chat.py index 098ee1552..9f78a10f7 100644 --- a/src/plugins/chat_module/think_flow_chat/think_flow_chat.py +++ b/src/plugins/chat_module/think_flow_chat/think_flow_chat.py @@ -184,24 +184,24 @@ class ThinkFlowChat: heartflow.create_subheartflow(chat.stream_id) await message.process() - logger.debug(f"消息处理成功{message.processed_plain_text}") + logger.trace(f"消息处理成功{message.processed_plain_text}") # 过滤词/正则表达式过滤 if self._check_ban_words(message.processed_plain_text, chat, userinfo) or self._check_ban_regex( message.raw_message, chat, userinfo ): return - logger.debug(f"过滤词/正则表达式过滤成功{message.processed_plain_text}") + logger.trace(f"过滤词/正则表达式过滤成功{message.processed_plain_text}") await self.storage.store_message(message, chat) - logger.debug(f"存储成功{message.processed_plain_text}") + logger.trace(f"存储成功{message.processed_plain_text}") # 记忆激活 with Timer("记忆激活", timing_results): interested_rate = await HippocampusManager.get_instance().get_activate_from_text( message.processed_plain_text, fast_retrieval=True ) - logger.debug(f"记忆激活: {interested_rate}") + logger.trace(f"记忆激活: {interested_rate}") # 查询缓冲器结果,会整合前面跳过的消息,改变processed_plain_text buffer_result = await message_buffer.query_buffer_result(message) diff --git a/src/plugins/memory_system/Hippocampus.py b/src/plugins/memory_system/Hippocampus.py index 4e52afeca..179a5d13d 100644 --- a/src/plugins/memory_system/Hippocampus.py +++ b/src/plugins/memory_system/Hippocampus.py @@ -1301,7 +1301,7 @@ class Hippocampus: # 对每个关键词进行扩散式检索 for keyword in valid_keywords: - logger.debug(f"开始以关键词 '{keyword}' 为中心进行扩散检索 (最大深度: {max_depth}):") + logger.trace(f"开始以关键词 '{keyword}' 为中心进行扩散检索 (最大深度: {max_depth}):") # 初始化激活值 activation_values = {keyword: 1.0} # 记录已访问的节点 @@ -1352,7 +1352,7 @@ class Hippocampus: # 计算激活节点数与总节点数的比值 total_activation = sum(activate_map.values()) - logger.info(f"总激活值: {total_activation:.2f}") + logger.trace(f"总激活值: {total_activation:.2f}") total_nodes = len(self.memory_graph.G.nodes()) # activated_nodes = len(activate_map) activation_ratio = total_activation / total_nodes if total_nodes > 0 else 0 diff --git a/src/plugins/person_info/person_info.py b/src/plugins/person_info/person_info.py index 4c1f9c688..a64a8264b 100644 --- a/src/plugins/person_info/person_info.py +++ b/src/plugins/person_info/person_info.py @@ -264,17 +264,17 @@ class PersonInfoManager: msg_interval = int(round(np.percentile(filtered, 80))) await self.update_one_field(person_id, "msg_interval", msg_interval) - logger.debug(f"用户{person_id}的msg_interval已经被更新为{msg_interval}") + logger.trace(f"用户{person_id}的msg_interval已经被更新为{msg_interval}") except Exception as e: - logger.debug(f"用户{person_id}消息间隔计算失败: {type(e).__name__}: {str(e)}") + logger.trace(f"用户{person_id}消息间隔计算失败: {type(e).__name__}: {str(e)}") continue # 其他... if msg_interval_map: - logger.info("已保存分布图到: logs/person_info") + logger.trace("已保存分布图到: logs/person_info") current_time = datetime.datetime.now() - logger.info(f"个人信息推断结束: {current_time.strftime('%Y-%m-%d %H:%M:%S')}") + logger.trace(f"个人信息推断结束: {current_time.strftime('%Y-%m-%d %H:%M:%S')}") await asyncio.sleep(86400) except Exception as e: