mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-06-23 06:20:06 +02:00
Add files via upload
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user