LAYER 04 · 理解安全与耐久性
持久化、Projection 与 Query
写入保持完整日志,读取通过折叠、缓存、水位与全文索引避免每次重放一切
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?
为什么下一章紧接在这里
耐久系统最后需要明确的失败语义。下一章总结取消、超时、结构化错误与完全停稳的不变量。