feat(chat): 统一消息格式信息处理逻辑
在多个消息处理模块中统一了 format_info 的处理方式,确保适配器支持的消息类型能够正确传递给 action_modifier: - 在 bot.py、chat_stream.py、optimized_chat_stream.py 中新增 _prepare_additional_config 方法 - 将 format_info 嵌入到 additional_config 中,确保数据库存储一致性 - 增强 action_modifier 中的适配器类型检查逻辑,添加更详细的错误日志 - 修复 storage.py 中的 additional_config 处理逻辑,避免覆盖原始配置 这些改进确保了 Action 能够正确检查适配器支持的消息类型,避免因缺少 format_info 导致的类型检查失败。
This commit is contained in:
@@ -100,16 +100,22 @@ class MessageStorage:
|
||||
priority_info_json = orjson.dumps(priority_info).decode("utf-8") if priority_info else None
|
||||
|
||||
# 准备additional_config,包含format_info和其他配置
|
||||
additional_config_data = {}
|
||||
additional_config_data = None
|
||||
|
||||
# 保存format_info到additional_config中
|
||||
# 首先获取adapter传递的additional_config
|
||||
if hasattr(message.message_info, 'additional_config') and message.message_info.additional_config:
|
||||
additional_config_data = message.message_info.additional_config.copy() # 避免修改原始对象
|
||||
else:
|
||||
additional_config_data = {}
|
||||
|
||||
# 然后添加format_info到additional_config中
|
||||
if hasattr(message.message_info, 'format_info') and message.message_info.format_info:
|
||||
format_info_dict = message.message_info.format_info.to_dict()
|
||||
additional_config_data["format_info"] = format_info_dict
|
||||
|
||||
# 合并adapter传递的其他additional_config
|
||||
if hasattr(message.message_info, 'additional_config') and message.message_info.additional_config:
|
||||
additional_config_data.update(message.message_info.additional_config)
|
||||
logger.debug(f"保存format_info: {format_info_dict}")
|
||||
else:
|
||||
logger.warning(f"[问题] 消息缺少format_info: message_id={getattr(message.message_info, 'message_id', 'unknown')}")
|
||||
logger.warning("[问题] 这可能导致Action无法正确检查适配器支持的类型")
|
||||
|
||||
# 序列化为JSON字符串以便存储
|
||||
additional_config_json = orjson.dumps(additional_config_data).decode("utf-8") if additional_config_data else None
|
||||
|
||||
Reference in New Issue
Block a user