记忆 session_id 提列

wesgine 记忆系统的 session_id 从 metadata JSON 提升为独立列的设计。


问题

session_id 住在 Metadata 的 JSON 键里,SQL 判不了。

会话门在 Limit: 500 取回之后在 Go 里跑——即页外过滤。


页外过滤的后果

fixture 上正确。

但 isolated 连续性下,每条别人会话的私有行都是窗口占用者。

繁忙的 agent 命名空间把本会话的行整个挤出 500 窗口,召回返回空。


治法(INV-MEM-54)

提列

ddlMemoriesV11 添加 session_id 列:

ALTER TABLE wes_memories ADD COLUMN session_id TEXT DEFAULT ''

SQL 判定

会话门从 Go 后处理变成 SQL WHERE session_id = ?,在 LIMIT 之内执行。


零值拒写不默认

情况处理
空 kindErrKindRequired
episodic 缺 SessionIDErrSessionRequired

ErrSessionRequired 的理由与 AgentNS("") 相同——201 比 400 坏,调用方就此不再找了。


耐久性模型

跨会话可见性此前问 Formation,而 Formation 是溯源(M1–M7),耐久性是寿命。

两者真的不一致:

收敛到 kindDurability——键在 Kind 而非新字段。