diff --git a/src/chat/focus_chat/info_processors/relationship_processor.py b/src/chat/focus_chat/info_processors/relationship_processor.py index 3fa662ee0..0b9bc6b51 100644 --- a/src/chat/focus_chat/info_processors/relationship_processor.py +++ b/src/chat/focus_chat/info_processors/relationship_processor.py @@ -788,7 +788,6 @@ class RelationshipProcessor(BaseProcessor): logger.info(f"{self.log_prefix} 记得 {person_name} 的 {info_type}: {cached_info}") return - bot_person_id = PersonInfoManager.get_person_id("system", "bot_id") is_bot = person_id == bot_person_id @@ -833,7 +832,9 @@ class RelationshipProcessor(BaseProcessor): ) else: nickname_str = ",".join(global_config.bot.alias_names) - name_block = f"你的名字是{global_config.bot.nickname},你的昵称有{nickname_str},有人也会用这些昵称称呼你。" + name_block = ( + f"你的名字是{global_config.bot.nickname},你的昵称有{nickname_str},有人也会用这些昵称称呼你。" + ) prompt = (await global_prompt_manager.get_prompt_async("fetch_person_info_prompt")).format( name_block=name_block, info_type=info_type, @@ -850,8 +851,6 @@ class RelationshipProcessor(BaseProcessor): # 使用小模型进行即时提取 content, _ = await self.instant_llm_model.generate_response_async(prompt=prompt) - - if content: content_json = json.loads(repair_json(content)) if info_type in content_json: @@ -877,9 +876,7 @@ class RelationshipProcessor(BaseProcessor): else: logger.info(f"{self.log_prefix} 思考了也不知道{person_name} 的 {info_type} 信息") else: - logger.warning( - f"{self.log_prefix} 小模型返回空结果,获取 {person_name} 的 {info_type} 信息失败。" - ) + logger.warning(f"{self.log_prefix} 小模型返回空结果,获取 {person_name} 的 {info_type} 信息失败。") except Exception as e: logger.error(f"{self.log_prefix} 执行小模型请求获取用户信息时出错: {e}") logger.error(traceback.format_exc()) diff --git a/src/individuality/individuality.py b/src/individuality/individuality.py index beb7422cb..28218f10c 100644 --- a/src/individuality/individuality.py +++ b/src/individuality/individuality.py @@ -6,13 +6,7 @@ import random import json import os import hashlib -import traceback from rich.traceback import install -from json_repair import repair_json -from src.chat.utils.prompt_builder import Prompt, global_prompt_manager -from src.manager.async_task_manager import AsyncTask -from src.llm_models.utils_model import LLMRequest -from src.config.config import global_config from src.common.logger import get_logger from src.person_info.person_info import get_person_info_manager @@ -52,9 +46,11 @@ class Individuality: person_info_manager = get_person_info_manager() self.bot_person_id = person_info_manager.get_person_id("system", "bot_id") self.name = bot_nickname - + # 检查配置变化,如果变化则清空 - await self._check_config_and_clear_if_changed(bot_nickname, personality_core, personality_sides, identity_detail) + await self._check_config_and_clear_if_changed( + bot_nickname, personality_core, personality_sides, identity_detail + ) # 初始化人格 self.personality = Personality.initialize( @@ -72,7 +68,7 @@ class Individuality: impression_parts.append(f"人格侧面: {'、'.join(personality_sides)}") if identity_detail: impression_parts.append(f"身份: {'、'.join(identity_detail)}") - + impression_text = "。".join(impression_parts) if impression_text: impression_text += "。" @@ -84,8 +80,10 @@ class Individuality: "person_name": self.name, "nickname": self.name, } - await person_info_manager.update_one_field(self.bot_person_id, "impression", impression_text, data=update_data) - logger.info(f"已将完整人设更新到bot的impression中") + await person_info_manager.update_one_field( + self.bot_person_id, "impression", impression_text, data=update_data + ) + logger.info("已将完整人设更新到bot的impression中") await self.express_style.extract_and_store_personality_expressions() @@ -255,30 +253,32 @@ class Individuality: return self.personality.neuroticism return None - def _get_config_hash(self, bot_nickname: str, personality_core: str, personality_sides: list, identity_detail: list) -> str: + def _get_config_hash( + self, bot_nickname: str, personality_core: str, personality_sides: list, identity_detail: list + ) -> str: """获取当前personality和identity配置的哈希值""" config_data = { "nickname": bot_nickname, "personality_core": personality_core, - "personality_sides": sorted(personality_sides), - "identity_detail": sorted(identity_detail) + "personality_sides": sorted(personality_sides), + "identity_detail": sorted(identity_detail), } config_str = json.dumps(config_data, sort_keys=True) return hashlib.md5(config_str.encode("utf-8")).hexdigest() async def _check_config_and_clear_if_changed( - self, bot_nickname: str, personality_core: str, personality_sides: list, identity_detail: list + self, bot_nickname: str, personality_core: str, personality_sides: list, identity_detail: list ): """检查配置是否发生变化,如果变化则清空info_list""" person_info_manager = get_person_info_manager() current_hash = self._get_config_hash(bot_nickname, personality_core, personality_sides, identity_detail) - + meta_info = self._load_meta_info() stored_hash = meta_info.get("config_hash") if current_hash != stored_hash: logger.info("检测到人格配置发生变化,将清空原有的关键词缓存。") - + # 清空数据库中的info_list update_data = { "platform": "system", diff --git a/src/plugins/built_in/core_actions/plugin.py b/src/plugins/built_in/core_actions/plugin.py index 8ff8c3c8d..7f3e090ca 100644 --- a/src/plugins/built_in/core_actions/plugin.py +++ b/src/plugins/built_in/core_actions/plugin.py @@ -142,7 +142,7 @@ class NoReplyAction(BaseAction): # 增加连续计数 NoReplyAction._consecutive_count += 1 count = NoReplyAction._consecutive_count - + reason = self.action_data.get("reason", "") # 计算本次等待时间 @@ -155,7 +155,9 @@ class NoReplyAction(BaseAction): # 第4次及以后使用WAITING_TIME_THRESHOLD timeout = self.waiting_timeout - logger.info(f"{self.log_prefix} 选择不回复(第{count}次连续),等待新消息中... (超时: {timeout}秒),原因: {reason}") + logger.info( + f"{self.log_prefix} 选择不回复(第{count}次连续),等待新消息中... (超时: {timeout}秒),原因: {reason}" + ) # 等待新消息或达到时间上限 result = await self.wait_for_new_message(timeout)