diff --git a/packages/ui/src/hooks/useChat.ts b/packages/ui/src/hooks/useChat.ts index 3565789..4fce528 100644 --- a/packages/ui/src/hooks/useChat.ts +++ b/packages/ui/src/hooks/useChat.ts @@ -197,6 +197,15 @@ export function useChat({ sessionId, onError, onSessionNotFound, onSessionUpdate metadata: { agentName: prev.currentAgent }, }; + // 检查是否已存在相同 ID 的工具调用(去重) + const existingTool = streaming.parts.find( + (part) => part.type === 'tool' && part.id === payload.id + ); + if (existingTool) { + // 已存在相同 ID 的工具调用,跳过 + return prev; + } + // 添加工具调用 part const toolPart: ToolMessagePart = { type: 'tool', @@ -370,6 +379,14 @@ export function useChat({ sessionId, onError, onSessionNotFound, onSessionUpdate if (!prev.currentSubagent || prev.currentSubagent.id !== payload.agentId) { return prev; } + // 检查是否已存在相同 ID 的工具调用(去重) + const existingTool = prev.currentSubagent.tools.find( + (tool) => tool.id === payload.toolCallId + ); + if (existingTool) { + // 已存在相同 ID 的工具调用,跳过 + return prev; + } const newTool: SubagentToolInfo = { id: payload.toolCallId, toolName: payload.toolName,