feat(chatter_manager): 清理 processing_message_id 以防止重复回复检测失效
feat(distribution_manager): 添加子任务跟踪和取消逻辑,优化流处理 feat(default_generator): 优化 respond 和 reply 模式下的消息处理逻辑 feat(affinity_chatter): 处理取消异常时清理 processing_message_id feat(planner): 确保在规划流程取消时清理 processing_message_id
This commit is contained in:
@@ -103,10 +103,19 @@ class AffinityChatter(BaseChatter):
|
||||
|
||||
return result
|
||||
|
||||
except asyncio.CancelledError:
|
||||
logger.info(f"亲和力聊天处理器 {self.stream_id} 处理被取消")
|
||||
self.stats["failed_executions"] += 1
|
||||
self.last_activity_time = time.time()
|
||||
# 清理 processing_message_id
|
||||
context.processing_message_id = None
|
||||
raise
|
||||
except Exception as e:
|
||||
logger.error(f"亲和力聊天处理器 {self.stream_id} 处理StreamContext时出错: {e}\n{traceback.format_exc()}")
|
||||
self.stats["failed_executions"] += 1
|
||||
self.last_activity_time = time.time()
|
||||
# 清理 processing_message_id
|
||||
context.processing_message_id = None
|
||||
|
||||
return {
|
||||
"success": False,
|
||||
|
||||
@@ -78,9 +78,19 @@ class ChatterActionPlanner:
|
||||
|
||||
return await self._enhanced_plan_flow(context)
|
||||
|
||||
except asyncio.CancelledError:
|
||||
logger.info(f"规划流程被取消: {self.chat_id}")
|
||||
self.planner_stats["failed_plans"] += 1
|
||||
# 确保清理 processing_message_id
|
||||
if context:
|
||||
context.processing_message_id = None
|
||||
raise
|
||||
except Exception as e:
|
||||
logger.error(f"规划流程出错: {e}")
|
||||
self.planner_stats["failed_plans"] += 1
|
||||
# 确保清理 processing_message_id
|
||||
if context:
|
||||
context.processing_message_id = None
|
||||
return [], None
|
||||
|
||||
async def _enhanced_plan_flow(self, context: "StreamContext | None") -> tuple[list[dict[str, Any]], Any | None]:
|
||||
@@ -257,6 +267,13 @@ class ChatterActionPlanner:
|
||||
# 14. 返回结果
|
||||
return self._build_return_result(filtered_plan)
|
||||
|
||||
except asyncio.CancelledError:
|
||||
logger.info(f"Focus模式流程被取消: {self.chat_id}")
|
||||
self.planner_stats["failed_plans"] += 1
|
||||
# 清理处理标记
|
||||
if context:
|
||||
context.processing_message_id = None
|
||||
raise
|
||||
except Exception as e:
|
||||
logger.error(f"Focus模式流程出错: {e}")
|
||||
self.planner_stats["failed_plans"] += 1
|
||||
@@ -394,6 +411,13 @@ class ChatterActionPlanner:
|
||||
|
||||
return [asdict(no_action)], None
|
||||
|
||||
except asyncio.CancelledError:
|
||||
logger.info(f"Normal模式流程被取消: {self.chat_id}")
|
||||
self.planner_stats["failed_plans"] += 1
|
||||
# 清理处理标记
|
||||
if context:
|
||||
context.processing_message_id = None
|
||||
raise
|
||||
except Exception as e:
|
||||
logger.error(f"Normal模式 - 流程出错: {e}")
|
||||
self.planner_stats["failed_plans"] += 1
|
||||
|
||||
Reference in New Issue
Block a user