迁移:1515cef(fix:必要性修复)

This commit is contained in:
Windpicker-owo
2025-09-02 17:24:27 +08:00
parent d2609ee382
commit 0810682c3f
3 changed files with 16 additions and 16 deletions

View File

@@ -245,8 +245,9 @@ class HeartFChatting:
# 统一使用 _should_process_messages 判断是否应该处理 # 统一使用 _should_process_messages 判断是否应该处理
should_process,interest_value = await self._should_process_messages(recent_messages if has_new_messages else None) should_process,interest_value = await self._should_process_messages(recent_messages if has_new_messages else None)
if should_process: if should_process:
earliest_message_data = recent_messages[0] #earliest_message_data = recent_messages[0]
self.last_read_time = earliest_message_data.get("time") #self.last_read_time = earliest_message_data.get("time")
self.context.last_read_time = time.time()
await self.cycle_processor.observe(interest_value = interest_value) await self.cycle_processor.observe(interest_value = interest_value)
else: else:
# Normal模式消息数量不足等待 # Normal模式消息数量不足等待
@@ -430,6 +431,8 @@ class HeartFChatting:
logger.info( logger.info(
f"{self.context.log_prefix} 累计消息数量达到{new_message_count}条(>{modified_exit_count_threshold}),结束等待" f"{self.context.log_prefix} 累计消息数量达到{new_message_count}条(>{modified_exit_count_threshold}),结束等待"
) )
logger.info(self.context.last_read_time)
logger.info(new_message)
return True,total_interest/new_message_count return True,total_interest/new_message_count
# 检查累计兴趣值 # 检查累计兴趣值
@@ -452,9 +455,9 @@ class HeartFChatting:
) )
return True,accumulated_interest/new_message_count return True,accumulated_interest/new_message_count
# 每10秒输出一次等待状态 # 每10秒输出一次等待状态
if int(time.time() - self.last_read_time) > 0 and int(time.time() - self.last_read_time) % 10 == 0: if int(time.time() - self.context.last_read_time) > 0 and int(time.time() - self.context.last_read_time) % 10 == 0:
logger.info( logger.info(
f"{self.context.log_prefix} 已等待{time.time() - self.last_read_time:.0f}秒,累计{new_message_count}条消息,继续等待..." f"{self.context.log_prefix} 已等待{time.time() - self.context.last_read_time:.0f}秒,累计{new_message_count}条消息,继续等待..."
) )
await asyncio.sleep(0.5) await asyncio.sleep(0.5)

View File

@@ -739,13 +739,12 @@ class EmojiManager:
emoji = await self.get_emoji_from_manager(emoji_hash) emoji = await self.get_emoji_from_manager(emoji_hash)
if emoji and emoji.emotion: if emoji and emoji.emotion:
logger.info(f"[缓存命中] 从内存获取表情包描述: {emoji.emotion}...") logger.info(f"[缓存命中] 从内存获取表情包描述: {emoji.emotion}...")
return ",".join(emoji.emotion) return emoji.emotion
# 如果内存中没有,从数据库查找 # 如果内存中没有,从数据库查找
self._ensure_db()
try: try:
emoji_record = Emoji.get_or_none(Emoji.emoji_hash == emoji_hash) emoji_record = await self.get_emoji_from_db(emoji_hash)
if emoji_record and emoji_record.emotion: if emoji_record and emoji_record[0].emotion:
logger.info(f"[缓存命中] 从数据库获取表情包描述: {emoji_record.emotion[:50]}...") logger.info(f"[缓存命中] 从数据库获取表情包描述: {emoji_record.emotion[:50]}...")
return emoji_record.emotion return emoji_record.emotion
except Exception as e: except Exception as e:
@@ -756,7 +755,7 @@ class EmojiManager:
except Exception as e: except Exception as e:
logger.error(f"获取表情包描述失败 (Hash: {emoji_hash}): {str(e)}") logger.error(f"获取表情包描述失败 (Hash: {emoji_hash}): {str(e)}")
return None return None
async def get_emoji_description_by_hash(self, emoji_hash: str) -> Optional[str]: async def get_emoji_description_by_hash(self, emoji_hash: str) -> Optional[str]:
"""根据哈希值获取已注册表情包的描述 """根据哈希值获取已注册表情包的描述

View File

@@ -39,7 +39,7 @@ def init_prompt():
{identity_block} {identity_block}
{custom_prompt_block} {custom_prompt_block}
{chat_context_description},以下是具体的聊天内容 {chat_context_description},以下是具体的聊天内容,其中[mxxx]是消息id。
{chat_content_block} {chat_content_block}
{moderation_prompt} {moderation_prompt}
@@ -202,7 +202,6 @@ class ActionPlanner:
action_description=action_info.description, action_description=action_info.description,
action_parameters=param_text, action_parameters=param_text,
action_require=require_text, action_require=require_text,
target_prompt=target_prompt,
) )
return action_options_block return action_options_block
@@ -220,6 +219,9 @@ class ActionPlanner:
Returns: Returns:
找到的原始消息字典如果未找到则返回None 找到的原始消息字典如果未找到则返回None
""" """
# 检测message_id 是否为纯数字
if message_id.isdigit():
message_id = f"m{message_id}"
for item in message_id_list: for item in message_id_list:
if item.get("id") == message_id: if item.get("id") == message_id:
return item.get("message") return item.get("message")
@@ -481,8 +483,6 @@ class ActionPlanner:
mentioned_bonus = "\n- 有人提到你或者at你" mentioned_bonus = "\n- 有人提到你或者at你"
if mode == ChatMode.FOCUS: if mode == ChatMode.FOCUS:
by_what = "聊天内容"
target_prompt = '\n "target_message_id":"触发action的消息id"'
no_action_block = f"""重要说明: no_action_block = f"""重要说明:
- 'no_reply' 表示只进行不进行回复,等待合适的回复时机 - 'no_reply' 表示只进行不进行回复,等待合适的回复时机
- 当你刚刚发送了消息没有人回复时选择no_reply - 当你刚刚发送了消息没有人回复时选择no_reply
@@ -499,8 +499,6 @@ class ActionPlanner:
}} }}
""" """
else: # NORMAL Mode else: # NORMAL Mode
by_what = "聊天内容和用户的最新消息"
target_prompt = ""
no_action_block = f"""重要说明: no_action_block = f"""重要说明:
- 'reply' 表示只进行普通聊天回复,不执行任何额外动作 - 'reply' 表示只进行普通聊天回复,不执行任何额外动作
- 其他action表示在普通回复的基础上执行相应的额外动作 - 其他action表示在普通回复的基础上执行相应的额外动作
@@ -527,7 +525,7 @@ class ActionPlanner:
chat_context_description = f"你正在和 {chat_target_name} 私聊" chat_context_description = f"你正在和 {chat_target_name} 私聊"
action_options_block = await self._build_action_options( action_options_block = await self._build_action_options(
current_available_actions, mode, target_prompt current_available_actions, mode
) )
moderation_prompt_block = "请不要输出违法违规内容,不要输出色情,暴力,政治相关内容,如有敏感内容,请规避。" moderation_prompt_block = "请不要输出违法违规内容,不要输出色情,暴力,政治相关内容,如有敏感内容,请规避。"