记忆 GC 与 Digest

wesgine 记忆垃圾回收与语义摘要:淘汰策略、冲突检测、陈旧标记与晋升。


GC 概览

GC 定期清理低价值记忆条目,释放存储配额。

触发方式

方式说明
自动GC 定时循环(GCConfig.Interval)
手动POST /memory/gc

淘汰策略(INV-MEM-26)

runMaxEntries 使用 recall-frequency weighted 淘汰。

不是纯 LRU——RetentionScore 综合考虑:

因子权重
accessed_at 衰减时间越久分越低
recall_count被召回次数越多分越高
created_at创建时间
trust 级别高信任级别加分

GC 豁免(IsGCExempt)

以下 Kind 豁免 GC:


Digest 语义摘要

Digest 是定期运行的语义维护任务。

触发方式

方式说明
GC 调度DigestInterval 节流
手动POST /memory/digest

四项操作

1. 去重(dedup)

BM25 语义去重,物理删除败者。

按 (Namespace, CognitiveOwner) 分区——不跨认知主体(INV-MEM-42)。

2. 冲突检测(detectSupersession / INV-MEM-30)

检测"较新条目显式否定较旧条目"。

标记旧条目 Conflicted=true → 从全部自动注入面排除。

否定判据必须是整词——negationMarkers 不含裸字 不(INV-MEM-30)。

3. 陈旧标记(markStaleEntries / INV-MEM-29)

30+ 天零召回的 L4 条目标记 stale。

从全部自动注入面排除;显式检索路径不受影响。

4. 晋升

高频召回的条目可被晋升到更高信任级别。


RecallQualityOK 单点(INV-MEM-50)

所有自动注入面(9 个 arm)共用此判据:

条件结果
Conflicted=true排除
stale排除
IsGCExempt()惰性通过

显式检索故意不设此门。


accessed_at 下界(INV-MEM-51)

accessed_at 的下界是 created_at。

saveCore 落盘前抬平,存量由 DDL 幂等修。

零值不是中性状态——它是该字段最坏的取值。


CognitiveOwner 分区

Digest 的跨条目认知判断按 (Namespace, CognitiveOwner) 分区。

跨主体做的不是整合而是不可逆损坏(INV-MEM-42):


全量分页(INV-MEM-34)

Digest 读写一律分页至清空(DrainList)。

不用硬编码 Limit: 10000。


相关文档