feat(reminder): 增强定时提醒系统,实现智能用户识别与上下文感知回复

对定时提醒功能进行了重大重构和增强,使其更加智能和人性化。

主要更新包括:
- **智能用户识别**: 引入LLM从提醒内容中提取需要@的目标用户,取代了原有的简单正则表达式匹配,能够更准确地理解自然语言指令,如“提醒阿范喝水”。
- **专用提醒回复**: 当提醒任务不包含特定目标用户时(如“提醒我喝水”),系统不再简单回退,而是会调用一个专用的LLM流程,生成一条符合Bot性格的、温暖贴心的提醒消息。
- **上下文传递**: 创建提醒时会保存完整的原始消息,并在触发提醒时将其传递给处理流程。这使得LLM在执行@操作或生成回复时能拥有完整上下文,避免了记忆割裂感。
- **@用户匹配优化**: 增强了`at_user`动作的底层用户匹配逻辑,采用“精确匹配 -> 包含匹配 -> 模糊匹配”的多层策略,显著提高了在群聊中查找目标用户的准确率和鲁棒性。
- **提示词优化**: 全面优化了提醒流程中涉及的LLM提示词,无论是用户提取还是最终的@消息生成,都更具情景感,使Bot的回复更加自然流畅。
This commit is contained in:
tt-P607
2025-09-09 22:14:27 +08:00
committed by Windpicker-owo
parent 47ee2ba693
commit eb80bd91a1
4 changed files with 244 additions and 73 deletions

View File

@@ -139,9 +139,13 @@ class HeartFCMessageReceiver:
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"定时提醒:{reminder_content}",
reason=f"定时提醒:{reason_content}",
metadata=metadata,
related_message_id=metadata.get("original_message_id")
)
@@ -179,7 +183,8 @@ class HeartFCMessageReceiver:
"content": reminder_event.content,
"confidence": reminder_event.confidence,
"created_at": datetime.now().isoformat(),
"original_message_id": message.message_info.message_id
"original_message_id": message.message_info.message_id,
"original_message": message.processed_plain_text # 保存完整的原始消息
}
success = await event_scheduler.schedule_event(