记忆 Kind 分类

wesgine 记忆系统使用 Kind 字段对条目进行语义分类,它决定了条目的耐久性、GC 行为和自动注入方式。


Kind 枚举

Kind说明耐久性示例
constraint行为约束持久"回复始终用中文"
instruction操作指令持久"代码注释用英文"
fact事实陈述持久"公司总部在北京"
preference用户偏好持久"偏好简洁回复"
correction纠正反馈持久"上次你把 X 搞错了,正确是 Y"
convention项目惯例持久"用 tabs 缩进"
lesson经验教训持久"处理 CSV 时先检查编码"
context跨会话上下文会话级会话摘要
episodic情景记忆会话级某次对话中学到的东西
collective集体共识持久部门规定

Kind 与耐久性

Kind 是决定记忆条目是否跨会话可见的唯一依据:

func kindDurability(k Kind) (Durability, error) {
    switch k {
    case KindConstraint, KindInstruction, KindFact, 
         KindPreference, KindCorrection, KindConvention,
         KindLesson, KindCollective:
        return DurablePersistent, nil
    case KindContext, KindEpisodic:
        return DurableSession, nil
    default:
        return 0, ErrUnknownKind
    }
}

Kind 与 Formation 的区别

KindFormation
回答这条记忆是什么这条记忆怎么来的
决定耐久性、GC 行为、自动注入仅用于审计和统计
是否必填是(saveCore 拒收空 Kind)否

Kind 与 Trust 的默认映射

当写入时 Trust 为零值(Go 零值 = TrustSystem = 最高信任),saveCore 会按 Kind 回退到合理默认值:

Kind默认 Trust
environmentTrustSystem(T0)
constraint、instructionTrustExplicit(T1)
fact、collectiveTrustMulti(T2)
preference、correction、convention、lessonTrustInferred(T3)
其他TrustUnknown(T4)

Kind 与 GC


已删除的 Kind

已删除 Kind原因
experience把"运行快照"与"教训"混在一个名字下,拆成 lesson(教训)和 wes_run_traces(快照)
canvas声明之外零命中
todo声明之外零命中

零值拒写

空 Kind → ErrKindRequired。Kind 是三张表(memories、dedup、注入索引)的键,允许空值会导致无法定位的幽灵条目。


相关文档