From 179cc61f65cf6b041d13a5174400cf96e68c833d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Jan 2026 00:05:21 +0000 Subject: [PATCH] Fix tool call integrity validation to skip orphaned ToolMessages Co-authored-by: jxxghp <51039935+jxxghp@users.noreply.github.com> --- app/agent/__init__.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/agent/__init__.py b/app/agent/__init__.py index 34a491cf..83691f6e 100644 --- a/app/agent/__init__.py +++ b/app/agent/__init__.py @@ -204,7 +204,7 @@ class MoviePilotAgent: """ 确保工具调用的完整性: 1. 如果AIMessage包含tool_calls,必须后跟相应的ToolMessage - 2. 移除孤立的AIMessage(有tool_calls但没有对应的ToolMessage) + 2. 移除孤立的AIMessage(有tool_calls但没有对应的ToolMessage)及其关联的ToolMessage """ if not messages: return messages @@ -231,9 +231,9 @@ class MoviePilotAgent: found_tool_call_ids = {tm.tool_call_id for tm in found_tool_messages} if not tool_call_ids.issubset(found_tool_call_ids): - # 如果缺少某些tool_call的响应,移除这个AIMessage - logger.warning(f"移除不完整的tool_call AIMessage: 缺少tool_call响应") - i += 1 + # 如果缺少某些tool_call的响应,移除这个AIMessage及其相关的ToolMessage + logger.warning(f"移除不完整的tool_call AIMessage及其部分ToolMessage: 缺少tool_call响应") + i = j # 跳过AIMessage和所有相关的ToolMessage continue else: # 添加AIMessage和所有对应的ToolMessage