LAYER 04 · 理解安全与耐久性

持久化、Projection 与 Query

写入保持完整日志,读取通过折叠、缓存、水位与全文索引避免每次重放一切

22 min3 处源码锚点upstream@47f9438
durable log + projection checkpoints + query seam
本章要解决的问题

会话列表为什么不应该为每一行加载完整 SessionEvent 日志?

先建立直觉

银行保留流水账,但余额页不会每次从开户第一天重算;它读取可信检查点,再重放检查点之后的尾部。

MECHANISM

机制拆解

session-persistence seam 负责 JSONL/SQLite 等耐久后端与 flush;checkpoint-policy 在请求、轮次结束和分离点建立明确耐久边界。

session-projection 注册领域 fold 单元,projection-cache 保存状态与水位;冷读取采用“缓存行 + 持久化尾部回放”。session-query 提供精确读、过滤、trace 与全文搜索。

第 1 步 / 共 6 步

写内存日志

Session 先提交权威事件。

INVARIANTS

无论怎么扩展,都不能破坏

  • 持久写必须保持事件 seq 与 JSON 保真
  • 缓存只是可重建加速层,不是真源
  • 列表读取不应依赖加载完整日志
FAILURE MODES

最容易踩中的坑

  • ×在 turn/end 假设已经 flush
  • ×把 projection cache 当不可丢失状态
  • ×搜索结果绕过 workspace 授权
VERIFY IN SOURCE

不要相信结论,去源码里复核

以下链接固定到官方 deepseek-harness@47f9438;查看当前上游时请留意后续 breaking changes。

KNOWLEDGE CHECK

先停十秒,再揭晓答案

为什么缓存检查点必须带 watermark?

为什么下一章紧接在这里

耐久系统最后需要明确的失败语义。下一章总结取消、超时、结构化错误与完全停稳的不变量。

Learn DeepSeek Harness

独立教学项目。解释力来自源码,判断边界以官方仓库为准。