feat: 添加带话题的消息追加功能,支持在会话中关联当前话题 ID

This commit is contained in:
ooodc 2026-05-16 20:32:00 +08:00
parent 831832664d
commit 6a902b9ff9
2 changed files with 19 additions and 1 deletions

View File

@ -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))
})?;

View File

@ -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)
}