-
ZHINIAN
-
20:30
+
+ {{ props.msg?.messageRole === MessageRole.AI ? 'NIANXX' : '我' }}
+ {{ formattedTime }}
\ No newline at end of file
diff --git a/src/renderer/views/home/components/ChatRoleAI.vue b/src/renderer/views/home/components/ChatRoleAI.vue
index 3ddac92..964db8d 100644
--- a/src/renderer/views/home/components/ChatRoleAI.vue
+++ b/src/renderer/views/home/components/ChatRoleAI.vue
@@ -1,10 +1,17 @@
-
@@ -23,6 +30,9 @@ interface Props {
const { msg } = defineProps
()
const md = new MarkdownIt({
+ html: true,
+ linkify: true,
+ typographer: true,
highlight: function (str: string, lang: string) {
if (lang && hljs.getLanguage(lang)) {
try {
@@ -33,6 +43,18 @@ const md = new MarkdownIt({
return hljs.highlightAuto(str).value;
}
});
+
const compiledMarkdown = computed(() => md.render(msg.messageContent))
+const compiledList = computed(() => {
+ return (msg.messageContentList || []).map((m: string) => md.render(m || ''))
+})
+
+const compiledAt = (index: number): string => {
+ const list: string[] = (compiledList as any).value || []
+ if (list[index]) return list[index]
+ const raw = msg?.messageContentList?.[index] || ''
+ return md.render(raw || '')
+}
+
\ No newline at end of file
diff --git a/src/renderer/views/home/index.vue b/src/renderer/views/home/index.vue
index 67a674d..24796d2 100644
--- a/src/renderer/views/home/index.vue
+++ b/src/renderer/views/home/index.vue
@@ -1,43 +1,35 @@
-
-
diff --git a/src/renderer/views/home/model/ChatModel.ts b/src/renderer/views/home/model/ChatModel.ts
index 1c12a40..3354c76 100644
--- a/src/renderer/views/home/model/ChatModel.ts
+++ b/src/renderer/views/home/model/ChatModel.ts
@@ -16,6 +16,8 @@ export class ChatMessage {
messageRole: MessageRole;
// 消息内容
messageContent: string;
+ // 消息内容列表(用于流式更新)
+ messageContentList: string[];
// 是否加载中
isLoading?: boolean;
// 是否完成
@@ -24,22 +26,28 @@ export class ChatMessage {
toolCall?: any;
// 问题信息
question?: string;
+ // 时间戳
+ timestamp?: number;
constructor(
messageId: string,
messageRole: MessageRole,
messageContent: string,
+ messageContentList: string[] = [],
isLoading: boolean = false,
finished: boolean = false,
toolCall?: any,
- question?: any
+ question?: any,
+ timestamp?: number
) {
this.messageId = messageId;
this.messageRole = messageRole;
this.messageContent = messageContent;
+ this.messageContentList = messageContentList;
this.isLoading = isLoading;
this.finished = finished;
this.toolCall = toolCall;
this.question = question;
+ this.timestamp = timestamp || Date.now();
}
}