From 8c0c76a23205cef6bd8ac3b65b9e5b79b01f910f Mon Sep 17 00:00:00 2001 From: xiaoxixi Date: Sun, 10 May 2026 14:52:10 +0800 Subject: [PATCH] fix(session): persist compression marker on retry, warn on storage/persist errors --- src/session/session.rs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/session/session.rs b/src/session/session.rs index ec68050..a07eace 100644 --- a/src/session/session.rs +++ b/src/session/session.rs @@ -153,7 +153,10 @@ impl Session { let timelines = storage .load_session_timelines(&id.to_string(), 4) .await - .unwrap_or_default(); + .unwrap_or_else(|e| { + tracing::warn!(error = %e, "Failed to load session timelines"); + Vec::new() + }); let has_more_timelines = timelines.len() > 3; @@ -175,7 +178,10 @@ impl Session { let tail = storage .load_messages_after_timestamp(&id.to_string(), after_ts) .await - .unwrap_or_default(); + .unwrap_or_else(|e| { + tracing::warn!(error = %e, "Failed to load messages after timestamp"); + Vec::new() + }); let mut tail_msgs: Vec = tail.into_iter().map(|m| { ChatMessage { @@ -476,6 +482,7 @@ impl Session { &self.tools, Some(&self.id.to_string()), memory_context, + self.last_compressed_message_at.is_some(), ); if skills_prompt.trim().is_empty() { @@ -920,7 +927,9 @@ impl SessionManager { let compressed_count = result.history.len(); if result.created_timelines { session_guard.last_compressed_message_at = Some(chrono::Utc::now().timestamp_millis()); - let _ = session_guard.persist_session_meta().await; + if let Err(e) = session_guard.persist_session_meta().await { + tracing::warn!(error = %e, "Failed to persist compression marker after /compact"); + } } session_guard.clear_history(); for msg in result.history { @@ -1443,6 +1452,9 @@ impl SessionManager { let retry_result = session_guard.compressor.compress_if_needed(raw).await?; if retry_result.created_timelines { session_guard.last_compressed_message_at = Some(chrono::Utc::now().timestamp_millis()); + if let Err(e) = session_guard.persist_session_meta().await { + tracing::warn!(error = %e, "Failed to persist compression marker on retry"); + } } let mut retry = retry_result.history; retry.insert(0, ChatMessage::system(system_prompt));