Memory 自动注入

wesgine 自动将记忆条目注入 LLM 上下文的三个注入面与九条注入臂。


三个注入面

面位置触发时机臂数
Eager Index系统提示词每轮构建5
Lazy Overlay当轮消息 overlay当轮构建3
Cold-start Overlay跨会话摘要重放新会话首轮1

合计 9 条注入臂(INV-MEM-50)。


Eager Index(系统提示词)

注入到系统提示词的记忆,每轮都包含:

臂Scope + Namespace包含的 Kind
1ScopeGlobal, CellNSConstraint, Instruction
2ScopeGlobal, CellNSCollective
3ScopeGlobal, UserNS(actor)Constraint, Instruction, Fact, Preference
4ScopeAgent, agentNSConstraint, Instruction
5ScopeAgent, agentNS + sharedConstraint

可见性:ActorVisible(不含 session 门)。


Lazy Overlay(当轮)

注入到当前消息的记忆,语义相关条目:

臂Scope + Namespace包含的 Kind
6ScopeGlobal, UserNS(actor)Fact, Preference, Correction, Convention, Lesson
7ScopeAgent, agentNSFact, Preference, Correction, Convention, Lesson
8ScopeAgent, shared 通道Convention

可见性:EntryVisible(含 session 门)。


Cold-start Overlay(跨会话)

新会话首轮重放之前会话的摘要:

臂Scope + Namespace包含的 Kind
9ScopeSession, SessionNSContext

可见性:ActorVisible(读私有域)。

前置条件:CrossSessionDays > 0(默认 0 = 整面关闭)+ 行未过期 + Key 不是当前会话。


RecallQualityOK(INV-MEM-50)

每条注入臂的条目必须通过两半检查:

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

质量门排除:

GC 豁免的 Kind(Constraint/Instruction/Environment)对质量门是惰性的——但 KindCollective 不豁免。


显式检索不设质量门

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

对指名索取者隐藏被取代的行是把错答换成缺答——记忆中心必须显示冲突否则无人能解决。


Kind 与注入面的关系

KindEagerLazyCold-start
Constraint✓——
Instruction✓——
Environment✓——
Collective✓——
Fact—✓—
Preference✓(L3) + ✓(Lazy)✓—
Correction—✓—
Convention—✓—
Lesson—✓—
Context——✓

Validate API(INV-MEM-25)

POST /cells/{id}/memory/validate 诊断一条记忆是否可被自动召回。

三面各答一对:

三者 OR = Recallable。

store 看不见的门报成条件:KB arm 的语料绑定在 agent config 上,cold-start 还要 CrossSessionDays > 0——两者都不是行的属性。


臂数写死在契约里

INV-MEM-50 把臂数 9 写死,不是留给后人数。

漏掉的正是数出来的那个——cold-start arm 与 Lazy 三臂同文件隔 350 行,第一遍收敛读作"两处"就收工了。


相关文档