feat(distribution_manager): 在处理成功后添加短暂等待,确保清理操作完成

feat(message_manager): 简化清除未读消息逻辑,移除冗余注释
feat(action_manager): 移除自动清空未读消息的逻辑,改为手动处理
feat(plan_executor): 扩展回复类动作的分类,包含 respond 动作
This commit is contained in:
Windpicker-owo
2025-11-10 21:38:55 +08:00
parent 1f888c9986
commit 72e83b7d43
5 changed files with 16 additions and 86 deletions

View File

@@ -436,11 +436,7 @@ class MessageManager:
logger.error(f"清除未读消息时发生错误: {e}")
async def clear_stream_unread_messages(self, stream_id: str):
"""清除指定聊天流的所有未读消息
此方法会标记剩余的未读消息为已读(移到历史),作为兜底保护。
正常情况下action_manager 应该已经标记了所有消息,这里只是确保没有遗漏。
"""
"""清除指定聊天流的所有未读消息"""
try:
chat_manager = get_chat_manager()
chat_stream = await chat_manager.get_stream(stream_id)
@@ -453,9 +449,7 @@ class MessageManager:
unread_count = len(context.unread_messages)
# 如果还有未读消息,说明 action_manager 可能遗漏了,标记它们
if unread_count > 0:
logger.debug(f"🧹 [兜底清理] stream={stream_id[:8]}, 发现 {unread_count} 条剩余未读消息,标记为已读")
if unread_count > 0:
# 获取所有未读消息的 ID
message_ids = [msg.message_id for msg in context.unread_messages]
@@ -463,9 +457,8 @@ class MessageManager:
success = chat_stream.context_manager.mark_messages_as_read(message_ids)
if success:
logger.debug(f" [兜底清理] stream={stream_id[:8]}, 成功标记 {unread_count} 条消息为已读")
logger.debug(f"✅ stream={stream_id[:8]}, 成功标记 {unread_count} 条消息为已读")
else:
logger.warning(f"⚠️ [兜底清理] stream={stream_id[:8]}, 标记失败,直接清空")
context.unread_messages.clear()
else:
logger.debug(f"{stream_id[:8]} 没有剩余未读消息,无需清理")