From ea20a465d6ebe8ee04a6f342e3fc71b4a8a6fc9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=9D=E5=B0=98?= <237809796@qq.com> Date: Thu, 1 Oct 2026 22:36:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D:=20=E7=94=9F=E6=88=90?= =?UTF-8?q?=E4=B8=AD=E5=8E=86=E5=8F=B2=E8=BD=AE=E6=AC=A1=E8=BD=A8=E8=BF=B9?= =?UTF-8?q?=E5=8D=A1=E8=AF=AF=E9=99=8D=E7=BA=A7=E4=B8=8D=E5=8F=AF=E7=82=B9?= =?UTF-8?q?=E5=87=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 执行中降级分支仅锚定含 store 末条消息的轮次桶,历史桶保持可交互 - 原实现只要会话生成中就把全部轮次桶压成 step 摘要行(BUG-261001) --- src/components/ai/MessageList.vue | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/components/ai/MessageList.vue b/src/components/ai/MessageList.vue index cce20e3..0892e6f 100644 --- a/src/components/ai/MessageList.vue +++ b/src/components/ai/MessageList.vue @@ -879,12 +879,13 @@ const renderItems = computed(() => { bucket = [] if (msgs.length === 0) return - if (isViewingGenerating.value) { - // 执行中:当前步骤锚定真实末条消息(agentic 新一轮 push 新空气泡,若按「末条有正文」 - // 找锚点会错挂上一轮,致当前轮打字机/光标/工具卡整条不渲染);先前步骤收进一行实时摘要。 - // 摘要统计取整个轮次桶(含当前消息):执行中工具挂在末条消息上(useAiToolEvents 取 - // state.messages 末条),只统计 prev 拿不到 runningName,完成计数也滞后一轮(黑盒主因) - const cur = msgs[msgs.length - 1] + // BUG-261001:执行中分支仅作用于「正在生成」的轮次桶(含 store 末条消息的桶)。 + // 原实现只判 isViewingGenerating——只要会话在生成,全部轮次桶(含早已完成的历史轮次) + // 都被降级为不可交互的 step 摘要行,历史轨迹卡展开/折叠点击全部失效 + // (用户表象:新一轮执行时,上一轮轨迹也"不可点击")。历史桶保持完成态轨迹卡可点。 + const lastStoreId = store.state.messages[store.state.messages.length - 1]?.id + const cur = msgs[msgs.length - 1] + if (isViewingGenerating.value && cur.id === lastStoreId) { const prev = msgs.slice(0, -1) if (prev.length > 0) { pushTimeSepIfNeeded(items, msgs[0].timestamp)