fix: 状态指示器重叠与 Trace Viewer 状态丢失
1. StreamingIndicator: 最后一条是 assistant 消息时不显示'正在连接', 避免与 AssistantMessage 的'正在思考'重叠 2. useAgentStream: 跳过 INIT(iteration=0) 的 trace step, 引擎初始化无实际内容不应展示 3. useAgentStream: 状态转换追加到 states 数组而非覆盖 state 字段, 保留完整 THINKING->EXECUTING->OBSERVING 进度 4. TraceStep: header 显示状态进度链(如'思考 -> 执行 -> 观察')而非仅最终状态 5. agent-store: 旧数据兼容, 加载时为缺少 states 的 trace step 补全
This commit is contained in:
@@ -17,12 +17,9 @@ export function StreamingIndicator(): React.JSX.Element | null {
|
||||
if (!isStreaming) return null;
|
||||
|
||||
const lastMsg = messages[messages.length - 1];
|
||||
// 仅当最后一条是 assistant 消息且有内容时才隐藏
|
||||
// 如果最后一条是 user 消息(刚发送,等待 AI 响应),应显示加载指示器
|
||||
const isLastAssistant = lastMsg?.role === 'assistant';
|
||||
const hasVisibleContent = isLastAssistant &&
|
||||
(!!lastMsg?.content || !!lastMsg?.reasoningContent || !!lastMsg?.toolCalls?.length);
|
||||
if (hasVisibleContent) return null;
|
||||
// 最后一条是 assistant 消息时隐藏(即使内容为空,AssistantMessage 会显示"正在思考...")
|
||||
// 仅当最后一条是 user 消息(刚发送,等待 AI 响应)时显示加载指示器
|
||||
if (lastMsg?.role === 'assistant') return null;
|
||||
|
||||
return (
|
||||
<Box sx={{ display: 'flex', alignItems: 'center', gap: 1.5, py: 2, pl: 5, animation: 'fadeIn 200ms ease-out' }}>
|
||||
|
||||
Reference in New Issue
Block a user