diff --git a/app/store/chat.ts b/app/store/chat.ts index 63d7394ece6..7a476fa7f6e 100644 --- a/app/store/chat.ts +++ b/app/store/chat.ts @@ -214,7 +214,11 @@ export const useChatStore = createPersistStore( const newSession = createEmptySession(); newSession.topic = currentSession.topic; - newSession.messages = [...currentSession.messages]; + // 深拷贝消息 + newSession.messages = currentSession.messages.map(msg => ({ + ...msg, + id: nanoid(), // 生成新的消息 ID + })); newSession.mask = { ...currentSession.mask, modelConfig: { diff --git a/docs/user-manual-cn.md b/docs/user-manual-cn.md index 6109fcf57a4..4b0fd6e3229 100644 --- a/docs/user-manual-cn.md +++ b/docs/user-manual-cn.md @@ -82,7 +82,7 @@ 同时为了让 ChatGPT 理解我们对话的上下文,往往会携带多条历史消息来提供上下文信息,而当对话进行一段时间之后,很容易就会触发长度限制。 -为了解决此问题,我们增加了历史记录压缩功能,假设阈值为 1000 字符,那么每次用户产生的聊天记录超过 1000 字符时,都会将没有被总结过的消息,发送给 ChatGPT,让其产生一个 100 字所有的摘要。 +为了解决此问题,我们增加了历史记录压缩功能,假设阈值为 1000 字符,那么每次用户产生的聊天记录超过 1000 字符时,都会将没有被总结过的消息,发送给 ChatGPT,让其产生一个 100 字左右的摘要。 这样,历史信息就从 1000 字压缩到了 100 字,这是一种有损压缩,但已能满足大多数使用场景。