From 741fa815c040206011bdc4381fae1cbe93d920e2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 3 May 2025 19:44:13 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=A4=96=20=E8=87=AA=E5=8A=A8=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E5=8C=96=E4=BB=A3=E7=A0=81=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/PFC/conversation.py | 9 ++++----- src/plugins/PFC/conversation_info.py | 4 ++-- src/plugins/PFC/reply_generator.py | 30 ++++++++++++++++------------ 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/src/plugins/PFC/conversation.py b/src/plugins/PFC/conversation.py index 5e04e992..66dbbf7b 100644 --- a/src/plugins/PFC/conversation.py +++ b/src/plugins/PFC/conversation.py @@ -341,7 +341,7 @@ class Conversation: conversation_info.last_reply_rejection_reason = check_reason conversation_info.last_rejected_reply_content = self.generated_reply else: - # 如果检查通过,清空上次的拒绝原因 + # 如果检查通过,清空上次的拒绝原因 conversation_info.last_reply_rejection_reason = None conversation_info.last_rejected_reply_content = None @@ -358,11 +358,10 @@ class Conversation: f"[私聊][{self.private_name}]第 {reply_attempt_count} 次调用 ReplyChecker (追问) 时出错: {check_err}" ) check_reason = f"第 {reply_attempt_count} 次检查过程出错: {check_err}" - conversation_info.last_reply_rejection_reason = f"检查过程出错: {check_err}" # 出错也记录原因 + conversation_info.last_reply_rejection_reason = f"检查过程出错: {check_err}" # 出错也记录原因 conversation_info.last_rejected_reply_content = self.generated_reply break - # 循环结束,处理最终结果 if is_suitable: # 检查是否有新消息 @@ -485,7 +484,7 @@ class Conversation: await self._send_reply() # <--- 调用恢复后的函数 # --- 新增:回复成功,清除拒绝原因 --- conversation_info.last_reply_rejection_reason = None - conversation_info.last_rejected_reply_content = None # <-- 新增清空内容 + conversation_info.last_rejected_reply_content = None # <-- 新增清空内容 # 更新状态: 标记上次成功是 direct_reply self.conversation_info.last_successful_reply_action = "direct_reply" action_successful = True # 标记动作成功 @@ -666,7 +665,7 @@ class Conversation: self.conversation_info.last_successful_reply_action = None # --- 新增:非回复动作成功,也清除拒绝原因 --- conversation_info.last_reply_rejection_reason = None - conversation_info.last_rejected_reply_content = None # <-- 新增清空内容 + conversation_info.last_rejected_reply_content = None # <-- 新增清空内容 logger.debug(f"[私聊][{self.private_name}]动作 {action} 成功完成,重置 last_successful_reply_action") # 如果动作是 recall 状态,在各自的处理逻辑中已经更新了 done_action diff --git a/src/plugins/PFC/conversation_info.py b/src/plugins/PFC/conversation_info.py index be754b3c..062a4641 100644 --- a/src/plugins/PFC/conversation_info.py +++ b/src/plugins/PFC/conversation_info.py @@ -8,5 +8,5 @@ class ConversationInfo: self.knowledge_list = [] self.memory_list = [] self.last_successful_reply_action: Optional[str] = None - self.last_reply_rejection_reason: Optional[str] = None # 用于存储上次回复被拒原因 - self.last_rejected_reply_content: Optional[str] = None # 用于存储上次被拒的回复内容 \ No newline at end of file + self.last_reply_rejection_reason: Optional[str] = None # 用于存储上次回复被拒原因 + self.last_rejected_reply_content: Optional[str] = None # 用于存储上次被拒的回复内容 diff --git a/src/plugins/PFC/reply_generator.py b/src/plugins/PFC/reply_generator.py index c98b8d1c..5c4eb46c 100644 --- a/src/plugins/PFC/reply_generator.py +++ b/src/plugins/PFC/reply_generator.py @@ -249,21 +249,23 @@ class ReplyGenerator: # --- 修改:构建上次回复失败原因和内容提示 --- last_rejection_info_str = "" # 检查 conversation_info 是否有上次拒绝的原因和内容,并且它们都不是 None - last_reason = getattr(conversation_info, 'last_reply_rejection_reason', None) - last_content = getattr(conversation_info, 'last_rejected_reply_content', None) + last_reason = getattr(conversation_info, "last_reply_rejection_reason", None) + last_content = getattr(conversation_info, "last_rejected_reply_content", None) if last_reason and last_content: last_rejection_info_str = ( f"\n------\n" f"【重要提示:你上一次尝试回复时失败了,以下是详细信息】\n" - f"上次试图发送的消息内容: “{last_content}”\n" # <-- 显示上次内容 + f"上次试图发送的消息内容: “{last_content}”\n" # <-- 显示上次内容 f"失败原因: “{last_reason}”\n" f"请根据【消息内容】和【失败原因】调整你的新回复,避免重复之前的错误。\n" f"------\n" ) - logger.info(f"[私聊][{self.private_name}]检测到上次回复失败信息,将加入 Prompt:\n" - f" 内容: {last_content}\n" - f" 原因: {last_reason}") + logger.info( + f"[私聊][{self.private_name}]检测到上次回复失败信息,将加入 Prompt:\n" + f" 内容: {last_content}\n" + f" 原因: {last_reason}" + ) # --- 选择 Prompt --- if action_type == "send_new_message": @@ -277,22 +279,24 @@ class ReplyGenerator: logger.info(f"[私聊][{self.private_name}]使用 PROMPT_DIRECT_REPLY (首次/非连续回复生成)") # --- 格式化最终的 Prompt --- - try: # <--- 增加 try-except 块处理可能的 format 错误 + try: # <--- 增加 try-except 块处理可能的 format 错误 prompt = prompt_template.format( persona_text=persona_text, goals_str=goals_str, chat_history_text=chat_history_text, retrieved_memory_str=retrieved_memory_str if retrieved_memory_str else "无相关记忆。", retrieved_knowledge_str=retrieved_knowledge_str if retrieved_knowledge_str else "无相关知识。", - last_rejection_info=last_rejection_info_str # <--- 新增传递上次拒绝原因 + last_rejection_info=last_rejection_info_str, # <--- 新增传递上次拒绝原因 ) except KeyError as e: - logger.error(f"[私聊][{self.private_name}]格式化 Prompt 时出错,缺少键: {e}。请检查 Prompt 模板和传递的参数。") - # 返回错误信息或默认回复 - return "抱歉,准备回复时出了点问题,请检查一下我的代码..." + logger.error( + f"[私聊][{self.private_name}]格式化 Prompt 时出错,缺少键: {e}。请检查 Prompt 模板和传递的参数。" + ) + # 返回错误信息或默认回复 + return "抱歉,准备回复时出了点问题,请检查一下我的代码..." except Exception as fmt_err: - logger.error(f"[私聊][{self.private_name}]格式化 Prompt 时发生未知错误: {fmt_err}") - return "抱歉,准备回复时出了点内部错误,请检查一下我的代码..." + logger.error(f"[私聊][{self.private_name}]格式化 Prompt 时发生未知错误: {fmt_err}") + return "抱歉,准备回复时出了点内部错误,请检查一下我的代码..." # --- 调用 LLM 生成 --- logger.debug(f"[私聊][{self.private_name}]发送到LLM的生成提示词:\n------\n{prompt}\n------")