feat: 添加带话题的消息追加功能,支持在会话中关联当前话题 ID
This commit is contained in:
parent
831832664d
commit
6a902b9ff9
@ -187,8 +187,10 @@ impl SessionHistory {
|
|||||||
message: ChatMessage,
|
message: ChatMessage,
|
||||||
) -> Result<(), AgentError> {
|
) -> Result<(), AgentError> {
|
||||||
let session_id = self.persistent_session_id(chat_id);
|
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
|
self.conversations
|
||||||
.append_message(&session_id, &message)
|
.append_message_with_topic(&session_id, topic_id, &message)
|
||||||
.map_err(|err| {
|
.map_err(|err| {
|
||||||
AgentError::Other(format!("append message persistence error: {}", err))
|
AgentError::Other(format!("append message persistence error: {}", err))
|
||||||
})?;
|
})?;
|
||||||
|
|||||||
@ -15,6 +15,13 @@ pub trait ConversationRepository: Send + Sync + 'static {
|
|||||||
|
|
||||||
fn append_message(&self, session_id: &str, message: &ChatMessage) -> Result<(), StorageError>;
|
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 clear_messages(&self, session_id: &str) -> Result<(), StorageError>;
|
||||||
|
|
||||||
fn reset_session(&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)
|
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> {
|
fn clear_messages(&self, session_id: &str) -> Result<(), StorageError> {
|
||||||
super::SessionStore::clear_messages(self, session_id)
|
super::SessionStore::clear_messages(self, session_id)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user