From 219a265a5e9ea4935e6877b86624d4648232a901 Mon Sep 17 00:00:00 2001 From: jimi <1847930177@qq.com> Date: Sun, 1 Mar 2026 17:28:49 +0800 Subject: [PATCH] feat: colorize console logs by message category --- core/websocket_client.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/core/websocket_client.py b/core/websocket_client.py index abc32e3..131e6aa 100755 --- a/core/websocket_client.py +++ b/core/websocket_client.py @@ -31,6 +31,17 @@ def _get_transfer_group(acc_id: str) -> str: # ========== 日志配置(轮转:按大小 10MB,保留 7 份)========== class _AnsiColorFormatter(logging.Formatter): RESET = "\033[0m" + # 业务消息类型颜色(优先于 level) + MESSAGE_COLOR_RULES = ( + ("[PROMPT->AI", "\033[94m"), # bright blue + ("[THINK/", "\033[96m"), # bright cyan + ("[REPLY->CUSTOMER]", "\033[92m"), # bright green + ("Agent 回复", "\033[92m"), # bright green + ("[ACTIVITY]", "\033[95m"), # bright magenta + ("收到新消息", "\033[36m"), # cyan + ("发送成功", "\033[32m"), # green + ("防抖等待", "\033[93m"), # bright yellow + ) COLORS = { logging.DEBUG: "\033[36m", # cyan logging.INFO: "\033[32m", # green @@ -47,6 +58,10 @@ class _AnsiColorFormatter(logging.Formatter): msg = super().format(record) if not self.use_color: return msg + raw_msg = record.getMessage() + for key, color in self.MESSAGE_COLOR_RULES: + if key in raw_msg: + return f"{color}{msg}{self.RESET}" color = self.COLORS.get(record.levelno, "") if not color: return msg