diff --git a/src/gateway/session_history.rs b/src/gateway/session_history.rs index f235383..3893929 100644 --- a/src/gateway/session_history.rs +++ b/src/gateway/session_history.rs @@ -187,8 +187,10 @@ impl SessionHistory { message: ChatMessage, ) -> Result<(), AgentError> { let session_id = self.persistent_session_id(chat_id); + // 获取当前话题 ID,用于关联消息 + let topic_id = self.chat_topic_ids.get(chat_id).map(|s| s.as_str()); self.conversations - .append_message(&session_id, &message) + .append_message_with_topic(&session_id, topic_id, &message) .map_err(|err| { AgentError::Other(format!("append message persistence error: {}", err)) })?; diff --git a/src/storage/ports.rs b/src/storage/ports.rs index 3a18aba..21a02e5 100644 --- a/src/storage/ports.rs +++ b/src/storage/ports.rs @@ -15,6 +15,13 @@ pub trait ConversationRepository: Send + Sync + 'static { fn append_message(&self, session_id: &str, message: &ChatMessage) -> Result<(), StorageError>; + fn append_message_with_topic( + &self, + session_id: &str, + topic_id: Option<&str>, + message: &ChatMessage, + ) -> Result<(), StorageError>; + fn clear_messages(&self, session_id: &str) -> Result<(), StorageError>; fn reset_session(&self, session_id: &str) -> Result<(), StorageError>; @@ -140,6 +147,15 @@ impl ConversationRepository for super::SessionStore { super::SessionStore::append_message(self, session_id, message) } + fn append_message_with_topic( + &self, + session_id: &str, + topic_id: Option<&str>, + message: &ChatMessage, + ) -> Result<(), StorageError> { + super::SessionStore::append_message_with_topic(self, session_id, topic_id, message) + } + fn clear_messages(&self, session_id: &str) -> Result<(), StorageError> { super::SessionStore::clear_messages(self, session_id) }