From 3ec14993242ca1614fb45aaf4244ad4274461cbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Sat, 3 Jan 2026 14:03:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=BD=AC=E5=8F=91?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E9=85=8D=E7=BD=AE=EF=BC=8C=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E6=95=B0=E9=87=8F=E9=98=88=E5=80=BC=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/config.py | 2 ++ src/config/official_configs.py | 8 ++++++++ src/recv_handler/message_handler.py | 13 ++++++++----- template/template_config.toml | 3 +++ 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/config/config.py b/src/config/config.py index bdf7837..1bf531d 100644 --- a/src/config/config.py +++ b/src/config/config.py @@ -14,6 +14,7 @@ from src.config.config_base import ConfigBase from src.config.official_configs import ( ChatConfig, DebugConfig, + ForwardConfig, MaiBotServerConfig, NapcatServerConfig, NicknameConfig, @@ -117,6 +118,7 @@ class Config(ConfigBase): maibot_server: MaiBotServerConfig chat: ChatConfig voice: VoiceConfig + forward: ForwardConfig debug: DebugConfig diff --git a/src/config/official_configs.py b/src/config/official_configs.py index 98b4552..d744c49 100644 --- a/src/config/official_configs.py +++ b/src/config/official_configs.py @@ -77,6 +77,14 @@ class VoiceConfig(ConfigBase): """是否启用TTS功能""" +@dataclass +class ForwardConfig(ConfigBase): + """转发消息相关配置""" + + image_threshold: int = 3 + """图片数量阈值:转发消息中图片数量超过此值时,使用占位符代替base64发送,避免麦麦VLM处理卡死""" + + @dataclass class DebugConfig(ConfigBase): level: Literal["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"] = "INFO" diff --git a/src/recv_handler/message_handler.py b/src/recv_handler/message_handler.py index 41354cb..c54186c 100644 --- a/src/recv_handler/message_handler.py +++ b/src/recv_handler/message_handler.py @@ -662,14 +662,17 @@ class MessageHandler: forward_header = Seg(type="text", data="========== 转发消息开始 ==========\n") forward_footer = Seg(type="text", data="========== 转发消息结束 ==========") - if image_count < 5 and image_count > 0: - # 处理图片数量小于5的情况,此时解析图片为base64 - logger.trace("图片数量小于5,开始解析图片为base64") + # 图片阈值:超过此数量使用占位符避免麦麦VLM处理卡死 + image_threshold = global_config.forward.image_threshold + + if image_count < image_threshold and image_count > 0: + # 处理图片数量小于阈值的情况,此时解析图片为base64 + logger.trace(f"图片数量({image_count})小于{image_threshold},开始解析图片为base64") parsed_message = await self._recursive_parse_image_seg(handled_message, True) return Seg(type="seglist", data=[forward_header, parsed_message, forward_footer]) elif image_count > 0: - logger.trace("图片数量大于等于5,开始解析图片为占位符") - # 处理图片数量大于等于5的情况,此时解析图片为占位符 + logger.trace(f"图片数量({image_count})大于等于{image_threshold},开始解析图片为占位符") + # 处理图片数量大于等于阈值的情况,此时解析图片为占位符 parsed_message = await self._recursive_parse_image_seg(handled_message, False) return Seg(type="seglist", data=[forward_header, parsed_message, forward_footer]) else: diff --git a/template/template_config.toml b/template/template_config.toml index 63b55ae..610e1fb 100644 --- a/template/template_config.toml +++ b/template/template_config.toml @@ -31,5 +31,8 @@ enable_poke = true # 是否启用戳一戳功能 [voice] # 发送语音设置 use_tts = false # 是否使用tts语音(请确保你配置了tts并有对应的adapter) +[forward] # 转发消息处理设置 +image_threshold = 3 # 图片数量阈值:转发消息中图片数量超过此值时使用占位符(避免麦麦VLM处理卡死) + [debug] level = "INFO" # 日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)