diff --git a/src/tools/task/runtime.rs b/src/tools/task/runtime.rs index 70f118d..eeab6bc 100644 --- a/src/tools/task/runtime.rs +++ b/src/tools/task/runtime.rs @@ -110,7 +110,8 @@ struct SubAgentEmitter { chat_id: String, metadata: HashMap, store: Arc, - sub_session_id: String, + /// 子/孙智能体自身的 task_id,用于持久化时作为 scope_key + task_id: String, stream_message_id: std::sync::Mutex>, } @@ -159,7 +160,7 @@ impl EmittedMessageHandler for SubAgentEmitter { } } - // 拦截 todo_write 结果:持久化到 SQLite(子代理用 session_id 作为 scope_key) + // 拦截 todo_write 结果:持久化到 SQLite(子代理用 task_id 作为 scope_key,与 list_todos 保持一致) if message.tool_name.as_deref() == Some("todo_write") { self.persist_todo_write_result(&message); } @@ -212,7 +213,7 @@ impl SubAgentEmitter { return; }; - let scope_key = &self.sub_session_id; + let scope_key = &self.task_id; let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) @@ -366,7 +367,7 @@ impl DefaultSubAgentRuntime { chat_id: session.parent_chat_id.clone(), metadata, store: self.store.clone(), - sub_session_id: session.session_id.clone(), + task_id: session.id.clone(), stream_message_id: std::sync::Mutex::new(None), }, self.conversation_repository.clone(), diff --git a/web/src/components/Chat/MessageBubble.tsx b/web/src/components/Chat/MessageBubble.tsx index 9fe6555..2126747 100644 --- a/web/src/components/Chat/MessageBubble.tsx +++ b/web/src/components/Chat/MessageBubble.tsx @@ -480,12 +480,12 @@ export function MessageBubble({ message, onNavigateToSubAgent, showThinking = tr )} - {isTaskTool && message.subagentTaskId && !taskResult && ( + {isTaskTool && message.navigateToTaskId && !taskResult && (
)} - {isTaskTool && !taskResult && !message.subagentTaskId && ( + {isTaskTool && !taskResult && !message.navigateToTaskId && (
子智能体正在执行...
@@ -571,11 +571,11 @@ export function MessageBubble({ message, onNavigateToSubAgent, showThinking = tr )} - {isTaskTool && message.subagentTaskId && ( + {isTaskTool && message.navigateToTaskId && (