diff --git a/src/plugins/heartFC_chat/expressors/default_expressor.py b/src/plugins/heartFC_chat/expressors/default_expressor.py index 4e08e2ba8..5eb8f037d 100644 --- a/src/plugins/heartFC_chat/expressors/default_expressor.py +++ b/src/plugins/heartFC_chat/expressors/default_expressor.py @@ -79,12 +79,13 @@ class DefaultExpressor: action_data: Dict[str, Any], reasoning: str, anchor_message: MessageRecv, - ) -> tuple[bool, str]: + ) -> tuple[bool, Optional[List[str]]]: # 创建思考消息 thinking_id = await self._create_thinking_message(anchor_message) if not thinking_id: raise Exception("无法创建思考消息") + reply = None # 初始化 reply,防止未定义 try: has_sent_something = False @@ -124,7 +125,7 @@ class DefaultExpressor: except Exception as e: logger.error(f"回复失败: {e}") - return False, thinking_id + return False, None # --- 回复器 (Replier) 的定义 --- # @@ -142,8 +143,8 @@ class DefaultExpressor: try: # 1. 获取情绪影响因子并调整模型温度 arousal_multiplier = MoodManager.get_instance().get_arousal_multiplier() - current_temp = global_config.llm_normal["temp"] * arousal_multiplier - self.express_model.temperature = current_temp # 动态调整温度 + current_temp = float(global_config.llm_normal["temp"]) * arousal_multiplier + self.express_model.params["temperature"] = current_temp # 动态调整温度 # 2. 获取信息捕捉器 info_catcher = info_catcher_manager.get_info_catcher(thinking_id) @@ -217,11 +218,14 @@ class DefaultExpressor: self, anchor_message: Optional[MessageRecv], response_set: List[str], thinking_id: str ) -> Optional[MessageSending]: """发送回复消息 (尝试锚定到 anchor_message),使用 HeartFCSender""" - if not anchor_message or not anchor_message.chat_stream: - logger.error(f"{self.log_prefix} 无法发送回复,缺少有效的锚点消息或聊天流。") + chat = self.chat_stream + if chat is None: + logger.error(f"{self.log_prefix} 无法发送回复,chat_stream 为空。") + return None + if not anchor_message: + logger.error(f"{self.log_prefix} 无法发送回复,anchor_message 为空。") return None - chat = self.chat_stream chat_id = self.chat_id stream_name = chat_manager.get_stream_name(chat_id) or chat_id # 获取流名称用于日志 diff --git a/src/plugins/heartFC_chat/expressors/exprssion_learner.py b/src/plugins/heartFC_chat/expressors/exprssion_learner.py index af5c87226..db1d8a6f9 100644 --- a/src/plugins/heartFC_chat/expressors/exprssion_learner.py +++ b/src/plugins/heartFC_chat/expressors/exprssion_learner.py @@ -25,8 +25,9 @@ def init_prompt() -> None: 例如: 当"表示十分惊叹"时,使用"我嘞个xxxx" 当"表示讽刺的赞同,不想讲道理"时,使用"对对对" -当"想表达某个观点,但不想明说",使用"反讽" +当"想表达某个观点,但不想明说",使用"反讽的句式" 当"想说明某个观点,但懒得明说",使用"懂的都懂" +当"想搞笑的表现高深的感觉",使用"文言文句式" 现在请你概括 """ diff --git a/src/plugins/heartFC_chat/heartFC_chat.py b/src/plugins/heartFC_chat/heartFC_chat.py index 9bd24b242..05aa64c72 100644 --- a/src/plugins/heartFC_chat/heartFC_chat.py +++ b/src/plugins/heartFC_chat/heartFC_chat.py @@ -442,7 +442,7 @@ class HeartFChatting: pending = set(tasks.values()) # 等待所有任务完成,同时追踪每个任务的完成情况 - results = {} + results: dict[str, list[InfoBase]] = {} while pending: # 等待任务完成 done, pending = await asyncio.wait(pending, return_when=asyncio.FIRST_COMPLETED, timeout=1.0) @@ -467,12 +467,9 @@ class HeartFChatting: ) # 所有任务完成,从结果中提取数据 - mind_processed_infos = [] - tool_processed_infos = [] - chatting_info_processed_infos = [] - mind_processed_infos = results.get("思考任务") - tool_processed_infos = results.get("工具任务") - chatting_info_processed_infos = results.get("聊天信息处理任务") + mind_processed_infos = results.get("思考任务", []) + tool_processed_infos = results.get("工具任务", []) + chatting_info_processed_infos = results.get("聊天信息处理任务", []) # 记录总耗时 parallel_end_time = time.time() diff --git a/src/plugins/heartFC_chat/heartflow_prompt_builder.py b/src/plugins/heartFC_chat/heartflow_prompt_builder.py index dd12826eb..c0e110318 100644 --- a/src/plugins/heartFC_chat/heartflow_prompt_builder.py +++ b/src/plugins/heartFC_chat/heartflow_prompt_builder.py @@ -50,7 +50,7 @@ def init_prompt(): {chat_info} -你需要学习聊天内容中其他人的回复风格,并结合到你的回复中 +你只需要了解聊天记录中的内容就好 {chat_target} 你的名字是{bot_name},{prompt_personality},你想表达:{in_mind_reply},原因是:{reason} @@ -373,7 +373,7 @@ class PromptBuilder: in_mind_reply=None, ) -> Optional[str]: if build_mode == "normal": - return await self._build_prompt_normal(chat_stream, message_txt, sender_name) + return await self._build_prompt_normal(chat_stream, message_txt or "", sender_name) elif build_mode == "focus": return await _build_prompt_focus( diff --git a/src/plugins/heartFC_chat/info_processors/mind_processor.py b/src/plugins/heartFC_chat/info_processors/mind_processor.py index 26a2cdab4..8029a7f3b 100644 --- a/src/plugins/heartFC_chat/info_processors/mind_processor.py +++ b/src/plugins/heartFC_chat/info_processors/mind_processor.py @@ -22,6 +22,7 @@ from src.plugins.heartFC_chat.info_processors.processor_utils import ( get_spark, ) from typing import Dict +from src.heart_flow.info.info_base import InfoBase logger = get_logger("sub_heartflow") @@ -123,14 +124,14 @@ class MindProcessor(BaseProcessor): async def process_info( self, observations: Optional[List[Observation]] = None, running_memorys: Optional[List[Dict]] = None, *infos - ) -> List[dict]: + ) -> List[InfoBase]: """处理信息对象 Args: *infos: 可变数量的InfoBase类型的信息对象 Returns: - List[dict]: 处理后的结构化信息列表 + List[InfoBase]: 处理后的结构化信息列表 """ current_mind = await self.do_thinking_before_reply(observations, running_memorys) @@ -180,6 +181,8 @@ class MindProcessor(BaseProcessor): # 获取现有想法和情绪状态 previous_mind = self.current_mind if self.current_mind else "" + if observations is None: + observations = [] for observation in observations: if isinstance(observation, ChattingObservation): # 获取聊天元信息