记忆 Lazy Recall 机制

Lazy Recall 是 wesgine 三层记忆自动注入中的第二层——在每轮对话时,根据当前轮用户消息的语义相关性动态召回记忆。


三层注入概览

层时机内容
Eager(系统提示词)会话开始Constraint / Instruction / Environment 等高优先级条目
Lazy(当轮叠加)每轮对话语义搜索命中的相关记忆
Cold-start(跨会话)新会话首轮上一次会话的摘要/上下文

Lazy Recall 工作流

用户消息 "帮我用 vim 键位配置编辑器"
    ↓
BuildLazyRecall(actor, query, sessionID)
    ↓
语义搜索(embedding 相似度)
    ↓
候选列表 → EntryVisible(actor) 过滤
    ↓
RecallQualityOK 过滤(排除 stale / conflicted)
    ↓
LazyCarriesRow 过滤(Kind 白名单)
    ↓
Hybrid Ranking(BM25 + 向量相似度)
    ↓
注入到用户消息之后,LLM 调用之前

Hybrid Ranking

Lazy Recall 使用混合排序策略:

同义词零字面重叠的情况(如"vim 键位"对查询"配置编辑器")通过向量语义相似度覆盖。


LazyCarriesRow 白名单

Lazy 层携带的 Kind 子集:

携带不携带
fact、preference、correction、convention、lesson、collectiveconstraint、instruction(已在 Eager 层)
environment(已在 Eager 层)
context、episodic(会话级,由 Cold-start 或显式搜索处理)

与 TouchAccessed 的联动

被 Lazy Recall 选中注入的条目会通过 TouchRecalledFn 更新 accessed_at 和 recall_count:

这形成正反馈飞轮:被召回的记忆更容易在未来被召回,而长期未被召回的记忆逐渐被 GC 淘汰。


不变量

INV-MEM-50:Lazy 层的三个 arm 都必须经过 RecallQualityOK 质量门控。

INV-MEM-29:30+ 天零召回的 L4 条目被标记 stale,从全部自动注入面排除。


相关文档