From 5ae7c10a009a2c85701f8dbf50fd2f1f58a43906 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Wed, 19 Nov 2025 12:51:08 +0800 Subject: [PATCH] Enhance MoviePilotAgent to handle empty agent messages gracefully by providing a default error response, ensuring better user experience. Refactor message processing to streamline event loop execution. --- app/agent/__init__.py | 21 +++++++++++++-------- app/chain/message.py | 31 +++++++++---------------------- 2 files changed, 22 insertions(+), 30 deletions(-) diff --git a/app/agent/__init__.py b/app/agent/__init__.py index 4724c733..a92a7392 100644 --- a/app/agent/__init__.py +++ b/app/agent/__init__.py @@ -221,15 +221,20 @@ class MoviePilotAgent: agent_message = await self.callback_handler.get_message() # 发送Agent回复给用户(通过原渠道) - await self.send_agent_message(agent_message) + if agent_message: + # 发送回复 + await self.send_agent_message(agent_message) - # 添加Agent回复到记忆 - await self.memory_manager.add_memory( - session_id=self.session_id, - user_id=self.user_id, - role="agent", - content=agent_message - ) + # 添加Agent回复到记忆 + await self.memory_manager.add_memory( + session_id=self.session_id, + user_id=self.user_id, + role="agent", + content=agent_message + ) + else: + agent_message = "很抱歉,智能体出错了,未能生成回复内容。" + await self.send_agent_message(agent_message) return agent_message diff --git a/app/chain/message.py b/app/chain/message.py index 865c5c28..add67730 100644 --- a/app/chain/message.py +++ b/app/chain/message.py @@ -948,29 +948,16 @@ class MessageChain(ChainBase): session_id = self._get_or_create_session_id(userid) # 在事件循环中处理 - try: - GlobalVar.CURRENT_EVENT_LOOP.run_until_complete( - agent_manager.process_message( - session_id=session_id, - user_id=str(userid), - message=user_message, - channel=channel.value if channel else None, - source=source, - username=username - ) - ) - except RuntimeError: - # 如果没有事件循环,创建新的 - asyncio.run( - agent_manager.process_message( - session_id=session_id, - user_id=str(userid), - message=user_message, - channel=channel.value if channel else None, - source=source, - username=username - ) + GlobalVar.CURRENT_EVENT_LOOP.run_until_complete( + agent_manager.process_message( + session_id=session_id, + user_id=str(userid), + message=user_message, + channel=channel.value if channel else None, + source=source, + username=username ) + ) except Exception as e: logger.error(f"处理AI智能体消息失败: {e}")