diff --git a/src/heart_flow/sub_heartflow.py b/src/heart_flow/sub_heartflow.py index 7720eb012..8a38554f7 100644 --- a/src/heart_flow/sub_heartflow.py +++ b/src/heart_flow/sub_heartflow.py @@ -44,7 +44,7 @@ def init_prompt(): prompt += "现在请你根据刚刚的想法继续思考,思考时可以想想如何对群聊内容进行回复,要不要对群里的话题进行回复,关注新话题,可以适当转换话题,大家正在说的话才是聊天的主题。\n" prompt += "回复的要求是:平淡一些,简短一些,说中文,如果你要回复,最好只回复一个人的一个话题\n" prompt += "请注意不要输出多余内容(包括前后缀,冒号和引号,括号, 表情,等),不要带有括号和动作描写。不要回复自己的发言,尽量不要说你说过的话。" - prompt += "现在请你继续生成你在这个聊天中的想法,不要分点输出,生成内心想法,文字不要浮夸" + prompt += "现在请你{hf_do_next},不要分点输出,生成内心想法,文字不要浮夸" Prompt(prompt, "sub_heartflow_prompt_before") @@ -176,6 +176,26 @@ class SubHeartflow: prompt_personality += f",{random_detail}" time_now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + + + # 创建局部Random对象避免影响全局随机状态 + local_random = random.Random() + current_minute = int(time.strftime("%M")) + local_random.seed(current_minute) # 用分钟作为种子确保每分钟内选择一致 + + hf_options = [ + ("继续生成你在这个聊天中的想法,在原来想法的基础上继续思考", 0.7), + ("生成你在这个聊天中的想法,在原来的想法上尝试新的话题", 0.1), + ("生成你在这个聊天中的想法,不要太深入", 0.1), + ("继续生成你在这个聊天中的想法,进行深入思考", 0.1) + ] + + hf_do_next = local_random.choices( + [option[0] for option in hf_options], + weights=[option[1] for option in hf_options], + k=1 + )[0] + prompt = (await global_prompt_manager.get_prompt_async("sub_heartflow_prompt_before")).format( extra_info=extra_info_prompt, @@ -186,6 +206,7 @@ class SubHeartflow: time_now=time_now, chat_observe_info=chat_observe_info, mood_info=mood_info, + hf_do_next=hf_do_next, # sender_name=sender_name_sign, # message_txt=message_txt, ) diff --git a/src/plugins/chat_module/heartFC_chat/interest.py b/src/plugins/chat_module/heartFC_chat/interest.py index 692e98ac1..5a961e915 100644 --- a/src/plugins/chat_module/heartFC_chat/interest.py +++ b/src/plugins/chat_module/heartFC_chat/interest.py @@ -32,9 +32,9 @@ HISTORY_LOG_FILENAME = "interest_history.log" # 新的历史日志文件名 # --- 新增:概率回复相关常量 --- REPLY_TRIGGER_THRESHOLD = 3.0 # 触发概率回复的兴趣阈值 (示例值) -BASE_REPLY_PROBABILITY = 0.05 # 首次超过阈值时的基础回复概率 (示例值) +BASE_REPLY_PROBABILITY = 0.1 # 首次超过阈值时的基础回复概率 (示例值) PROBABILITY_INCREASE_RATE_PER_SECOND = 0.02 # 高于阈值时,每秒概率增加量 (线性增长, 示例值) -PROBABILITY_DECAY_FACTOR_PER_SECOND = 0.3 # 低于阈值时,每秒概率衰减因子 (指数衰减, 示例值) +PROBABILITY_DECAY_FACTOR_PER_SECOND = 0.2 # 低于阈值时,每秒概率衰减因子 (指数衰减, 示例值) MAX_REPLY_PROBABILITY = 1 # 回复概率上限 (示例值) # --- 结束:概率回复相关常量 --- diff --git a/src/plugins/chat_module/heartFC_chat/pf_chatting.py b/src/plugins/chat_module/heartFC_chat/pf_chatting.py index 6c9576291..7f082615a 100644 --- a/src/plugins/chat_module/heartFC_chat/pf_chatting.py +++ b/src/plugins/chat_module/heartFC_chat/pf_chatting.py @@ -85,6 +85,7 @@ class PFChatting: max_tokens=1000, request_type="action_planning", ) + # Internal state for loop control self._loop_timer: float = 0.0 # Remaining time for the loop in seconds @@ -711,7 +712,7 @@ class PFChatting: else: prompt += "当前没有观察到新的聊天内容。\n" - prompt += "\n你的内心想法是:" + prompt += "\n看了以上内容,你产生的内心想法是:" if current_mind: prompt += f"\n---\n{current_mind}\n---\n\n" else: diff --git a/src/plugins/utils/chat_message_builder.py b/src/plugins/utils/chat_message_builder.py index fd9c67251..ac031d378 100644 --- a/src/plugins/utils/chat_message_builder.py +++ b/src/plugins/utils/chat_message_builder.py @@ -109,7 +109,7 @@ def num_new_messages_since_with_users(chat_id: str, timestamp_start: float, time async def _build_readable_messages_internal( messages: List[Dict[str, Any]], replace_bot_name: bool = True, - merge_messages: bool = True, + merge_messages: bool = False, timestamp_mode: str = "relative" # 新增参数控制时间戳格式 ) -> Tuple[str, List[Tuple[float, str, str]]]: """ @@ -223,7 +223,7 @@ async def _build_readable_messages_internal( async def build_readable_messages_with_list( messages: List[Dict[str, Any]], replace_bot_name: bool = True, - merge_messages: bool = True, + merge_messages: bool = False, timestamp_mode: str = "relative" ) -> Tuple[str, List[Tuple[float, str, str]]]: """ @@ -238,7 +238,7 @@ async def build_readable_messages_with_list( async def build_readable_messages( messages: List[Dict[str, Any]], replace_bot_name: bool = True, - merge_messages: bool = True, + merge_messages: bool = False, timestamp_mode: str = "relative" ) -> str: """