diff --git a/src/command/handlers/load_task_messages.rs b/src/command/handlers/load_task_messages.rs index 9cb0470..7115b0d 100644 --- a/src/command/handlers/load_task_messages.rs +++ b/src/command/handlers/load_task_messages.rs @@ -144,12 +144,8 @@ fn reconstruct_task_from_db( }) .unwrap_or_default(); - // Extract description from title: "Subagent: {description}" - let description = record - .title - .strip_prefix("Subagent: ") - .unwrap_or(&record.title) - .to_string(); + // Extract subagent_type and description from title + let (subagent_type, description) = parse_subagent_title(&record.title); let now = record.updated_at; @@ -161,7 +157,7 @@ fn reconstruct_task_from_db( parent_chat_id: record.chat_id.clone(), parent_channel_name: record.channel_name.clone(), description, - subagent_type: "general".to_string(), + subagent_type, state: TaskSessionState::Completed, created_at: record.created_at, updated_at: now, @@ -169,3 +165,18 @@ fn reconstruct_task_from_db( error: None, })) } + +/// Parse subagent title to extract type and description. +/// New format: "Subagent [type]: description" +/// Legacy format: "Subagent: description" (defaults to "general") +fn parse_subagent_title(title: &str) -> (String, String) { + if let Some(rest) = title.strip_prefix("Subagent [") { + if let Some(bracket_pos) = rest.find("]: ") { + let agent_type = rest[..bracket_pos].to_string(); + let desc = rest[bracket_pos + 3..].to_string(); + return (agent_type, desc); + } + } + let desc = title.strip_prefix("Subagent: ").unwrap_or(title).to_string(); + ("general".to_string(), desc) +} diff --git a/src/tools/task/runtime.rs b/src/tools/task/runtime.rs index f1085b6..70f118d 100644 --- a/src/tools/task/runtime.rs +++ b/src/tools/task/runtime.rs @@ -509,7 +509,7 @@ impl SubAgentRuntime for DefaultSubAgentRuntime { ); // 4. 在 sessions 表中创建子智能体会话(确保外键约束满足) - let session_title = format!("Subagent: {}", task.description); + let session_title = format!("Subagent [{}]: {}", session.subagent_type, task.description); if let Err(e) = self.conversation_repository.ensure_session( &session.session_id, &session.parent_channel_name, @@ -638,7 +638,7 @@ impl SubAgentRuntime for DefaultSubAgentRuntime { } // 3. 确保 sessions 表中存在子智能体会话记录 - let session_title = format!("Subagent: {}", session.description); + let session_title = format!("Subagent [{}]: {}", session.subagent_type, session.description); if let Err(e) = self.conversation_repository.ensure_session( &session.session_id, &session.parent_channel_name,