你的 Agent 记忆在泄漏数据:多租户隔离不能靠后过滤
Critical-Home9648 · reddit · 2026-09-16
作者复盘团队踩过的多租户 agent 记忆隔离坑:早期靠共享索引 + 系统提示词约束「只用客户 X 的记忆」,但泄漏发生在检索层,提示词是最后一道防线且几乎无效。
三条泄漏路径
- 向量搜索后过滤:单索引 + metadata 后过滤会先扫全库再丢弃越权行,小租户召回率下降,且搜索已触及其他租户向量。团队改为分区存储、写入强制分区键。
- 图存储不尊重租户边界:只 scope 种子节点不够,两跳遍历可能经共享实体走进其他租户子图。改为按子图 scope,同一现实实体在各租户本地各存一份。
- 缓存键缺租户维度:按查询文本和 embedding hash 做键会让 A 租户的热结果原样返回给 B。embedding 缓存、去重表、rerank 缓存都有同款一行代码即可修复的 bug。
建模方式:scope 在写入时附加、缺失即写入失败,不用默认桶;层级为 user→customer→client 的物化路径,检索必须显式传入 scope 路径——越权数据根本不会进入进程,prompt injection 也无从谈起。
实体消歧也要 scoped:不 scope 的去重相似搜索会跨租户合并实体,且错误合并持久留在库中,比读泄漏更糟。团队曾错误地按减少重复调优——正确取舍是:未合并重复只是麻烦,错误合并是事故。
删除是检验标准:metadata 方案下向量在 compaction 前仍留在墓碑后,等于没删干净;分区方案下租户退订即 drop partition。
测试建议:用两个记录近乎相同的租户(相同姓名、措辞、最近邻 embedding),验证各 k 值下跨租户检索为零行;再用一个大 1000 倍的租户暴露后过滤召回下降。常规测试集租户差异大、向量搜索天然分开,根本测不出 scope 问题。
「编程与Agent」频道最新
- 2026 年逆向工程日常:一句目标交给 agent,遛狗回来 IDA 全部搞定 — dyn___ · 2026-09-16
- 开发者实测新模型 Jev:自称比 Gemini 便宜数十倍且输出更一致 — FrankFelixAI · 2026-09-16
- 开发者类比:vibe coding 如同 2015 年洗 SEO 搜索结果 — _Stocko_ · 2026-09-16
- 开源 callm 库:在原生 LLM SDK 外套上重试、缓存与预算护栏 — MassiveFinish3510 · 2026-09-16
- 让 laptop agent 驱动手机 UI:开发者开源移动端 agent mini-app 方案 — nawal_es · 2026-09-16
- 开源 Qwen-2.5-1B-RLCD:JSON 任务端侧推理最高提速 70 倍 — victormustar · 2026-09-16