记忆层模型

wesgine 七层记忆分层:闭域定义、可见性规则、写入约束与跨层关系。


七层闭域

AllMemoryLayers() 返回七个值:

层英文名含义是否用户记忆
L1environment宿主环境信息是
L2consensus部门/团队共识是
L3about_me关于用户个人是
L4agent_memory角色/Agent 记忆是
-session会话态否(运行时)
-working工作缓存否(运行时)
-unknown未覆盖的 scope否(兜底)

为什么是闭域

引擎 LayerOf(e) 单点判层。消费方一律消费不推导。

unknown 必须留在联合里——它是引擎的兜底出口,能从线上到达。


L1 环境信息(environment)

来源

宿主环境感知器(memenv.SharedSnapshot)自动产出。

特点

可见性

全 Cell 共享——无 actor 归属。


L2 部门共识(consensus)

来源

admin 手动写入。

特点

典型内容

部门规章、工作流程约定、共享知识。


L3 关于我(about_me)

来源

用户交互中引擎提取。

特点

可见性

仅本 actor 可见——ActorVisible 判定。


L4 角色记忆(agent_memory)

来源

Agent 交互中记忆工具写入。

特点

命名空间

命名空间可见性
agent://legal/*仅 agent-legal
agent://legal/sharedagent-legal 内共享通道

Session / Working(运行时层)

层说明不许写入
session会话态记忆ErrLayerNotWritable
working工作缓存ErrLayerNotWritable

这两层是运行时产物,不是用户可直接编辑的记忆。


层判定单点(INV-MEM-49)

LayerOf(e)

一行一个答案。消费方不推导。

layer := memory.LayerOf(entry)

LayerClauses(layer)

按层查询的 SQL 谓词——与 LayerOf 由同一份定义生成。

Layer 与 Scope 互斥

?layer=about_me&scope=global → ErrMemoryLayerScopeConflict(400)

不做交集——两者只在调用方糊涂时才分歧。


可写层(INV-MEM-53)

三个可写层:

层对应 Scope约束
consensusScopeGlobal不能带 actor
about_meScopeGlobal必须带 actor
agent_memoryScopeAgent必须带 actor + namespace

四类 400

错误含义
ErrUnknownLayer层名不存在
ErrLayerNotWritableenvironment/session/working
ErrLayerSharedconsensus 带 actor
ErrLayerNamespaceRequiredagent_memory 空 namespace

按层提问

列表

GET /memory?layer=about_me&actor=alice

层下推到引擎 SQL,不在客户端过滤。

计数

GET /memory/counts?actor=alice

返回 Record<MemoryLayer, number>——键覆盖全部层含 0。

写入

POST /memory  { "layer": "about_me", "content": "..." }

清空

DELETE /memory/layer?layer=about_me&actor=alice

Kind 与耐久性(INV-MEM-54)

耐久性是 Kind 的属性,不是 Formation 的属性。

持久 Kind

跨会话可见:

短暂 Kind

仅当前会话:

Kind 必填

空 kind → ErrKindRequired。

Episodic kind 缺 SessionID → ErrSessionRequired。


Actor 边界

读侧单点

memory.ActorVisible(entry, actor)

写侧单点

// saveCore 内部
RequireActor(entry)

私有域无主 = 异常

ScopeAgent 无主条目是异常——缺主,不是共享。

共享域无主 = 正常

ScopeSystem / ScopeGlobal 无主是正常——L1/L2 共享资产。


消费方规则

前端

Go 后端


相关文档