fix(planner): 当缺少 target_id 时确保设置动作消息

当 LLM 规划器没有为某个动作指定 `target_message_id` 时,系统现在将默认使用上下文中的最新消息。这确保了需要消息上下文的动作(如引用或回复)有一个有效的 `action_message` 对象,从而防止潜在的 `None` 引用错误。
This commit is contained in:
tt-P607
2025-11-23 02:24:23 +08:00
parent f3ae22d622
commit f464befe66
2 changed files with 15 additions and 1 deletions

View File

@@ -551,10 +551,24 @@ class ChatterPlanFilter:
available_actions=plan.available_actions,
)
else:
# 如果LLM没有指定target_message_id统一使用最新消息
target_message_dict = self._get_latest_message(message_id_list)
action_message_obj = None
if target_message_dict:
from src.common.data_models.database_data_model import DatabaseMessages
try:
action_message_obj = DatabaseMessages(**target_message_dict)
except Exception as e:
logger.error(
f"[{action}] 无法将默认的最新消息转换为 DatabaseMessages 对象: {e}",
exc_info=True,
)
return ActionPlannerInfo(
action_type=action,
reasoning=reasoning,
action_data=action_data,
action_message=action_message_obj,
)
except Exception as e:
logger.error(f"解析单个action时出错: {e}")

View File

@@ -28,7 +28,7 @@ class TTSVoicePlugin(BasePlugin):
plugin_description = "基于GPT-SoVITS的文本转语音插件重构版"
plugin_version = "3.1.2"
plugin_author = "Kilo Code & 靚仔"
enable_plugin = False
enable_plugin = True
config_file_name = "config.toml"
dependencies: ClassVar[list[str]] = []