diff --git a/src/gui/static/app.js b/src/gui/static/app.js index cb47e59..44db2e0 100644 --- a/src/gui/static/app.js +++ b/src/gui/static/app.js @@ -548,12 +548,14 @@ function renderRunResult(data) { } const tail = transcript.slice(lastUserIndex + 1); renderTranscriptEntries(tail); - // Always show the canonical final output if it isn't already present. - const lastMsg = els.chat.querySelector(".message.assistant:last-of-type .body"); - if (!lastMsg || lastMsg.textContent.trim() !== (data.final_output || "").trim()) { - if (data.final_output && data.final_output.trim()) { - appendMessage({ role: "assistant", content: data.final_output }); - } + // transcript 通常已经包含最终 assistant 消息;只有缺失时才用 final_output 兜底。 + const finalOutput = (data.final_output || "").trim(); + const lastAssistant = [...tail] + .reverse() + .find((entry) => entry?.role === "assistant" && (entry.content || "").trim()); + const lastAssistantContent = (lastAssistant?.content || "").trim(); + if (finalOutput && finalOutput !== lastAssistantContent) { + appendMessage({ role: "assistant", content: data.final_output }); } }