记忆去重键
wesgine 的 ContentDedupKey 机制——防止重复记忆条目。
问题
多个写入路径(memory tool、CognitiveSettlement、HTTP API)可能写入相同内容。
没有去重机制时,同一条偏好可能在记忆库中出现多次。
ContentDedupKey
saveCore 在持久化前为每条记忆生成去重键。
规则:
- 调用方显式提供
Key→ 使用它 - 调用方未提供 → 从
Content哈希生成
冲突行为
去重键冲突时执行 upsert(更新已有条目)。
不是拒绝写入,而是合并。
键组成
去重键在 (scope, namespace, actor, key) 四元组上唯一。
不同 Actor 可以有相同内容的记忆——归属不同。
不同 Agent 命名空间可以有相同内容——隔离不同。
与 INV-MEM-43 的关系
AgentNS 被 Cell 内全部 Actor 共用。
两个员工的相同 Key 曾是同一行——第二次保存静默覆盖第一次。
现在行身份包含 actor 段:(scope, namespace, actor, key)。
saveCore 中的位置
RequireActor → Kind 校验 → 威胁扫描 → 质量门控 →
WriteGate → ContentDedupKey 兜底 → Trust 兜底 →
accessed_at 归一 → Embedding → 后端写入
注意事项
- 空 Key 不等于"不去重"——会自动生成
- 显式 Key 被保留,不被覆盖
SaveBatch逐条处理,每条各自去重