This commit is contained in:
SengokuCola
2025-06-21 16:01:37 +08:00
3 changed files with 25 additions and 19 deletions

View File

@@ -832,7 +832,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
@@ -877,7 +876,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,
@@ -894,8 +895,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:
@@ -921,9 +920,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())

View File

@@ -46,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(
@@ -66,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 += ""
@@ -78,7 +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)
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()
@@ -249,30 +254,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",

View File

@@ -143,7 +143,7 @@ class NoReplyAction(BaseAction):
# 增加连续计数
NoReplyAction._consecutive_count += 1
count = NoReplyAction._consecutive_count
reason = self.action_data.get("reason", "")
# 计算本次等待时间
@@ -156,7 +156,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)