From dd43fccb944042a63b2f94d0e6d9f999ac199eee Mon Sep 17 00:00:00 2001 From: Windpicker-owo <3431391539@qq.com> Date: Mon, 10 Nov 2025 16:07:23 +0800 Subject: [PATCH] =?UTF-8?q?feat(reply):=20=E4=BC=98=E5=8C=96respond?= =?UTF-8?q?=E5=8A=A8=E4=BD=9C=E9=80=BB=E8=BE=91=EF=BC=8C=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E4=B8=8D=E5=BF=85=E8=A6=81=E7=9A=84=E7=9B=AE=E6=A0=87=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/chat/replyer/default_generator.py | 5 +++-- .../built_in/affinity_flow_chatter/planner/planner.py | 11 +++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/chat/replyer/default_generator.py b/src/chat/replyer/default_generator.py index 0e535f181..1e2f88c95 100644 --- a/src/chat/replyer/default_generator.py +++ b/src/chat/replyer/default_generator.py @@ -1236,8 +1236,9 @@ class DefaultReplyer: # 构建基础决策信息 action_descriptions = f"## 决策信息\n\n你已经决定要执行 **{action_name}** 动作({action_desc})。\n\n" - # 如果有目标消息信息,添加目标消息详情 - if target_msg_info and isinstance(target_msg_info, dict): + # 只有需要目标消息的动作才显示目标消息详情 + # respond 动作是统一回应所有未读消息,不应该显示特定目标消息 + if action_name not in ["respond"] and target_msg_info and isinstance(target_msg_info, dict): import time as time_module sender = target_msg_info.get("sender", "未知用户") content = target_msg_info.get("content", "") diff --git a/src/plugins/built_in/affinity_flow_chatter/planner/planner.py b/src/plugins/built_in/affinity_flow_chatter/planner/planner.py index 8d5b3baad..3ef07588e 100644 --- a/src/plugins/built_in/affinity_flow_chatter/planner/planner.py +++ b/src/plugins/built_in/affinity_flow_chatter/planner/planner.py @@ -337,15 +337,13 @@ class ChatterActionPlanner: from src.common.data_models.info_data_model import ActionPlannerInfo, Plan from src.plugin_system.base.component_types import ChatType - # 构建目标消息字典 - 使用 flatten() 方法获取扁平化的字典 - target_message_dict = target_message.flatten() - # Normal模式使用respond动作,表示统一回应未读消息 + # respond动作不需要target_message_id和action_message,因为它是统一回应所有未读消息 respond_action = ActionPlannerInfo( action_type="respond", reasoning="Normal模式 - 兴趣度达到阈值,使用respond动作统一回应未读消息", - action_data={"target_message_id": target_message.message_id}, - action_message=target_message, + action_data={}, # respond动作不需要参数 + action_message=None, # respond动作不针对特定消息 should_quote_reply=False, # Normal模式默认不引用回复,保持对话流畅 ) @@ -375,7 +373,8 @@ class ChatterActionPlanner: # 8. 检查是否需要退出Normal模式 await self._check_exit_normal_mode(context) - return [asdict(respond_action)], target_message_dict + # respond动作不返回目标消息,因为它是统一回应所有未读消息 + return [asdict(respond_action)], None else: # 未达到reply阈值 logger.debug("Normal模式 - 未达到reply阈值,不执行回复")