记忆验证与诊断

wesgine 记忆条目的写入后可召回性诊断、自动注入面谓词与验证端点。


验证端点(INV-MEM-25)

POST /cells/{id}/memory/validate

请求

{
  "entry_id": "mem-abc123"
}

响应

{
  "accessible": true,
  "recallable": true,
  "reasons": []
}

三个维度

维度说明
Accessible条目是否存在且属于当前 actor
Recallable条目是否会出现在自动注入面
reasons不可召回的具体原因

三个自动注入面(INV-MEM-50)

9 个 arm

面arm 数门控对
Eager(系统提示词索引)5EagerCarriesRow + ActorVisible
Lazy(当轮 overlay)3LazyCarriesRow + EntryVisible
Cold-start(跨会话摘要)1ColdStartCarriesRow + ActorVisible

门控成对

每个 arm 问两半:

  1. 可见性:ActorVisible 或 EntryVisible
  2. 质量:RecallQualityOK

RecallQualityOK 单点

所有自动注入面共用:

条件结果
Conflicted=true排除
stale(30+ 天零召回)排除
IsGCExempt()惰性通过

显式检索不设此门

memory(search) 回答"我存过什么"。

对指名索取者隐藏被取代的行 = 把错答换成缺答。

记忆中心必须显示冲突,否则无人能解决。


Validate 的三处漂移(已修复)

旧问题

  1. 扁平 kind 表套所有 scope(无差别收 KindContext)
  2. 无条件 EntryVisible 套到 eager 面
  3. 完全没有质量子句

修复

谓词按 arm 不按 scope:


store 看不见的门

KB arm

语料绑定在 agent config 上——store 无法判断。

报成条件而非答案。

Cold-start arm

需要 Cell 设 CrossSessionDays > 0(默认 0 = 整面关闭)。

行未过期、Key 不是正在开的会话——两者都不是行的属性。

裸答"可召回"会在整面关闭的 Cell 上被读成"这条会注入"。


测试必须差分

验证方法:

  1. 存进真 store
  2. 跑三个 Build(Eager / Lazy / Cold-start)
  3. 断言 Recallable 等于"文本出现在输出里"

矩阵必须含 KindContext——那是 cold-start 独家携带的 kind。


删除的 Kind

Kind处置
KindExperience删除(快照写入路径整条删掉)
canvas删除(声明之外零命中)
todo删除(声明之外零命中)

存量按 DEV-1 清库。


相关文档