修复消息顺序判断:VLM返回倒序,取messages[0]而非[-1]
问题:VLM返回消息按时间倒序(最新在前),代码取[-1]导致判断的是旧消息 修复:改为取[0]获取最新消息
This commit is contained in:
Binary file not shown.
@@ -57,13 +57,14 @@ class MessageProcessor:
|
|||||||
logger.debug("没有消息,不回复")
|
logger.debug("没有消息,不回复")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# 检查最后一条消息
|
# VLM 返回的消息是按时间倒序的(最新的在前)
|
||||||
last_msg = messages[-1]
|
# 取第一条(最新的)消息进行判断
|
||||||
sender = last_msg.get("sender", "")
|
latest_msg = messages[0]
|
||||||
content = last_msg.get("content", "")
|
sender = latest_msg.get("sender", "")
|
||||||
is_self = last_msg.get("is_self", False)
|
content = latest_msg.get("content", "")
|
||||||
|
is_self = latest_msg.get("is_self", False)
|
||||||
|
|
||||||
logger.debug(f"最后一条消息: sender={sender}, is_self={is_self}, content={content[:30]}")
|
logger.debug(f"最新消息: sender={sender}, is_self={is_self}, content={content[:30]}")
|
||||||
|
|
||||||
# 如果是自己发的消息,不回复
|
# 如果是自己发的消息,不回复
|
||||||
if is_self:
|
if is_self:
|
||||||
@@ -79,8 +80,8 @@ class MessageProcessor:
|
|||||||
|
|
||||||
def generate_reply(self, chat_snapshot: ChatSnapshot) -> str:
|
def generate_reply(self, chat_snapshot: ChatSnapshot) -> str:
|
||||||
"""生成回复内容"""
|
"""生成回复内容"""
|
||||||
# 先检查关键词规则
|
# 先检查关键词规则(取最新消息)
|
||||||
last_content = chat_snapshot.messages[-1].get("content", "")
|
latest_content = chat_snapshot.messages[0].get("content", "") if chat_snapshot.messages else ""
|
||||||
|
|
||||||
for rule in self._rules:
|
for rule in self._rules:
|
||||||
if not rule.enabled:
|
if not rule.enabled:
|
||||||
@@ -89,7 +90,7 @@ class MessageProcessor:
|
|||||||
if rule.reply_type == "keyword":
|
if rule.reply_type == "keyword":
|
||||||
# 关键词匹配
|
# 关键词匹配
|
||||||
for keyword in rule.keywords:
|
for keyword in rule.keywords:
|
||||||
if keyword in last_content:
|
if keyword in latest_content:
|
||||||
logger.info(f"关键词匹配: {keyword}")
|
logger.info(f"关键词匹配: {keyword}")
|
||||||
return rule.reply_content
|
return rule.reply_content
|
||||||
|
|
||||||
@@ -104,9 +105,9 @@ class MessageProcessor:
|
|||||||
try:
|
try:
|
||||||
# 构造 prompt
|
# 构造 prompt
|
||||||
prompt = f"""当前聊天: {chat_snapshot.chat_name}
|
prompt = f"""当前聊天: {chat_snapshot.chat_name}
|
||||||
历史消息:
|
历史消息(按时间倒序):
|
||||||
"""
|
"""
|
||||||
for msg in chat_snapshot.messages[-10:]: # 最近10条
|
for msg in chat_snapshot.messages[:10]: # 取最新10条(VLM返回的是倒序)
|
||||||
sender = "我" if msg.get("is_self") else "对方"
|
sender = "我" if msg.get("is_self") else "对方"
|
||||||
prompt += f"- [{sender}] {msg.get('content', '')}\n"
|
prompt += f"- [{sender}] {msg.get('content', '')}\n"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user