diff --git a/src/gateway/session.rs b/src/gateway/session.rs index 0c81869..8598913 100644 --- a/src/gateway/session.rs +++ b/src/gateway/session.rs @@ -200,12 +200,7 @@ impl BusToolCallEmitter { priority: "medium".to_string(), created_at: now + idx as i64, updated_at: now, - created_by_message_id: item - .get("created_by_message_id") - .and_then(|v| v.as_str()) - .filter(|s| !s.is_empty()) - .map(|s| s.to_string()) - .or_else(|| Some(message.id.clone())), + created_by_message_id: message.tool_call_id.clone(), }) }) .collect(); diff --git a/src/tools/task/runtime.rs b/src/tools/task/runtime.rs index d0debcb..dcc77f7 100644 --- a/src/tools/task/runtime.rs +++ b/src/tools/task/runtime.rs @@ -235,12 +235,7 @@ impl SubAgentEmitter { priority: "medium".to_string(), created_at: now + idx as i64, updated_at: now, - created_by_message_id: item - .get("created_by_message_id") - .and_then(|v| v.as_str()) - .filter(|s| !s.is_empty()) - .map(|s| s.to_string()) - .or_else(|| Some(message.id.clone())), + created_by_message_id: message.tool_call_id.clone(), }) }) .collect(); diff --git a/web/src/App.tsx b/web/src/App.tsx index acb471a..6b3ad5a 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -401,11 +401,12 @@ function App() { // 点击待办项后滚动到对应消息 const handleTodoClick = useCallback((todo: TodoItemSummary) => { - // 直接使用后端返回的 created_by_message_id if (todo.created_by_message_id) { - setHighlightedMessageId(todo.created_by_message_id) + // 先清再设,确保同一 todo 重复点击也能触发 useEffect + setHighlightedMessageId(null) + const msgId = todo.created_by_message_id + setTimeout(() => setHighlightedMessageId(msgId), 0) } else { - // 如果消息 ID 不存在(旧数据),给出友好提示 alert('该待办的完成记录无法定位,可能是历史数据') } }, [setHighlightedMessageId]) @@ -485,7 +486,12 @@ function App() { } } - return result + // 过滤无实质内容的 merged_tool(无结果且非等待中) + return result.filter(msg => { + if (msg.type !== 'merged_tool') return true + if (msg.status === 'pending') return true + return !!(msg.resultContent && msg.resultContent.trim()) + }) }, [messages]) // 视图标识:用于 MessageList 保存/恢复每个视图的滚动位置