🤖 自动格式化代码 [skip ci]
This commit is contained in:
@@ -12,7 +12,7 @@ from ...chat.chat_stream import chat_manager
|
||||
from ...chat.message_buffer import message_buffer
|
||||
from ...utils.timer_calculater import Timer
|
||||
from .interest import InterestManager
|
||||
from .heartFC_chat import HeartFC_Chat # 导入 HeartFC_Chat 以调用回复生成
|
||||
from .heartFC_chat import HeartFC_Chat # 导入 HeartFC_Chat 以调用回复生成
|
||||
|
||||
# 定义日志配置
|
||||
processor_config = LogConfig(
|
||||
@@ -24,15 +24,18 @@ logger = get_module_logger("heartFC_processor", config=processor_config)
|
||||
# # 定义兴趣度增加触发回复的阈值 (移至 InterestManager)
|
||||
# INTEREST_INCREASE_THRESHOLD = 0.5
|
||||
|
||||
|
||||
class HeartFC_Processor:
|
||||
def __init__(self, chat_instance: HeartFC_Chat):
|
||||
self.storage = MessageStorage()
|
||||
self.interest_manager = InterestManager() # TODO: 可能需要传递 chat_instance 给 InterestManager 或修改其方法签名
|
||||
self.chat_instance = chat_instance # 持有 HeartFC_Chat 实例
|
||||
self.interest_manager = (
|
||||
InterestManager()
|
||||
) # TODO: 可能需要传递 chat_instance 给 InterestManager 或修改其方法签名
|
||||
self.chat_instance = chat_instance # 持有 HeartFC_Chat 实例
|
||||
|
||||
async def process_message(self, message_data: str) -> None:
|
||||
"""处理接收到的消息,更新状态,并将回复决策委托给 InterestManager"""
|
||||
timing_results = {} # 初始化 timing_results
|
||||
timing_results = {} # 初始化 timing_results
|
||||
message = None
|
||||
try:
|
||||
message = MessageRecv(message_data)
|
||||
@@ -50,7 +53,9 @@ class HeartFC_Processor:
|
||||
group_info=groupinfo,
|
||||
)
|
||||
if not chat:
|
||||
logger.error(f"无法为消息创建或获取聊天流: user {userinfo.user_id}, group {groupinfo.group_id if groupinfo else 'None'}")
|
||||
logger.error(
|
||||
f"无法为消息创建或获取聊天流: user {userinfo.user_id}, group {groupinfo.group_id if groupinfo else 'None'}"
|
||||
)
|
||||
return
|
||||
|
||||
message.update_chat_stream(chat)
|
||||
@@ -77,9 +82,11 @@ class HeartFC_Processor:
|
||||
if message.message_segment.type != "seglist":
|
||||
F_type = message.message_segment.type
|
||||
else:
|
||||
if (isinstance(message.message_segment.data, list)
|
||||
and all(isinstance(x, Seg) for x in message.message_segment.data)
|
||||
and len(message.message_segment.data) == 1):
|
||||
if (
|
||||
isinstance(message.message_segment.data, list)
|
||||
and all(isinstance(x, Seg) for x in message.message_segment.data)
|
||||
and len(message.message_segment.data) == 1
|
||||
):
|
||||
F_type = message.message_segment.data[0].type
|
||||
if F_type == "text":
|
||||
logger.debug(f"触发缓冲,消息:{message.processed_plain_text}")
|
||||
@@ -87,7 +94,7 @@ class HeartFC_Processor:
|
||||
logger.debug("触发缓冲,表情包/图片等待中")
|
||||
elif F_type == "seglist":
|
||||
logger.debug("触发缓冲,消息列表等待中")
|
||||
return # 被缓冲器拦截,不生成回复
|
||||
return # 被缓冲器拦截,不生成回复
|
||||
|
||||
# ---- 只有通过缓冲的消息才进行存储和后续处理 ----
|
||||
|
||||
@@ -103,11 +110,12 @@ class HeartFC_Processor:
|
||||
|
||||
# 激活度计算 (使用可能被缓冲器更新过的 message.processed_plain_text)
|
||||
is_mentioned, _ = is_mentioned_bot_in_message(message)
|
||||
interested_rate = 0.0 # 默认值
|
||||
interested_rate = 0.0 # 默认值
|
||||
try:
|
||||
with Timer("记忆激活", timing_results):
|
||||
interested_rate = await HippocampusManager.get_instance().get_activate_from_text(
|
||||
message.processed_plain_text, fast_retrieval=True # 使用更新后的文本
|
||||
message.processed_plain_text,
|
||||
fast_retrieval=True, # 使用更新后的文本
|
||||
)
|
||||
logger.trace(f"记忆激活率 (通过缓冲后): {interested_rate:.2f}")
|
||||
except Exception as e:
|
||||
@@ -120,11 +128,13 @@ class HeartFC_Processor:
|
||||
# 更新兴趣度
|
||||
try:
|
||||
self.interest_manager.increase_interest(chat.stream_id, value=interested_rate)
|
||||
current_interest = self.interest_manager.get_interest(chat.stream_id) # 获取更新后的值用于日志
|
||||
logger.trace(f"使用激活率 {interested_rate:.2f} 更新后 (通过缓冲后),当前兴趣度: {current_interest:.2f}")
|
||||
current_interest = self.interest_manager.get_interest(chat.stream_id) # 获取更新后的值用于日志
|
||||
logger.trace(
|
||||
f"使用激活率 {interested_rate:.2f} 更新后 (通过缓冲后),当前兴趣度: {current_interest:.2f}"
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"更新兴趣度失败: {e}") # 调整日志消息
|
||||
logger.error(f"更新兴趣度失败: {e}") # 调整日志消息
|
||||
logger.error(traceback.format_exc())
|
||||
# ---- 兴趣度计算和更新结束 ----
|
||||
|
||||
@@ -143,8 +153,8 @@ class HeartFC_Processor:
|
||||
except Exception as e:
|
||||
logger.error(f"消息处理失败 (process_message V3): {e}")
|
||||
logger.error(traceback.format_exc())
|
||||
if message: # 记录失败的消息内容
|
||||
logger.error(f"失败消息原始内容: {message.raw_message}")
|
||||
if message: # 记录失败的消息内容
|
||||
logger.error(f"失败消息原始内容: {message.raw_message}")
|
||||
|
||||
def _check_ban_words(self, text: str, chat, userinfo) -> bool:
|
||||
"""检查消息中是否包含过滤词"""
|
||||
@@ -166,4 +176,4 @@ class HeartFC_Processor:
|
||||
)
|
||||
logger.info(f"[正则表达式过滤]消息匹配到{pattern},filtered")
|
||||
return True
|
||||
return False
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user