From c4fbaeec888c2a8a61d94f0e3b0011e8420f48d4 Mon Sep 17 00:00:00 2001 From: wgqqqqq Date: Wed, 18 Mar 2026 16:49:23 +0800 Subject: [PATCH] fix: sync btw messages to in-memory caches for context persistence When a /btw side question completes, persist_btw_turn was only saving DialogTurnData to disk but not syncing messages to MessageHistoryManager and CompressionManager in-memory caches. This caused subsequent messages in btw sessions to lose conversation context, making the session appear empty. Now we add the user and assistant messages to both memory caches after persisting, ensuring context is available for follow-up questions. Fixes #182 --- .../src/agentic/session/session_manager.rs | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/crates/core/src/agentic/session/session_manager.rs b/src/crates/core/src/agentic/session/session_manager.rs index 5ef39435..79622407 100644 --- a/src/crates/core/src/agentic/session/session_manager.rs +++ b/src/crates/core/src/agentic/session/session_manager.rs @@ -988,10 +988,34 @@ impl SessionManager { drop(session); + // Persist the turn to disk self.persistence_manager .save_dialog_turn(workspace_path, &turn) .await?; + // Sync messages to in-memory caches so subsequent对话 can access context + let user_message = Message::user(question.to_string()) + .with_turn_id(turn_id.clone()) + .with_semantic_kind(MessageSemanticKind::ActualUserInput); + let assistant_message = Message::assistant(full_text.to_string()) + .with_turn_id(turn_id.clone()); + + // Add to MessageHistoryManager + self.history_manager + .add_message(child_session_id, user_message.clone()) + .await?; + self.history_manager + .add_message(child_session_id, assistant_message.clone()) + .await?; + + // Add to CompressionManager + self.compression_manager + .add_message(child_session_id, user_message) + .await?; + self.compression_manager + .add_message(child_session_id, assistant_message) + .await?; + if let Some(mut session) = self.sessions.get_mut(child_session_id) { if !session .dialog_turn_ids