记忆 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 之内执行。
零值拒写不默认
| 情况 | 处理 |
|---|---|
空 kind | ErrKindRequired |
episodic 缺 SessionID | ErrSessionRequired |
ErrSessionRequired 的理由与 AgentNS("") 相同——201 比 400 坏,调用方就此不再找了。
耐久性模型
跨会话可见性此前问 Formation,而 Formation 是溯源(M1–M7),耐久性是寿命。
两者真的不一致:
别用 tabs出自一次纠正事件(episodic 溯源)却永久有效- plan 是用户亲手写的(declarative 溯源)却在产出它的任务外毫无意义
收敛到 kindDurability——键在 Kind 而非新字段。