Merge pull request #655 from na10xi27da/msg_buffer

消息缓冲器
This commit is contained in:
SengokuCola
2025-04-05 23:11:42 +08:00
committed by GitHub
9 changed files with 324 additions and 11 deletions

View File

@@ -17,6 +17,7 @@ from ...message import UserInfo, Seg
from src.common.logger import get_module_logger, CHAT_STYLE_CONFIG, LogConfig
from ...chat.chat_stream import chat_manager
from ...person_info.relationship_manager import relationship_manager
from ...chat.message_buffer import message_buffer
# 定义日志配置
chat_config = LogConfig(
@@ -143,6 +144,8 @@ class ReasoningChat:
userinfo = message.message_info.user_info
messageinfo = message.message_info
# 消息加入缓冲池
await message_buffer.start_caching_messages(message)
# logger.info("使用推理聊天模式")
@@ -172,6 +175,17 @@ class ReasoningChat:
timer2 = time.time()
timing_results["记忆激活"] = timer2 - timer1
# 查询缓冲器结果会整合前面跳过的消息改变processed_plain_text
buffer_result = await message_buffer.query_buffer_result(message)
if not buffer_result:
if message.message_segment.type == "text":
logger.info(f"触发缓冲,已炸飞消息:{message.processed_plain_text}")
elif message.message_segment.type == "image":
logger.info("触发缓冲,已炸飞表情包/图片")
elif message.message_segment.type == "seglist":
logger.info("触发缓冲,已炸飞消息列")
return
is_mentioned = is_mentioned_bot_in_message(message)
# 计算回复意愿

View File

@@ -18,6 +18,7 @@ from src.heart_flow.heartflow import heartflow
from src.common.logger import get_module_logger, CHAT_STYLE_CONFIG, LogConfig
from ...chat.chat_stream import chat_manager
from ...person_info.relationship_manager import relationship_manager
from ...chat.message_buffer import message_buffer
# 定义日志配置
chat_config = LogConfig(
@@ -163,6 +164,8 @@ class ThinkFlowChat:
userinfo = message.message_info.user_info
messageinfo = message.message_info
# 消息加入缓冲池
await message_buffer.start_caching_messages(message)
# 创建聊天流
chat = await chat_manager.get_or_create_stream(
@@ -197,8 +200,20 @@ class ThinkFlowChat:
timing_results["记忆激活"] = timer2 - timer1
logger.debug(f"记忆激活: {interested_rate}")
# 查询缓冲器结果会整合前面跳过的消息改变processed_plain_text
buffer_result = await message_buffer.query_buffer_result(message)
if not buffer_result:
if message.message_segment.type == "text":
logger.info(f"触发缓冲,已炸飞消息:{message.processed_plain_text}")
elif message.message_segment.type == "image":
logger.info("触发缓冲,已炸飞表情包/图片")
elif message.message_segment.type == "seglist":
logger.info("触发缓冲,已炸飞消息列")
return
is_mentioned = is_mentioned_bot_in_message(message)
# 计算回复意愿
current_willing_old = willing_manager.get_willing(chat_stream=chat)
# current_willing_new = (heartflow.get_subheartflow(chat.stream_id).current_state.willing - 5) / 4