聊天记录展示
This commit is contained in:
@@ -138,11 +138,11 @@ export class ChatController {
|
||||
if (roleId && roleId > 0) {
|
||||
ChatAIService.Instance.setCurrentRole(roleId);
|
||||
|
||||
// 从ChatHistoryManager加载对话记录到ChatModel中
|
||||
this.loadDialogsFromHistory(roleId);
|
||||
// 从ChatHistoryManager加载最近10条对话记录到ChatModel中
|
||||
this.loadDialogsFromHistory(roleId, 10);
|
||||
|
||||
// 同步到DialogManager
|
||||
//this.syncDialogData();
|
||||
// 同步对话数据到DialogManager和UI
|
||||
this.syncDialogData();
|
||||
|
||||
logger.log(`ChatController initialized with role ${roleId}`);
|
||||
} else {
|
||||
@@ -165,15 +165,15 @@ export class ChatController {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 更新AI服务的当前角色
|
||||
ChatAIService.Instance.setCurrentRole(roleId);
|
||||
|
||||
// 从ChatHistoryManager加载对话记录到ChatModel中
|
||||
this.loadDialogsFromHistory(roleId);
|
||||
// 从ChatHistoryManager加载最近10条对话记录到ChatModel中
|
||||
this.loadDialogsFromHistory(roleId, 10);
|
||||
|
||||
// 同步对话数据到DialogManager
|
||||
//this.syncDialogData();
|
||||
// 同步对话数据到DialogManager和UI
|
||||
this.syncDialogData();
|
||||
|
||||
logger.log(`ChatController switched to role ${roleId}`);
|
||||
return true;
|
||||
@@ -371,8 +371,9 @@ export class ChatController {
|
||||
/**
|
||||
* 从ChatHistoryManager加载对话记录到ChatModel中
|
||||
* @param roleId 角色ID,不传则使用当前角色
|
||||
* @param limit 加载消息数量限制,默认10条(0表示加载全部)
|
||||
*/
|
||||
public loadDialogsFromHistory(roleId?: number): void {
|
||||
public loadDialogsFromHistory(roleId?: number, limit: number = 10): void {
|
||||
const targetRoleId = roleId || this.chatModel.getCurrentRoleId();
|
||||
if (!targetRoleId) {
|
||||
logger.warn("Cannot load dialogs: no active role");
|
||||
@@ -380,7 +381,15 @@ export class ChatController {
|
||||
}
|
||||
|
||||
// 从ChatHistoryManager加载聊天记录
|
||||
const chatHistory = ChatHistoryManager.Instance.loadHistory(targetRoleId);
|
||||
let chatHistory = ChatHistoryManager.Instance.loadHistory(targetRoleId);
|
||||
|
||||
// 如果设置了限制,只取最近的N条消息
|
||||
if (limit > 0 && chatHistory.length > limit) {
|
||||
chatHistory = chatHistory.slice(-limit);
|
||||
logger.log(
|
||||
`Limited chat history to recent ${limit} messages for role ${targetRoleId}`
|
||||
);
|
||||
}
|
||||
|
||||
// 清空ChatModel中的对话记录
|
||||
this.chatModel.clearDialogs(targetRoleId);
|
||||
@@ -398,8 +407,8 @@ export class ChatController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步ChatModel的对话数据到DialogManager
|
||||
* 用于确保DialogManager和ChatModel的数据一致性
|
||||
* 同步ChatModel的对话数据到DialogManager和UI
|
||||
* 用于确保DialogManager和ChatModel的数据一致性,并更新UI显示
|
||||
*/
|
||||
public syncDialogData(): void {
|
||||
if (!this.dialogManager || !this.chatModel.validate()) {
|
||||
@@ -410,7 +419,10 @@ export class ChatController {
|
||||
}
|
||||
|
||||
const dialogs = this.chatModel.getDialogs();
|
||||
this.dialogManager.syncFromChatModel(dialogs);
|
||||
|
||||
// 使用loadHistoryDialogs方法加载历史对话到DialogManager
|
||||
this.dialogManager.loadHistoryDialogs(dialogs);
|
||||
|
||||
logger.log(
|
||||
`Synced ${dialogs.length} dialogs from ChatModel to DialogManager`
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user