diff --git a/README.md b/README.md index f2ab0b75d..562168a54 100644 --- a/README.md +++ b/README.md @@ -108,7 +108,7 @@ - [📚 核心Wiki文档](https://docs.mai-mai.org) - 项目最全面的文档中心,你可以了解麦麦有关的一切 ### 最新版本部署教程(MaiCore版本) -- [🚀 最新版本部署教程](https://docs.mai-mai.org/manual/deployment/mmc_deploy.html) - 基于MaiCore的新版本部署方式(与旧版本不兼容) +- [🚀 最新版本部署教程](https://docs.mai-mai.org/manual/deployment/mmc_deploy_windows.html) - 基于MaiCore的新版本部署方式(与旧版本不兼容) ## 🎯 功能介绍 diff --git a/changelogs/changelog_config.md b/changelogs/changelog_config.md index 32912f691..e438ea31e 100644 --- a/changelogs/changelog_config.md +++ b/changelogs/changelog_config.md @@ -22,7 +22,7 @@ ## [0.0.11] - 2025-3-12 ### Added - 新增了 `schedule` 配置项,用于配置日程表生成功能 -- 新增了 `response_spliter` 配置项,用于控制回复分割 +- 新增了 `response_splitter` 配置项,用于控制回复分割 - 新增了 `experimental` 配置项,用于实验性功能开关 - 新增了 `llm_observation` 和 `llm_sub_heartflow` 模型配置 - 新增了 `llm_heartflow` 模型配置 diff --git a/src/do_tool/tool_can_use/change_mood.py b/src/do_tool/tool_can_use/change_mood.py index e7339e534..53410068f 100644 --- a/src/do_tool/tool_can_use/change_mood.py +++ b/src/do_tool/tool_can_use/change_mood.py @@ -1,4 +1,4 @@ -from src.do_tool.tool_can_use.base_tool import BaseTool, register_tool +from src.do_tool.tool_can_use.base_tool import BaseTool from src.plugins.config.config import global_config from src.common.logger import get_module_logger from src.plugins.moods.moods import MoodManager @@ -11,20 +11,19 @@ logger = get_module_logger("change_mood_tool") class ChangeMoodTool(BaseTool): """改变心情的工具""" - + name = "change_mood" description = "根据收到的内容和自身回复的内容,改变心情,当你回复了别人的消息,你可以使用这个工具" parameters = { "type": "object", "properties": { "text": {"type": "string", "description": "引起你改变心情的文本"}, - "response_set": {"type": "list", "description": "你对文本的回复"} + "response_set": {"type": "list", "description": "你对文本的回复"}, }, "required": ["text", "response_set"], } - - async def execute(self, function_args: Dict[str, Any],message_txt:str) -> Dict[str, Any]: + async def execute(self, function_args: Dict[str, Any], message_txt: str) -> Dict[str, Any]: """执行心情改变 Args: @@ -38,13 +37,13 @@ class ChangeMoodTool(BaseTool): try: response_set = function_args.get("response_set") message_processed_plain_text = function_args.get("text") - + mood_manager = MoodManager.get_instance() gpt = ResponseGenerator() - + if response_set is None: response_set = ["你还没有回复"] - + ori_response = ",".join(response_set) _stance, emotion = await gpt._get_emotion_tags(ori_response, message_processed_plain_text) mood_manager.update_mood_from_emotion(emotion, global_config.mood_intensity_factor) diff --git a/src/do_tool/tool_can_use/change_relationship.py b/src/do_tool/tool_can_use/change_relationship.py index a3d87e279..9aa084855 100644 --- a/src/do_tool/tool_can_use/change_relationship.py +++ b/src/do_tool/tool_can_use/change_relationship.py @@ -1,43 +1,34 @@ -from src.plugins.person_info.relationship_manager import relationship_manager +# from src.plugins.person_info.relationship_manager import relationship_manager from src.common.logger import get_module_logger from src.do_tool.tool_can_use.base_tool import BaseTool -from src.plugins.chat_module.think_flow_chat.think_flow_generator import ResponseGenerator +# from src.plugins.chat_module.think_flow_chat.think_flow_generator import ResponseGenerator logger = get_module_logger("relationship_tool") + class RelationshipTool(BaseTool): name = "change_relationship" description = "根据收到的文本和回复内容,修改与特定用户的关系值,当你回复了别人的消息,你可以使用这个工具" parameters = { "type": "object", "properties": { - "text": { - "type": "string", - "description": "收到的文本" - }, - "changed_value": { - "type": "number", - "description": "变更值" - }, - "reason": { - "type": "string", - "description": "变更原因" - } + "text": {"type": "string", "description": "收到的文本"}, + "changed_value": {"type": "number", "description": "变更值"}, + "reason": {"type": "string", "description": "变更原因"}, }, - "required": ["text", "changed_value", "reason"] + "required": ["text", "changed_value", "reason"], } - - async def execute(self, args: dict,message_txt:str) -> dict: + async def execute(self, args: dict, message_txt: str) -> dict: """执行工具功能 - + Args: args: 包含工具参数的字典 text: 原始消息文本 changed_value: 变更值 reason: 变更原因 - + Returns: dict: 包含执行结果的字典 """ @@ -45,9 +36,9 @@ class RelationshipTool(BaseTool): text = args.get("text") changed_value = args.get("changed_value") reason = args.get("reason") - + return {"content": f"因为你刚刚因为{reason},所以你和发[{text}]这条消息的人的关系值变化为{changed_value}"} except Exception as e: logger.error(f"修改关系值时发生错误: {str(e)}") - return {"content": f"修改关系值失败: {str(e)}"} \ No newline at end of file + return {"content": f"修改关系值失败: {str(e)}"} diff --git a/src/do_tool/tool_can_use/compare_numbers_tool.py b/src/do_tool/tool_can_use/compare_numbers_tool.py index 5ad306223..48cee5157 100644 --- a/src/do_tool/tool_can_use/compare_numbers_tool.py +++ b/src/do_tool/tool_can_use/compare_numbers_tool.py @@ -1,4 +1,4 @@ -from src.do_tool.tool_can_use.base_tool import BaseTool, register_tool +from src.do_tool.tool_can_use.base_tool import BaseTool from src.common.logger import get_module_logger from typing import Dict, Any diff --git a/src/do_tool/tool_can_use/get_knowledge.py b/src/do_tool/tool_can_use/get_knowledge.py index 74289d3de..b78c07750 100644 --- a/src/do_tool/tool_can_use/get_knowledge.py +++ b/src/do_tool/tool_can_use/get_knowledge.py @@ -1,4 +1,4 @@ -from src.do_tool.tool_can_use.base_tool import BaseTool, register_tool +from src.do_tool.tool_can_use.base_tool import BaseTool from src.plugins.chat.utils import get_embedding from src.common.database import db from src.common.logger import get_module_logger diff --git a/src/do_tool/tool_can_use/get_memory.py b/src/do_tool/tool_can_use/get_memory.py index 059c53b12..6a3c1c391 100644 --- a/src/do_tool/tool_can_use/get_memory.py +++ b/src/do_tool/tool_can_use/get_memory.py @@ -1,4 +1,4 @@ -from src.do_tool.tool_can_use.base_tool import BaseTool, register_tool +from src.do_tool.tool_can_use.base_tool import BaseTool from src.plugins.memory_system.Hippocampus import HippocampusManager from src.common.logger import get_module_logger from typing import Dict, Any diff --git a/src/do_tool/tool_use.py b/src/do_tool/tool_use.py index 87b46c942..a31bf6dda 100644 --- a/src/do_tool/tool_use.py +++ b/src/do_tool/tool_use.py @@ -154,7 +154,7 @@ class ToolUser: logger.debug("模型返回了空的tool_calls列表") return {"used_tools": False} - tool_calls_str = "" + tool_calls_str = "" for tool_call in tool_calls: tool_calls_str += f"{tool_call['function']['name']}\n" logger.info(f"根据:\n{prompt}\n模型请求调用{len(tool_calls)}个工具: {tool_calls_str}") @@ -178,10 +178,7 @@ class ToolUser: # 如果有工具结果,返回结构化的信息 if structured_info: logger.info(f"工具调用收集到结构化信息: {json.dumps(structured_info, ensure_ascii=False)}") - return { - "used_tools": True, - "structured_info": structured_info - } + return {"used_tools": True, "structured_info": structured_info} else: # 没有工具调用 content, reasoning_content = response diff --git a/src/heart_flow/sub_heartflow.py b/src/heart_flow/sub_heartflow.py index 226572acc..954e18883 100644 --- a/src/heart_flow/sub_heartflow.py +++ b/src/heart_flow/sub_heartflow.py @@ -98,8 +98,6 @@ class SubHeartflow: self.bot_name = global_config.BOT_NICKNAME - - def add_observation(self, observation: Observation): """添加一个新的observation对象到列表中,如果已存在相同id的observation则不添加""" # 查找是否存在相同id的observation diff --git a/src/plugins/chat/utils.py b/src/plugins/chat/utils.py index 52ac69473..e0f670e42 100644 --- a/src/plugins/chat/utils.py +++ b/src/plugins/chat/utils.py @@ -341,7 +341,7 @@ def process_llm_response(text: str) -> List[str]: tone_error_rate=global_config.chinese_typo_tone_error_rate, word_replace_rate=global_config.chinese_typo_word_replace_rate, ) - if global_config.enable_response_spliter: + if global_config.enable_response_splitter: split_sentences = split_into_sentences_w_remove_punctuation(text) else: split_sentences = [text] diff --git a/src/plugins/chat_module/think_flow_chat/think_flow_chat.py b/src/plugins/chat_module/think_flow_chat/think_flow_chat.py index 88d041d5b..e3c46da98 100644 --- a/src/plugins/chat_module/think_flow_chat/think_flow_chat.py +++ b/src/plugins/chat_module/think_flow_chat/think_flow_chat.py @@ -136,8 +136,6 @@ class ThinkFlowChat: message_manager.add_message(bot_message) - - async def _update_relationship(self, message: MessageRecv, response_set): """更新关系情绪""" ori_response = ",".join(response_set) @@ -382,7 +380,6 @@ class ThinkFlowChat: except Exception as e: logger.error(f"心流思考后脑内状态更新失败: {e}") - # 回复后处理 await willing_manager.after_generate_reply_handle(message.message_info.message_id) diff --git a/src/plugins/chat_module/think_flow_chat/think_flow_generator.py b/src/plugins/chat_module/think_flow_chat/think_flow_generator.py index 17d499bd2..858284c8e 100644 --- a/src/plugins/chat_module/think_flow_chat/think_flow_generator.py +++ b/src/plugins/chat_module/think_flow_chat/think_flow_generator.py @@ -225,8 +225,7 @@ class ResponseGenerator: except Exception as e: logger.debug(f"获取情感标签时出错: {e}") return "中立", "平静" # 出错时返回默认值 - - + async def _get_emotion_tags_with_reason(self, content: str, processed_plain_text: str, reason: str): """提取情感标签,结合立场和情绪""" try: diff --git a/src/plugins/config/config.py b/src/plugins/config/config.py index 0fefb5c14..0a1d6864d 100644 --- a/src/plugins/config/config.py +++ b/src/plugins/config/config.py @@ -253,8 +253,8 @@ class BotConfig: chinese_typo_tone_error_rate = 0.2 # 声调错误概率 chinese_typo_word_replace_rate = 0.02 # 整词替换概率 - # response_spliter - enable_response_spliter = True # 是否启用回复分割器 + # response_splitter + enable_response_splitter = True # 是否启用回复分割器 response_max_length = 100 # 回复允许的最大长度 response_max_sentence_num = 3 # 回复允许的最大句子数 @@ -604,13 +604,13 @@ class BotConfig: "word_replace_rate", config.chinese_typo_word_replace_rate ) - def response_spliter(parent: dict): - response_spliter_config = parent["response_spliter"] - config.enable_response_spliter = response_spliter_config.get( - "enable_response_spliter", config.enable_response_spliter + def response_splitter(parent: dict): + response_splitter_config = parent["response_splitter"] + config.enable_response_splitter = response_splitter_config.get( + "enable_response_splitter", config.enable_response_splitter ) - config.response_max_length = response_spliter_config.get("response_max_length", config.response_max_length) - config.response_max_sentence_num = response_spliter_config.get( + config.response_max_length = response_splitter_config.get("response_max_length", config.response_max_length) + config.response_max_sentence_num = response_splitter_config.get( "response_max_sentence_num", config.response_max_sentence_num ) @@ -664,7 +664,7 @@ class BotConfig: "keywords_reaction": {"func": keywords_reaction, "support": ">=0.0.2", "necessary": False}, "chinese_typo": {"func": chinese_typo, "support": ">=0.0.3", "necessary": False}, "platforms": {"func": platforms, "support": ">=1.0.0"}, - "response_spliter": {"func": response_spliter, "support": ">=0.0.11", "necessary": False}, + "response_splitter": {"func": response_splitter, "support": ">=0.0.11", "necessary": False}, "experimental": {"func": experimental, "support": ">=0.0.11", "necessary": False}, "heartflow": {"func": heartflow, "support": ">=1.0.2", "necessary": False}, } diff --git a/src/plugins/person_info/relationship_manager.py b/src/plugins/person_info/relationship_manager.py index b16f7d22e..23ae7f6c8 100644 --- a/src/plugins/person_info/relationship_manager.py +++ b/src/plugins/person_info/relationship_manager.py @@ -84,10 +84,10 @@ class RelationshipManager: 2.关系越差,改善越难,关系越好,恶化越容易 3.人维护关系的精力往往有限,所以当高关系值用户越多,对于中高关系值用户增长越慢 4.连续正面或负面情感会正反馈 - + 返回: 用户昵称,变更值,变更后关系等级 - + """ stancedict = { "支持": 0, @@ -159,10 +159,12 @@ class RelationshipManager: ) await person_info_manager.update_one_field(person_id, "relationship_value", old_value + value, data) - - return chat_stream.user_info.user_nickname,value,relationship_level[level_num] - - async def calculate_update_relationship_value_with_reason(self, chat_stream: ChatStream, label: str, stance: str, reason: str) -> tuple: + + return chat_stream.user_info.user_nickname, value, relationship_level[level_num] + + async def calculate_update_relationship_value_with_reason( + self, chat_stream: ChatStream, label: str, stance: str, reason: str + ) -> tuple: """计算并变更关系值 新的关系值变更计算方式: 将关系值限定在-1000到1000 @@ -171,10 +173,10 @@ class RelationshipManager: 2.关系越差,改善越难,关系越好,恶化越容易 3.人维护关系的精力往往有限,所以当高关系值用户越多,对于中高关系值用户增长越慢 4.连续正面或负面情感会正反馈 - + 返回: 用户昵称,变更值,变更后关系等级 - + """ stancedict = { "支持": 0, @@ -246,8 +248,8 @@ class RelationshipManager: ) await person_info_manager.update_one_field(person_id, "relationship_value", old_value + value, data) - - return chat_stream.user_info.user_nickname,value,relationship_level[level_num] + + return chat_stream.user_info.user_nickname, value, relationship_level[level_num] async def build_relationship_info(self, person) -> str: person_id = person_info_manager.get_person_id(person[0], person[1]) diff --git a/temp_utils_ui/temp_ui.py b/temp_utils_ui/temp_ui.py index 3e0e1b5a5..c38d815cb 100644 --- a/temp_utils_ui/temp_ui.py +++ b/temp_utils_ui/temp_ui.py @@ -29,7 +29,7 @@ SECTION_TRANSLATIONS = { "mood": "情绪设置", "keywords_reaction": "关键词反应", "chinese_typo": "中文错别字", - "response_spliter": "回复分割器", + "response_splitter": "回复分割器", "remote": "远程设置", "experimental": "实验功能", "model": "模型设置", @@ -116,9 +116,9 @@ CONFIG_DESCRIPTIONS = { "chinese_typo.tone_error_rate": "声调错误概率", "chinese_typo.word_replace_rate": "整词替换概率", # 回复分割器 - "response_spliter.enable_response_spliter": "是否启用回复分割器", - "response_spliter.response_max_length": "回复允许的最大长度", - "response_spliter.response_max_sentence_num": "回复允许的最大句子数", + "response_splitter.enable_response_splitter": "是否启用回复分割器", + "response_splitter.response_max_length": "回复允许的最大长度", + "response_splitter.response_max_sentence_num": "回复允许的最大句子数", # 远程设置 "remote.enable": "是否启用远程统计", # 实验功能 diff --git a/template/bot_config_template.toml b/template/bot_config_template.toml index c8cfcea16..00c919883 100644 --- a/template/bot_config_template.toml +++ b/template/bot_config_template.toml @@ -1,5 +1,5 @@ [inner] -version = "1.2.6" +version = "1.2.7" #以下是给开发人员阅读的,一般用户不需要阅读 @@ -159,8 +159,8 @@ min_freq=9 # 最小字频阈值 tone_error_rate=0.1 # 声调错误概率 word_replace_rate=0.006 # 整词替换概率 -[response_spliter] -enable_response_spliter = true # 是否启用回复分割器 +[response_splitter] +enable_response_splitter = true # 是否启用回复分割器 response_max_length = 100 # 回复允许的最大长度 response_max_sentence_num = 4 # 回复允许的最大句子数