会话
会话是一段持久、可恢复的对话。使用 createLiteAgent 时,每次运行都通过 Checkpointer 以事件溯源方式落盘,agent 持有一个当前会话:连续的 send() 调用共享完整对话,你可以跨重启列出并恢复历史会话,还可以把会话回滚到任意历史 prompt。无需编写任何存储代码,就能得到持久的多轮 agent。
无需开启——持久化默认通过内置的 fileCheckpointer 启用:
管理会话
LiteAgent 暴露完整的会话生命周期:
时间回溯之所以可行,是因为文件工具在修改前都会快照文件:restore 回放这些快照以撤销磁盘上的改动,然后截断事件日志。完整的回溯模型见检查点。
设 sessions: false 可完全关闭持久化(此时会话方法会 reject)。
持久化到外部存储
默认 fileCheckpointer 用文件锁串行化同一会话的操作,锁覆盖异步编码。需要数据库事务及高效并发读取时,使用 SQLite。当同一台机器上的多个进程需要共享会话——HTTP 服务器、worker 池、并行 CLI 运行——换成 @lite-agent/checkpoint-sqlite 的 SQLite 后端:
SQLite 后端提供基于 WAL 的并发读取、原子 seq 分配和乐观并发控制:过期的写入者会收到干净的 CheckpointConflictError,而不是静默踩坏日志。任何实现了内核 Checkpointer 接口(append / read / head / list / delete / truncate)的自定义后端都以同样方式工作——通过 checkpointer(或 store)选项传入,它会覆盖 sessions 默认项。
多机并发(网络文件系统、分布式写入者)超出 SQLite 的适用范围。Checkpointer 接口与后端无关,未来的网络后端可以在不改动内核的情况下覆盖这一场景。
另请参阅
- 检查点 ——
listCheckpoints/restore时间回溯模型的详细介绍。 - 事件 —— 每个会话被持久化的
SessionEvent流。 - 代理循环 —— 会话中每一轮内部发生了什么。
sessions: false 关闭会话落盘,但运行期仍在内存中保留对话,使后台补全轮次能看到原始用户目标;持久化会话管理方法仍不可用。关闭 Agent 后不保留该内存状态。
close() 在释放自身状态前取消前台流、后台工作和维护操作。审批/输入处理器可接收第二个 AbortSignal 参数,用于关闭等待中的提示。自定义工具/provider 必须配合取消。删除会话会删除其归档与私有任务列表,显式共享的任务列表保留。
通过存储与命名空间配置统一目录和运行数据编码。自定义 checkpoint 后端负责自己的序列化。