From 018544e5f946ca2a0dbe527d8d6baf57d4c57d1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AC=E6=98=8E?= <83812544+Ed1s0nZ@users.noreply.github.com> Date: Mon, 22 Jun 2026 15:43:39 +0800 Subject: [PATCH] Add files via upload --- web/static/css/style.css | 29 ++++++++++++++++++++--------- web/static/js/chat.js | 13 +++++++++++++ web/static/js/webshell.js | 4 ++++ 3 files changed, 37 insertions(+), 9 deletions(-) diff --git a/web/static/css/style.css b/web/static/css/style.css index d0f073a1..a40a3553 100644 --- a/web/static/css/style.css +++ b/web/static/css/style.css @@ -3964,9 +3964,10 @@ header { background: var(--bg-tertiary); } +/* 迭代轮次:暖琥珀色条 + 极浅底,与紫(推理)/蓝(工具)区分但不抢视觉 */ .timeline-item-iteration { - border-left-color: var(--accent-color); - background: rgba(0, 102, 255, 0.06); + border-left-color: #c4a574; + background: rgba(180, 140, 90, 0.045); } /* @@ -3974,13 +3975,18 @@ header { * 但不再在此处整卡铺色 + !important,否则会盖住工具调用/结果/思考的类型色。 * 主编排 vs 子代理的区分由「迭代轮次」上的 timeline-eino-scope-* 负责。 */ -.timeline-item-iteration.timeline-eino-scope-main { - border-left-color: #3949ab !important; - background: rgba(57, 73, 171, 0.1) !important; +.timeline-item.timeline-item-iteration.timeline-eino-scope-main { + border-left-color: #b8956a; + background: rgba(184, 149, 106, 0.05); } -.timeline-item-iteration.timeline-eino-scope-sub { - border-left-color: #00695c !important; - background: rgba(0, 105, 92, 0.09) !important; +.timeline-item.timeline-item-iteration.timeline-eino-scope-sub { + border-left-color: #a6896c; + background: rgba(166, 137, 108, 0.045); +} + +.timeline-item-iteration .timeline-item-title { + color: var(--text-secondary); + font-weight: 500; } /* 模型内部思考:弱化灰紫,避免与「助手输出」抢视觉 */ @@ -15846,7 +15852,12 @@ tr.mcp-stats-tool-row[data-tool-name]:focus-visible { overflow-y: visible; } .webshell-ai-process-block .webshell-ai-timeline-iteration { - border-left-color: var(--accent-color); + border-left-color: #c4a574; + background: rgba(180, 140, 90, 0.04); +} +.webshell-ai-process-block .webshell-ai-timeline-iteration .webshell-ai-timeline-title { + color: var(--text-secondary); + font-weight: 500; } .webshell-ai-process-block .webshell-ai-timeline-thinking { border-left-color: #9c27b0; diff --git a/web/static/js/chat.js b/web/static/js/chat.js index b9206553..4fec962d 100644 --- a/web/static/js/chat.js +++ b/web/static/js/chat.js @@ -2252,10 +2252,22 @@ async function syncAssistantReasoningContentFromServer(backendMessageId, domAssi window.normalizeReasoningContentForDisplay = normalizeReasoningContentForDisplay; window.setMessageReasoningContent = setMessageReasoningContent; window.getMessageReasoningContent = getMessageReasoningContent; +window.filterNoiseProcessDetails = filterNoiseProcessDetails; window.mergeMessageReasoningContentIntoProcessDetails = mergeMessageReasoningContentIntoProcessDetails; window.syncAssistantReasoningContentFromServer = syncAssistantReasoningContentFromServer; /** 相邻且类型/正文/data 完全一致的过程详情只保留一条(与后端去重一致,避免时间线叠多条相同块) */ +function isEinoAgentHeartbeatProgress(detail) { + if (!detail || detail.eventType !== 'progress') return false; + const msg = String(detail.message != null ? detail.message : '').trim(); + return /^\[Eino\]\s+\S/.test(msg); +} + +function filterNoiseProcessDetails(details) { + if (!Array.isArray(details)) return details; + return details.filter(function (d) { return !isEinoAgentHeartbeatProgress(d); }); +} + function dedupeConsecutiveProcessDetailRows(details) { if (!Array.isArray(details) || details.length < 2) { return details; @@ -2394,6 +2406,7 @@ function renderProcessDetails(messageId, processDetails) { detailsContainer.dataset.loaded = '1'; } processDetails = mergeMessageReasoningContentIntoProcessDetails(processDetails, reasoningFromMessage); + processDetails = filterNoiseProcessDetails(processDetails); processDetails = dedupeConsecutiveProcessDetailRows(processDetails); if (typeof window.coalesceProcessDetailsToolPairs === 'function') { processDetails = window.coalesceProcessDetailsToolPairs(processDetails); diff --git a/web/static/js/webshell.js b/web/static/js/webshell.js index 49590044..d75f4cf1 100644 --- a/web/static/js/webshell.js +++ b/web/static/js/webshell.js @@ -1989,6 +1989,10 @@ function buildWebshellTimelineItemFromDetail(detail) { // 渲染「执行过程及调用工具」折叠块(默认折叠,刷新后加载历史时保留并可展开) function renderWebshellProcessDetailsBlock(processDetails, defaultCollapsed) { if (!processDetails || processDetails.length === 0) return null; + if (typeof window.filterNoiseProcessDetails === 'function') { + processDetails = window.filterNoiseProcessDetails(processDetails); + } + if (!processDetails.length) return null; if (typeof window.coalesceProcessDetailsToolPairs === 'function') { processDetails = window.coalesceProcessDetailsToolPairs(processDetails); }