diff --git a/pages/popup.js b/pages/popup.js
index 5919fc9..7943793 100644
--- a/pages/popup.js
+++ b/pages/popup.js
@@ -123,18 +123,22 @@ document.addEventListener("DOMContentLoaded", async () => {
llmResultContent.scrollTop = llmResultContent.scrollHeight;
}
- // 支持多次提问、历史堆叠
- // 新增/修正流式渲染 assistant 的方式
+ // 流式渲染智能助手
async function fetchLLMAnswer(question) {
if (!question || !question.trim()) return;
- appendLLMMsg(question, "user");
- llmResultContainer.classList.remove("hidden");
- // 创建 assistant 消息卡片并持续写入
+ // 追加用户提问
+ const userItem = document.createElement("div");
+ userItem.className = "llm-msg-item llm-user";
+ userItem.innerHTML = `我: ${question}`;
+ llmResultContent.appendChild(userItem);
+ llmResultContainer.classList.remove("hidden");
+ llmResultContent.scrollTop = llmResultContent.scrollHeight;
+
+ // 创建 assistant 消息卡片
const msgBox = document.createElement("div");
msgBox.className = "llm-msg-item llm-assistant";
msgBox.style.margin = "3px 0 7px 0";
- msgBox.innerHTML = `智能助手: `;
llmResultContent.appendChild(msgBox);
llmResultContent.scrollTop = llmResultContent.scrollHeight;
@@ -160,7 +164,10 @@ document.addEventListener("DOMContentLoaded", async () => {
let buffer = "";
let done = false;
let stop = false;
- let answer = "";
+ let inThink = false;
+ let thinkStr = "";
+ let answerStr = "";
+
while (!done) {
const { value, done: readerDone } = await reader.read();
done = readerDone;
@@ -174,15 +181,31 @@ document.addEventListener("DOMContentLoaded", async () => {
try {
const chunk = JSON.parse(data);
if (chunk.type === "textResponseChunk") {
+ let content = chunk.textResponse || "";
+ if (content.includes("
");
+ } else if (chunk.textResponse) {
+ answerStr += content.replace(/\n/g, "
");
+ }
+ // 实时渲染,思考内容和正式回答分区块
+ msgBox.innerHTML =
+ (thinkStr
+ ? `