refactor(heart_flow): 移除智能提醒分析逻辑
从消息处理流程中移除旧的智能提醒分析模块。 该功能已被一个新的、更可靠的提醒系统取代,因此旧的实现被移除以简化代码库并消除冗余。
This commit is contained in:
committed by
Windpicker-owo
parent
7d06dd1bce
commit
38c94ecb73
@@ -96,8 +96,7 @@ class HeartFCMessageReceiver:
|
|||||||
|
|
||||||
主要流程:
|
主要流程:
|
||||||
1. 消息解析与初始化
|
1. 消息解析与初始化
|
||||||
2. 智能提醒分析
|
2. 消息缓冲处理
|
||||||
3. 消息缓冲处理
|
|
||||||
4. 过滤检查
|
4. 过滤检查
|
||||||
5. 兴趣度计算
|
5. 兴趣度计算
|
||||||
6. 关系处理
|
6. 关系处理
|
||||||
@@ -110,99 +109,7 @@ class HeartFCMessageReceiver:
|
|||||||
userinfo = message.message_info.user_info
|
userinfo = message.message_info.user_info
|
||||||
chat = message.chat_stream
|
chat = message.chat_stream
|
||||||
|
|
||||||
# 2. 智能提醒分析 - 检查用户是否请求提醒
|
# 2. 兴趣度计算与更新
|
||||||
from src.chat.chat_loop.proactive.smart_reminder_analyzer import smart_reminder_analyzer
|
|
||||||
from src.chat.chat_loop.proactive.event_scheduler import event_scheduler
|
|
||||||
|
|
||||||
try:
|
|
||||||
reminder_event = await smart_reminder_analyzer.analyze_message(
|
|
||||||
userinfo.user_id, # type: ignore
|
|
||||||
message.processed_plain_text
|
|
||||||
)
|
|
||||||
if reminder_event:
|
|
||||||
logger.info(f"检测到提醒请求: {reminder_event}")
|
|
||||||
|
|
||||||
# 创建提醒回调函数
|
|
||||||
async def reminder_callback(metadata):
|
|
||||||
"""提醒执行回调函数 - 触发完整的主动思考流程"""
|
|
||||||
try:
|
|
||||||
# 获取对应的subheartflow实例
|
|
||||||
from src.chat.heart_flow.heartflow import heartflow
|
|
||||||
|
|
||||||
subflow = await heartflow.get_or_create_subheartflow(metadata.get("chat_id"))
|
|
||||||
if not subflow:
|
|
||||||
logger.error(f"无法获取subheartflow实例: {metadata.get('chat_id')}")
|
|
||||||
return
|
|
||||||
|
|
||||||
# 创建主动思考事件,触发完整的思考流程
|
|
||||||
from src.chat.chat_loop.proactive.events import ProactiveTriggerEvent
|
|
||||||
|
|
||||||
reminder_content = metadata.get('content', '提醒时间到了')
|
|
||||||
# 使用原始消息内容作为reason,如果没有则使用处理后的内容
|
|
||||||
original_message = metadata.get('original_message', '')
|
|
||||||
reason_content = original_message if original_message else reminder_content
|
|
||||||
|
|
||||||
event = ProactiveTriggerEvent(
|
|
||||||
source="reminder_system",
|
|
||||||
reason=f"定时提醒:{reason_content}",
|
|
||||||
metadata=metadata,
|
|
||||||
related_message_id=metadata.get("original_message_id")
|
|
||||||
)
|
|
||||||
|
|
||||||
# 通过subflow的HeartFChatting实例触发主动思考
|
|
||||||
await subflow.heart_fc_instance.proactive_thinker.think(event)
|
|
||||||
|
|
||||||
logger.info(f"已触发提醒的主动思考,内容: {reminder_content}")
|
|
||||||
|
|
||||||
except Exception as callback_error:
|
|
||||||
logger.error(f"执行提醒回调失败: {callback_error}")
|
|
||||||
import traceback
|
|
||||||
logger.error(traceback.format_exc())
|
|
||||||
|
|
||||||
# Fallback: 如果主动思考失败,直接发送提醒消息
|
|
||||||
try:
|
|
||||||
from src.plugin_system.apis.send_api import text_to_stream
|
|
||||||
reminder_content = metadata.get('content', '提醒时间到了')
|
|
||||||
await text_to_stream(
|
|
||||||
text=f"⏰ 提醒:{reminder_content}",
|
|
||||||
stream_id=metadata.get("chat_id"),
|
|
||||||
typing=False
|
|
||||||
)
|
|
||||||
logger.info(f"Fallback提醒消息已发送: {reminder_content}")
|
|
||||||
except Exception as fallback_error:
|
|
||||||
logger.error(f"Fallback提醒也失败了: {fallback_error}")
|
|
||||||
|
|
||||||
# 调度提醒事件
|
|
||||||
event_id = f"reminder_{reminder_event.user_id}_{int(reminder_event.reminder_time.timestamp())}"
|
|
||||||
metadata = {
|
|
||||||
"type": "reminder",
|
|
||||||
"user_id": reminder_event.user_id,
|
|
||||||
"sender_name": userinfo.user_nickname, # 添加发送者昵称
|
|
||||||
"platform": chat.platform,
|
|
||||||
"chat_id": chat.stream_id,
|
|
||||||
"content": reminder_event.content,
|
|
||||||
"confidence": reminder_event.confidence,
|
|
||||||
"created_at": datetime.now().isoformat(),
|
|
||||||
"original_message_id": message.message_info.message_id,
|
|
||||||
"original_message": message.processed_plain_text # 保存完整的原始消息
|
|
||||||
}
|
|
||||||
|
|
||||||
success = await event_scheduler.schedule_event(
|
|
||||||
event_id=event_id,
|
|
||||||
trigger_time=reminder_event.reminder_time,
|
|
||||||
callback=reminder_callback,
|
|
||||||
metadata=metadata
|
|
||||||
)
|
|
||||||
|
|
||||||
if success:
|
|
||||||
logger.info(f"提醒事件调度成功: {event_id}")
|
|
||||||
else:
|
|
||||||
logger.error(f"提醒事件调度失败: {event_id}")
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"智能提醒分析失败: {e}")
|
|
||||||
|
|
||||||
# 3. 兴趣度计算与更新
|
|
||||||
interested_rate, is_mentioned, keywords = await _calculate_interest(message)
|
interested_rate, is_mentioned, keywords = await _calculate_interest(message)
|
||||||
message.interest_value = interested_rate
|
message.interest_value = interested_rate
|
||||||
message.is_mentioned = is_mentioned
|
message.is_mentioned = is_mentioned
|
||||||
|
|||||||
Reference in New Issue
Block a user