From c2809bd92786da784fae1862a2683cab5b1e1d1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=9D=E5=B0=98?= <237809796@qq.com> Date: Sun, 11 Oct 2026 08:53:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E:=20=E5=8E=8B=E7=BC=A9?= =?UTF-8?q?=E6=91=98=E8=A6=81=E6=8A=98=E5=8F=A0=E8=BF=9B=E6=89=80=E5=B1=9E?= =?UTF-8?q?=E8=BD=AE=E6=AC=A1=E8=BD=A8=E8=BF=B9=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 压缩摘要进轮次桶随轨迹卡收起(旧口径原样展开作废) - 轨迹卡内渲染为摘要 pill 单行, 点击展开全文(复用思考展开态) - 压缩摘要不竞选最终答复气泡, 过程记录语义 --- src/components/ai/MessageList.vue | 34 +++++++++++++++++++++++++++---- src/i18n/en/ai.ts | 1 + src/i18n/zh-CN/ai.ts | 1 + 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/components/ai/MessageList.vue b/src/components/ai/MessageList.vue index 17f62d5..edc7f87 100644 --- a/src/components/ai/MessageList.vue +++ b/src/components/ai/MessageList.vue @@ -971,6 +971,11 @@ function thinkPlainText(m: AiMessage): string { const src = m.reasoning_content || '' return src.replace(/\s+/g, ' ').trim() } +/** 压缩摘要 pill 单行:纯文本空白归一截断(961 轮次记录形态,title 承载全文) */ +function compactSnippet(content: string | undefined): string { + const txt = (content || '').replace(/\s+/g, ' ').trim() + return txt.length > 80 ? txt.slice(0, 80) + '…' : txt +} /** pill 单行文本:纯文本截断 + 空轮回退文案(title 承载全文,此处只管单行) */ function thinkSnippet(m: AiMessage): string { const txt = thinkPlainText(m) @@ -1137,7 +1142,8 @@ function genBucketItems( let fi = -1 for (let i = msgs.length - 1; i >= 0; i--) { const c = msgs[i].content - if (c && c.trim() && !isToolResultJson(c)) { fi = i; break } + // compressed(压缩摘要)不竞选最终答复:摘要是过程记录,轨迹卡内 pill 呈现 + if (c && c.trim() && !isToolResultJson(c) && msgs[i].status !== 'compressed') { fi = i; break } } const finalMsg = fi >= 0 ? msgs[fi] : msgs[msgs.length - 1] // 过程消息 = finalMsg 之外全部(含其后尾气泡):异常收尾(错误/停止/流中断)时末轮气泡 @@ -1248,8 +1254,9 @@ const renderItems = computed(() => { items.push({ kind: 'msg', key: 'm-' + m.id, msg: m }) continue } - // assistant 非错误非压缩进轮次桶(compressed 用户诉求不折叠,原样展开) - if (m.role === 'assistant' && !m.isError && m.status !== 'compressed') { + // assistant 非错误进轮次桶——compressed(压缩摘要)也进桶(用户令 10-11:压缩摘要 + // 的动作作为轮次记录折叠,随轨迹卡收起;旧口径「原样展开」作废,961② 已定其归属当前轮) + if (m.role === 'assistant' && !m.isError) { bucket.push(m) } else { flushBucket() @@ -1649,8 +1656,27 @@ defineExpose({
+ + -