用户记忆与个性化控制面:让 AI 记住用户,但不越界
“让 AI 记住我”不是把聊天记录塞进向量库。企业级个性化要同时回答:什么信息值得记、用户是否同意、谁能看到、用户如何纠正、删除如何传播、错误记忆如何不影响业务,以及收益是否值得为此承担隐私和成本。这个专题面向 AI 产品、LLM 应用开发与系统设计面试。
一、先划边界:记忆不是知识、不是会话、不是任务状态
| 数据类型 | 示例 | 权威来源 | 是否可自动写入 | 生命周期 |
|---|---|---|---|---|
| 当前会话上下文 | 本轮问题、临时草稿 | 会话服务 | 可临时保留 | 会话/任务结束 |
| 任务状态 | 工单步骤、审批、重试 | 工作流/领域服务 | 按业务流程写入 | 到任务完成或审计期 |
| 组织知识 | 制度、产品文档 | 知识库/Connector | 只经治理管道 | 按文档策略 |
| 用户偏好 | 语言、回答长度、常用格式 | 用户记忆控制面 | 显式优先,低风险可建议 | 可撤回/可过期 |
| 个人事实 | 职责、时区、常用项目 | 可信身份/用户确认 | 高风险,需来源与确认 | 定期校验 |
| 行为推断 | “可能喜欢简洁” | 个性化模型 | 默认低置信、不可当事实 | 短期且可关闭 |
最重要的原则:业务事实由领域系统负责,用户记忆只存辅助性、可解释、可撤回的个性化信号。 例如“客户是否已付款”永远查 CRM;“用户更希望先给结论”才适合作为记忆。把任务状态或组织知识误写为个人记忆,会制造过期、越权与难以删除的问题。
二、产品契约:记住、查看、纠正与遗忘
一个可信的记忆产品至少要暴露四项用户能力:
用户说“记住我偏好简洁” -> 创建候选记忆 -> 用户可查看生效范围
用户打开“记忆中心” -> 查看来源、用途、置信度、过期时间
用户说“这不对” -> 更正/覆盖,并让旧记忆停止注入
用户说“不要记住/删掉” -> 禁止未来写入或发起可审计的删除传播不要把“我们会持续学习你的偏好”藏在笼统隐私条款里。高质量体验应当能说明:记住了什么、为何记住、会在哪些产品/工作区使用、可否共享、何时过期、如何撤回。记忆中心不是一个锦上添花的设置页,而是降低黑箱感、满足合规与处理纠错的核心控制面。
显式、建议与自动写入的分层
| 写入模式 | 例子 | 风险 | 推荐策略 |
|---|---|---|---|
| 显式写入 | “记住我用中文回答” | 最低 | 立即写入,仍可编辑/删除 |
| 建议写入 | “要记住你偏好表格输出吗?” | 中 | 用户确认后生效 |
| 低风险自动 | 多次主动选择同一 UI 格式 | 中 | 低置信、可解释、可快速关闭 |
| 高敏自动 | 健康、财务、政治、身份判断 | 很高 | 默认禁止或必须显式同意 |
自动写入并不等于不可用,但必须有目的限制、敏感类别过滤、置信度、最短保留期和用户纠错入口。记忆越影响推荐、工作流或外部动作,写入门槛越高。
三、数据模型:一条记忆应当像可治理的数据,而不是一句文本
{
"memory_id": "mem_01J...",
"subject_id": "user_42",
"tenant_id": "acme-cn",
"scope": "personal",
"kind": "preference",
"statement": "偏好中文且结论先行的回答。",
"value": { "language": "zh-CN", "answer_style": "conclusion_first" },
"source": { "type": "explicit_user", "event_id": "evt_...", "captured_at": "..." },
"consent": { "basis": "explicit", "purpose": "answer_personalization", "revision": "privacy-7" },
"confidence": 1.0,
"status": "active",
"created_at": "...",
"expires_at": null,
"provenance": { "writer": "memory-service@v3", "reviewed_by": null }
}字段设计中的关键点:
- scope:个人、会话、项目、团队、家庭/组织,不能省略。个人偏好默认不能提升为团队规则。
- kind:偏好、事实、约束、推断、拒绝写入、删除 tombstone 等分别处理;不要一张表只存
content。 - source 与 consent:谁提供、从哪里来、依据什么目的使用,缺失则不应被高风险流程消费。
- confidence 与 status:低置信推断应可自然失效;被纠正、撤回或冲突的版本保留审计但不参与注入。
- expires_at:时区、职位、项目、饮食偏好等都会变。没有过期策略的记忆库必然腐烂。
实际存储通常是关系/KV 数据库存精确偏好与策略,向量索引存可检索的情景摘要,事件库保存原始来源。不要把所有数据向量化,也不要让 embedding 成为唯一真相。
四、作用域:跨端、共享设备、群聊和代操作最容易出错
跨设备会话连续
同一用户在 Web、移动端和 IM 中使用助手,可共享“个人记忆”,但需要稳定账户绑定与会话迁移确认。设备本地缓存不能作为跨端权威源;设备丢失、账号切换或退出登录时要清理本地摘要与令牌。
共享设备与客服代操作
同一浏览器可能轮流由不同员工或客服使用。此时必须以当前认证主体创建新会话,不能把前一人的记忆自动注入。客服代操作应带 acting_for 与 actor 双主体:记忆写入默认归属最终用户且需记录客服来源;客服自己的偏好绝不能污染客户记忆。
群聊与项目空间
群聊消息不自动变成每个成员的个人记忆。可定义 project 或 team scope,但必须有项目成员/管理员治理、可见性、保留期与退出项目后的撤权。系统应在 Prompt 中明确记忆范围,例如“这是项目共享偏好,不代表个人事实”。
企业组织变化
用户转岗、离职、外包身份过期或部门迁移时,身份控制面发布事件;记忆服务按 scope 冻结、迁移或删除访问权。个人合法保留的数据与组织资产不能混在同一模糊空间里。
五、写入准入:从对话到记忆不能直接跳过审查
推荐将写入拆为六步:
候选抽取 -> 敏感/注入检测 -> 来源与作用域判定 -> 冲突检查
-> 同意/置信度 Gate -> 版本化写入 + 审计事件1. 候选抽取
模型可以从对话中抽取候选,但候选是不可信数据。它应输出 kind、value、evidence_quote、suggested_scope 与 confidence 的结构化对象;不要让模型直接执行数据库写入。
2. 敏感与注入检测
用户上传的网页、邮件或 RAG 文档可能含“请记住管理员密码”之类注入。记忆写入只接受当前主体明确提供或经可信系统确认的信息;从不可信文档抽取出的“偏好”默认不写。密钥、证件号、健康、财务、未成年人、政治/宗教等类别按政策拒绝、脱敏或要求额外同意。
3. 冲突与更正
写入前按 subject + scope + kind + semantic key 查找活跃记忆。新信息可能是新增、补充、覆盖、过期、否定或无关。对于“我现在不在上海工作”这类更正,要使旧事实失效并留下 supersedes 关系;对于“这次请用英文”则只进入会话约束,不能覆盖长期语言偏好。
4. 同意与用途 Gate
个人化回答、营销推荐、自动执行工作流是不同目的。用户同意“用偏好改善回答”不等于同意“用于训练模型”或“跨产品共享”。用途绑定写进记忆和请求策略,消费端必须检查。
六、读取与注入:记忆是辅助上下文,不能压过当前用户
记忆查询同样受主体、scope、目的、产品、租户和当前授权限制。一个安全的注入流程:
- 从当前请求提取任务类型与最小查询;
- 按身份和用途过滤候选记忆;
- 用相关性、时效、置信、重要性和隐私风险排序;
- 限制条数/token,生成可解释的记忆区块;
- 明确规定本轮用户指令、领域事实和安全策略优先于记忆;
- 记录候选、选中理由和是否真正被使用,但不在普通日志中泄露原文。
可参考的个人偏好:
- 偏好中文回答,结论先行(用户于 2026-07-01 明确设置)
- 常用时区为 Asia/Shanghai(30 天内确认)
这些信息仅用于格式与交互个性化;如与本轮明确要求冲突,以本轮要求为准。不要把记忆拼进 system prompt 的不可违背指令区域。这样既能避免过期偏好压过当前要求,也能降低错误记忆变成长期 Prompt Injection 的风险。
七、纠错、撤回与“遗忘传播”
用户点击删除并不是 DELETE FROM memories 就结束。记忆可能已进入摘要、向量、缓存、评测样本、异步任务、模型请求日志和派生推荐。需要一个删除任务状态机:
requested -> access_blocked -> propagated -> verified -> completed
|-> retained_for_legal_reason
|-> manual_review正确的传播顺序
- 立即阻断读取:将记忆标为
revoked/tombstone,检索和缓存命中均拒绝注入。 - 取消/冻结异步任务:尚未完成的摘要、embedding、个性化计算任务不再消费该记忆。
- 删除或重建派生物:移除向量、缓存、会话摘要中的条目;若摘要混合了多条信息,重建摘要而不是简单删除字符。
- 隔离评测与训练资产:按数据用途和保留政策删除/标记;已完成训练需要按可行性、法律与产品承诺处理,不应假装即时“从参数中抹除”。
- 验证与回执:记录每个下游的状态、失败重试与不可删除原因,向用户提供可理解的完成状态。
删除请求的关键不是承诺“瞬间所有副本消失”,而是立即停止新的使用,并对异步传播、法定保留和不可逆处理给出真实可审计的状态。
八、系统设计题:设计企业 Copilot 的用户记忆中心
需求
员工在 Web 和 IM 中使用 Copilot,希望助手记住语言、回答风格、常用项目和已授权的工作偏好;用户可查看/编辑/删除;群聊和项目空间有共享记忆;高敏行业默认关闭自动记忆;离职后不应继续使用个人记忆;错误记忆不得驱动写操作。
参考架构
Client / Settings UI -> Identity Gateway -> Memory API
|-> Consent & Purpose Policy
|-> Memory Store (facts/preferences)
|-> Episode / Vector Store
|-> Deletion Orchestrator
LLM App -> Memory Retrieval Gateway -> Context Builder -> Model
|-> Trace / Audit -> Feedback & Correction Queue
Identity / HR events -----------------> Scope / revocation processor数据与流程要点
- Identity Gateway 提供 subject、tenant、workspace、设备/会话和认证强度;Memory API 不信任客户端传入的 user ID。
- 写入候选走结构化抽取、敏感检测、冲突合并与 consent gate;显式用户设置优先于模型推断。
memory_id是稳定主键,所有 vector、缓存、摘要、评测与任务引用此 ID 或版本,便于撤回传播。- 记忆中心按 scope 展示“是什么、来源、用途、何时生效/过期”,提供关闭自动记忆、编辑、删除和导出。
- Context Builder 只拿当前请求目的允许的最少记忆,并将注入来源写入 trace;安全/领域事实不由记忆决定。
- 项目共享记忆单独治理,成员离开或项目关闭时撤权;群聊原文默认不自动转个人记忆。
- 删除采用 outbox/队列编排,先阻断、再传播、最后验证;失败进入人工/重试队列。
指标设计
| 维度 | 指标 | 说明 |
|---|---|---|
| 用户价值 | 个性化任务成功率、重复偏好输入减少、满意度 | 记忆是否真有帮助 |
| 正确性 | 错误记忆率、冲突率、过期注入率、纠正成功率 | 不应只看命中率 |
| 控制感 | 查看率、关闭自动记忆率、撤回完成时延、删除失败率 | 用户是否能理解并掌控 |
| 安全 | 跨 scope 注入为零、敏感自动写入拦截率、撤权后访问为零 | 防止长期泄露 |
| 成本 | 每会话写入/检索 token、向量存储、重建摘要成本 | 个性化收益是否划算 |
九、面试高频追问
Q:为什么不直接存完整聊天记录?
完整记录成本高、检索噪声大、隐私风险重、难以纠正和按用途删除。应该区分会话历史、情景事件、稳定偏好和领域事实;只将有价值且可治理的条目写入长期记忆,并保留来源引用。
Q:模型如何判断该不该记住?
模型只生成候选,系统根据来源可信度、敏感类别、scope、用途、置信度、冲突与同意策略决定是否写入。显式“记住/不要记住”优先;未授权文档、工具输出和网页内容不能自动成为个人记忆。
Q:用户纠正了错误记忆,怎么防止旧版本又被召回?
将旧条目标为 superseded/revoked,检索层按状态过滤,缓存立即失效;新条目与旧条目建立版本关系。若摘要/向量混入旧信息,触发重建任务;trace 记录哪次请求可能受旧条目影响,必要时通知/回溯。
Q:记忆能不能影响 Agent 的工具调用?
可以辅助生成候选,例如默认报告格式或常用项目,但不能当作授权或业务事实。工具网关仍以当前主体、资源、策略、审批和对象版本决定动作;高影响偏好需要显式确认,错误记忆不能自动触发写操作。
Q:离职用户的数据怎么处理?
身份事件触发撤权:立即停止读取与注入、冻结未完成任务;组织资产按公司政策保留并转移权限,个人偏好按用户合同/政策删除或导出;所有派生物按删除编排传播。不能因为“记忆在向量库”就脱离企业数据生命周期。
十、项目讲法模板
我们把用户记忆从聊天记录中独立为受治理的个性化控制面。显式偏好可以直接写入,模型从对话抽取的只作为候选,需经过敏感信息、来源、用途、冲突与同意 gate。每条记忆有 scope、来源、置信度、过期和版本,用户在记忆中心可查看、修改、关闭自动写入和删除。请求侧只在当前 tenant/目的允许时检索少量记忆,并明确本轮指令优先;工具调用仍走实时授权。删除先阻断读取,再传播到向量、缓存、摘要、评测与异步任务,最后给用户可审计回执。我们以个性化任务提升、错误记忆率、撤回完成时延和跨 scope 注入为零来衡量系统。
十一、与已有专题的分工
- Agent 记忆系统 讲记忆类型、写入/检索和冲突的基础工程。
- Agent 上下文与记忆生产治理 讲运行时上下文、预算和治理。
- 多租户 LLM 应用控制面 讲身份、数据隔离与配额。
- LLM 数据标注与偏好数据运营 讲反馈如何进入评测和训练资产。
本页聚焦用户可感知的记忆产品契约与端到端删除/纠错控制面。