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({
+ + -