组件/Chat 消息列表

Chat 消息列表

AI 对话记录的消息列表与消息行

已验证自 0.3.4

用法

基础

示例加载中...

最佳实践

  • id 使用对话存储中的稳定 id,不用数组下标。
  • 在数据边界归一化图片 URL;组件不校验或改写附件地址。
  • 虚拟列表,或流式输出中会重排消息时,关闭 stagger。
  • 在宿主处理 imageClick;组件没有内置预览。
  • 需要改写单行渲染时,直接使用 TxChatMessage 及其插槽。

API 参考

TxChatList

属性

属性名类型默认值说明
messagesChatMessageModel[]必填消息数组,按顺序渲染。
markdownbooleantrue用 TxMarkdownView 渲染正文;关闭时渲染纯文本。
staggerbooleantrue用 TxStagger 播放消息入场动画。
attachmentLabelstring-转发给每条消息:无 name 缩略图的可访问名称。

事件

事件名参数说明
imageClick{ url: string, name?: string, messageId: string }转发 TxChatMessage 的 imageClick。

TxChatMessage

属性

属性名类型默认值说明
messageChatMessageModel必填单条消息数据。
markdownbooleantrue以 Markdown 或纯文本渲染正文。
attachmentLabelstring'Open image attachment'无 name 的图片缩略图的可访问名称。

事件

事件名参数说明
imageClick{ url: string, name?: string, messageId: string }点击图片缩略图时触发。

插槽

插槽名Props说明
avatar{ message: ChatMessageModel }替换头像。
header{ message: ChatMessageModel }替换时间头部。
content{ message: ChatMessageModel }替换正文渲染。

类型

ChatMessageModel

字段类型默认值说明
idstring必填消息的稳定 key。
role'user' | 'assistant' | 'system'必填消息角色,决定行的对齐。
contentstring必填Markdown 或纯文本正文。
createdAtnumber-epoch 时间戳,挂载后渲染为 HH:mm。
avatarUrlstring-头像图片地址。
attachmentsChatMessageAttachment[]-以缩略图渲染的图片附件。

ChatMessageAttachment

字段类型默认值说明
type'image'必填附件类型,目前只有图片。
urlstring必填缩略图地址,随 imageClick 发出。
namestring-缩略图按钮的可访问名称,随 imageClick 发出。

概述

  • TxChatList 按 messages 顺序渲染 TxChatMessage,以 id 作 key。
  • 图片附件是原生 <button type="button"> 缩略图,图片懒加载;可访问名称在按钮上,<img> 只作装饰。
  • createdAt 挂载后才格式化,SSR 与客户端输出一致。

技术实现

  • 源码:packages/tuffex/packages/components/src/chat/(TxChatList.vue、TxChatMessage.vue、types.ts)。
查看源码
packages/tuffex/packages/components/src/chat/index.ts

相关组件