题目
当模型接口不替应用保存会话时,如何实现连续的多轮对话?
答案
由应用保存消息历史,每次调用模型前,读取当前会话需要的历史,再加上本轮用户消息。模型能接着聊,是因为本次输入包含了之前的信息。
会话存储至少关联租户、用户、会话 ID、消息 ID、角色、内容和时间。工具调用及其结果也要一起保存,不能只保存用户和助手的文本。
历史过长时,采用最近消息加摘要或按需检索。完整记录仍可保存在数据库中,但不必每次全部发给模型。模型输出和工具执行要分别记录,便于中断后恢复。

同一会话出现并发请求时,需通过串行队列、锁或状态版本控制顺序。否则两个请求可能基于同一份旧历史生成回复,造成对话上下文交叉。会话 ID 也不是权限凭证,读取前必须检查归属。
