From 52e3e9c2970ce32b7a3c518526f8e4a93c177914 Mon Sep 17 00:00:00 2001 From: SengokuCola <1026294844@qq.com> Date: Tue, 16 Dec 2025 14:59:04 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E5=A4=8D=E6=8F=90?= =?UTF-8?q?=E5=8F=8A=E5=BF=85=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/chat/heart_flow/heartFC_chat.py | 1 + src/chat/planner_actions/planner.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/chat/heart_flow/heartFC_chat.py b/src/chat/heart_flow/heartFC_chat.py index 5fbddb7c..eaf6dc8e 100644 --- a/src/chat/heart_flow/heartFC_chat.py +++ b/src/chat/heart_flow/heartFC_chat.py @@ -370,6 +370,7 @@ class HeartFChatting: action_to_use_info = await self.action_planner.plan( loop_start_time=self.last_read_time, available_actions=available_actions, + force_reply_message=force_reply_message, ) logger.info( diff --git a/src/chat/planner_actions/planner.py b/src/chat/planner_actions/planner.py index bc20c552..4740c08f 100644 --- a/src/chat/planner_actions/planner.py +++ b/src/chat/planner_actions/planner.py @@ -267,6 +267,7 @@ class ActionPlanner: self, available_actions: Dict[str, ActionInfo], loop_start_time: float = 0.0, + force_reply_message: Optional["DatabaseMessages"] = None, ) -> List[ActionPlannerInfo]: # sourcery skip: use-named-expression """ @@ -325,6 +326,34 @@ class ActionPlanner: loop_start_time=loop_start_time, ) + # 如果有强制回复消息,确保回复该消息 + if force_reply_message: + # 检查是否已经有回复该消息的 action + has_reply_to_force_message = False + for action in actions: + if action.action_type == "reply" and action.action_message and action.action_message.message_id == force_reply_message.message_id: + has_reply_to_force_message = True + break + + # 如果没有回复该消息,强制添加回复 action + if not has_reply_to_force_message: + # 移除所有 no_reply action(如果有) + actions = [a for a in actions if a.action_type != "no_reply"] + + # 创建强制回复 action + available_actions_dict = dict(current_available_actions) + force_reply_action = ActionPlannerInfo( + action_type="reply", + reasoning="用户提及了我,必须回复该消息", + action_data={"loop_start_time": loop_start_time}, + action_message=force_reply_message, + available_actions=available_actions_dict, + action_reasoning=None, + ) + # 将强制回复 action 放在最前面 + actions.insert(0, force_reply_action) + logger.info(f"{self.log_prefix} 检测到强制回复消息,已添加回复动作") + logger.info( f"{self.log_prefix}Planner:{reasoning}。选择了{len(actions)}个动作: {' '.join([a.action_type for a in actions])}" ) From 3ea775af924c26db5feca27e914979ab50ea196d Mon Sep 17 00:00:00 2001 From: SengokuCola <1026294844@qq.com> Date: Tue, 16 Dec 2025 14:59:17 +0800 Subject: [PATCH 2/2] Update config.py Update changelog.md --- changelogs/changelog.md | 16 +++++++++++++--- src/config/config.py | 2 +- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/changelogs/changelog.md b/changelogs/changelog.md index 690f797d..11545b58 100644 --- a/changelogs/changelog.md +++ b/changelogs/changelog.md @@ -1,10 +1,20 @@ # Changelog -## [0.11.7] - 2025-12-2 +## [0.12.0] - 2025-12-16 +### 🌟 重大更新 +- 添加思考力度机制,动态控制回复时间和长度 +- planner和replyer现在开启联动,更好的回复逻辑 +- 新的私聊系统,吸收了pfc的优秀机制 - 增加麦麦做梦功能 +- mcp插件作为内置插件加入,默认不启用 +- 添加全局记忆配置项,现在可以选择让记忆为全局的 -- 添加全局记忆配置项 - +### 细节功能更改 +- 移除频率自动调整 +- 移除情绪功能 +- 优化记忆差许多呢超时设置 +- 部分配置为0的bug +- 黑话和表达不再提取包含名称的内容 ## [0.11.6] - 2025-12-2 ### 🌟 重大更新 diff --git a/src/config/config.py b/src/config/config.py index 44125df4..949898ab 100644 --- a/src/config/config.py +++ b/src/config/config.py @@ -56,7 +56,7 @@ TEMPLATE_DIR = os.path.join(PROJECT_ROOT, "template") # 考虑到,实际上配置文件中的mai_version是不会自动更新的,所以采用硬编码 # 对该字段的更新,请严格参照语义化版本规范:https://semver.org/lang/zh-CN/ -MMC_VERSION = "0.12.0-snapshot.1" +MMC_VERSION = "0.12.0" def get_key_comment(toml_table, key):