- {!!streaming.retryInfo?.message && (
-
-
- {streaming.retryInfo.stage === 'fallback_model' ? '自动切换模型' : '自动重试'}
- {streaming.retryInfo.stage === 'fallback_model' ? (
-
- {String(streaming.retryInfo.fromModel || '')} → {String(streaming.retryInfo.toModel || '')}
-
- ) : (
-
- {String(streaming.retryInfo.model || '')}
- {streaming.retryInfo.attempt ? ` · 第${streaming.retryInfo.attempt}次` : ''}
-
- )}
-
-
{String(streaming.retryInfo.message)}
- {!!streaming.retryInfo.reason && (
-
{String(streaming.retryInfo.reason)}
+
+ {(() => {
+ const streamingAgentId = streaming.targetAgentId || currentAgentId;
+ const streamingAgent = agentList.find(a => a.id === streamingAgentId);
+ if (streamingAgent) {
+ return (
+
+ );
+ }
+ return null;
+ })()}
+
+ {(() => {
+ const streamingAgentId = streaming.targetAgentId || currentAgentId;
+ const streamingAgent = agentList.find(a => a.id === streamingAgentId);
+ if (streamingAgent) {
+ return (
+
+
+ {streamingAgent.name}
+
+
+ );
+ }
+ return null;
+ })()}
+
+
+ {!!streaming.retryInfo?.message && (
+
+
+ {streaming.retryInfo.stage === 'fallback_model' ? '自动切换模型' : '自动重试'}
+ {streaming.retryInfo.stage === 'fallback_model' ? (
+
+ {String(streaming.retryInfo.fromModel || '')} → {String(streaming.retryInfo.toModel || '')}
+
+ ) : (
+
+ {String(streaming.retryInfo.model || '')}
+ {streaming.retryInfo.attempt ? ` · 第${streaming.retryInfo.attempt}次` : ''}
+
+ )}
+
+
{String(streaming.retryInfo.message)}
+ {!!streaming.retryInfo.reason && (
+
{String(streaming.retryInfo.reason)}
+ )}
+
)}
+
+
推理过程
+ {streaming.reasoningText ?
{streaming.reasoningText + '▍'} :
等待推理…}
+
+
+
+
正式回答
+ {streaming.answerText ?
{streaming.answerText + '▍'} :
等待输出…}
+
+
+
+ {(streaming.retrieved.length > 0 || streaming.toolCalls.length > 0) && (
+
+ {streaming.retrieved.length > 0 && }
+ {streaming.toolCalls.length > 0 && }
)}
-
-
推理过程
- {streaming.reasoningText ?
{streaming.reasoningText + '▍'} :
等待推理…}
-
-
-
-
正式回答
- {streaming.answerText ?
{streaming.answerText + '▍'} :
等待输出…}
-
- {(streaming.retrieved.length > 0 || streaming.toolCalls.length > 0) && (
-
- {streaming.retrieved.length > 0 && }
- {streaming.toolCalls.length > 0 && }
-
- )}
)}
>
diff --git a/src/pages/chat/components/messages/MessageItem.tsx b/src/pages/chat/components/messages/MessageItem.tsx
index 0bcffca..22aa24f 100644
--- a/src/pages/chat/components/messages/MessageItem.tsx
+++ b/src/pages/chat/components/messages/MessageItem.tsx
@@ -43,87 +43,113 @@ export default function MessageItem(props: {
- {hasAnswerAgent && (
-
-
-
- {answerAgent!.name}
-
-
- )}
-
- {message.role === 'assistant' ? (
- {message.content}
- ) : message.content.includes(' ? (
- {message.content}
- ) : (
- @$1')
- }} />
- )}
-
-
- {message.role === 'assistant' && (
-
- {hasBranches && (
-
-
-
- {activeIdx + 1} / {total}
-
-
-
+ {message.role === 'assistant' ? (
+
+ {/* AGENT: 头像在左侧 */}
+ {hasAnswerAgent && (
+
)}
- {message.meta?.aborted &&
已停止}
-
onCopy?.(message.content, 'plain') },
- { key: 'markdown', label: '复制 Markdown', onClick: () => onCopy?.(message.content, 'markdown') }
- ]
- }}
- >
-
-
-
-
-
-
-
-
-
+
+ {hasAnswerAgent && (
+
+
+ {answerAgent!.name}
+
+
+ )}
+
+ {message.content}
+
+
+ {hasBranches && (
+
+
+
+ {activeIdx + 1} / {total}
+
+
+
+ )}
+ {message.meta?.aborted &&
已停止}
+
onCopy?.(message.content, 'plain') },
+ { key: 'markdown', label: '复制 Markdown', onClick: () => onCopy?.(message.content, 'markdown') }
+ ]
+ }}
+ >
+
+
+
+
+
+
+
+
+
+
+ {message.meta && (
+
+ {!!message.meta.reasoning && }
+ {!!message.meta.retrieved?.length && }
+ {!!message.meta.toolCalls?.length && }
+
+ )}
+
- )}
-
- {message.role === 'assistant' && message.meta && (
-
- {!!message.meta.reasoning &&
}
- {!!message.meta.retrieved?.length &&
}
- {!!message.meta.toolCalls?.length &&
}
+ ) : (
+
+
+
+
+ 我
+
+
+
+ {message.content.includes(' ? (
+ {message.content}
+ ) : (
+ @$1')
+ }} />
+ )}
+
+
+ {/* 用户: 头像在右侧 */}
+
我
)}