Skip to content

从一次性问答到多轮对话

多轮对话不是把所有历史消息无限拼进去。它需要明确的消息结构、上下文裁剪策略和状态持久化方式。

基本结构

ts
type ChatMessage = {
  role: "system" | "user" | "assistant"
  content: string
}

设计重点

  • 系统消息定义长期行为,不放临时用户数据。
  • 用户消息表达当前任务。
  • 助手消息可以作为历史上下文,但需要裁剪。
  • 重要业务状态不要只存在聊天记录里。

常见策略

  • 保留最近几轮对话。
  • 对较早历史做摘要。
  • 把关键事实存入结构化状态。
  • 对大型知识内容使用检索,而不是完整塞进历史。

学习目标

你需要把对话当成一个状态系统,而不是一个不断变长的字符串。