fix: LoadFromDB Timestamp 赋值 + restoreContext 查20条消息
This commit is contained in:
@@ -538,14 +538,20 @@ func (t *Thinker) restoreContext() {
|
|||||||
if t.convStore == nil {
|
if t.convStore == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 从已恢复的会话历史中获取最后一条用户消息的时间
|
// 从已恢复的会话历史中获取最后一条消息的时间(优先用户消息)
|
||||||
history := t.convStore.GetHistory(t.adminSessionID, 5)
|
history := t.convStore.GetHistory(t.adminSessionID, 20)
|
||||||
var latest time.Time
|
var latest time.Time
|
||||||
for i := len(history) - 1; i >= 0; i-- {
|
for i := len(history) - 1; i >= 0; i-- {
|
||||||
if history[i].Role == model.RoleUser && !history[i].Timestamp.IsZero() {
|
if !history[i].Timestamp.IsZero() {
|
||||||
|
if history[i].Role == model.RoleUser {
|
||||||
latest = history[i].Timestamp
|
latest = history[i].Timestamp
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
// 回退:非 system 消息的时间也可以
|
||||||
|
if latest.IsZero() && history[i].Role != model.RoleSystem {
|
||||||
|
latest = history[i].Timestamp
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if !latest.IsZero() && time.Since(latest) < 24*time.Hour {
|
if !latest.IsZero() && time.Since(latest) < 24*time.Hour {
|
||||||
t.muLock()
|
t.muLock()
|
||||||
|
|||||||
@@ -164,6 +164,7 @@ func (cs *ConversationStore) LoadFromDB(databaseURL, sessionID string, limit int
|
|||||||
cs.messages[sessionID] = append(cs.messages[sessionID], model.LLMMessage{
|
cs.messages[sessionID] = append(cs.messages[sessionID], model.LLMMessage{
|
||||||
Role: role,
|
Role: role,
|
||||||
Content: content,
|
Content: content,
|
||||||
|
Timestamp: createdAt,
|
||||||
})
|
})
|
||||||
loaded++
|
loaded++
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user