diff --git a/src/panels/helpers/conversationHelper.ts b/src/panels/helpers/conversationHelper.ts index 2550f2f..674863d 100644 --- a/src/panels/helpers/conversationHelper.ts +++ b/src/panels/helpers/conversationHelper.ts @@ -90,21 +90,12 @@ export async function selectConversation( panel.webview.postMessage({ command: "clearChat" }); - const segments: any[] = []; let i = 0; while (i < taskSession.messages.length) { const message = taskSession.messages[i]; if (message.type === MessageType.USER) { - if (segments.length > 0) { - panel.webview.postMessage({ - command: "receiveSegments", - segments: [...segments], - }); - segments.length = 0; - } - const textContent = message.contents?.find((c) => c.type === "TEXT"); if (textContent && "text" in textContent) { panel.webview.postMessage({ @@ -115,12 +106,15 @@ export async function selectConversation( i++; } else if (message.type === MessageType.AI) { if (message.segments && message.segments.length > 0) { + // 直接发送 segments panel.webview.postMessage({ command: "receiveSegments", segments: message.segments, }); - i++; } else { + // 构建当前 AI 消息的 segments 并发送 + const segments: any[] = []; + if (message.text) { segments.push({ type: "text", content: message.text }); } @@ -138,7 +132,7 @@ export async function selectConversation( nextMsg.id === toolReq.id ) { toolResult = nextMsg.text; - i++; + i++; // 跳过工具执行结果消息 } } @@ -151,64 +145,26 @@ export async function selectConversation( } } - i++; - - while (i < taskSession.messages.length) { - const nextMsg = taskSession.messages[i]; - if (nextMsg.type === MessageType.USER) { - break; - } - if (nextMsg.type === MessageType.AI) { - if (nextMsg.segments && nextMsg.segments.length > 0) { - break; - } - if (nextMsg.text) { - segments.push({ type: "text", content: nextMsg.text }); - } - if ( - nextMsg.toolExecutionRequests && - nextMsg.toolExecutionRequests.length > 0 - ) { - for (const toolReq of nextMsg.toolExecutionRequests) { - let toolResult = ""; - if (i + 1 < taskSession.messages.length) { - const resultMsg = taskSession.messages[i + 1]; - if ( - resultMsg.type === MessageType.TOOL_EXECUTION_RESULT && - resultMsg.id === toolReq.id - ) { - toolResult = resultMsg.text; - i++; - } - } - segments.push({ - type: "tool", - toolName: toolReq.name, - askId: toolReq.id, - toolResult: toolResult, - }); - } - } - i++; - } else if (nextMsg.type === MessageType.TOOL_EXECUTION_RESULT) { - i++; - } else { - i++; - } + if (segments.length > 0) { + panel.webview.postMessage({ + command: "receiveSegments", + segments: segments, + }); } } - } else { i++; + } else { + // 处理其他类型的消息(如 SYSTEM, TOOL_EXECUTION_RESULT 等) + if (message.type === MessageType.TOOL_EXECUTION_RESULT) { + // 工具执行结果已经在上面的 AI 消息处理中被处理了,这里跳过 + i++; + } else { + // 其他类型消息,如 SYSTEM + i++; + } } } - if (segments.length > 0) { - panel.webview.postMessage({ - command: "receiveSegments", - segments: segments, - }); - } - // 发送任务完成消息(历史记录) panel.webview.postMessage({ command: "taskCompleteHistory",