持久层(持久化) 产品与架构
别名:
持久化
把会话状态变成进程外、可重放、可隔离的数据:每次对话变成一条条事件存进 SQLite,让 Agent 学会「忘不掉」。没有持久层 = 断线即失忆、无法回放、无法多会话——状态在内存里,进程死,状态死,见[第 10 章](/chapters/10-persistence/)。
它是什么
持久层(持久化)把会话状态变成进程外、可重放、可隔离的数据:每次对话变成一条条事件存进 SQLite(Node ≥ 22.5 内置的 node:sqlite,零依赖),让 Agent 学会「忘不掉」。没有持久层 = 断线即失忆、无法回放、无法多会话——状态在内存里,进程死,状态死。
三个场景的根因
客服 Agent 的三种事故指向同一个根因:进程崩溃后消息数组从头开始(用户刚说的「帮我查订单」没了);断线重连带不来任何上下文;多会话的消息堆在同一个内存数组里互相污染。解法一句话:把会话状态变成进程外、可重放、可隔离的数据。
选型与落地
存储模型选事件溯源(存过程而非现状):审计与调试需要行为链、追加式天然崩溃安全、还是断线恢复(第 16 章「事件序号 + 重连续传」)的前置。落地是四张表(sessions / events / messages / tool_calls)+ 一条写纪律「先落库、再回复」,详见第 10 章。
与上下文工程的关系
第 09 章说「上下文管理是整理桌面,不是碎纸」——完整历史始终在存储层等着,这句话的承诺就在这里兑现;后续的长期记忆与检索(第 11 章)也以会话事件存储为底层。