行业洞察
长期记忆数据建模:Profile、Preference、Facts、Episodes 的边界
记忆做不好,往往不是向量库选错,而是数据口径没定。本文给出四类记忆的可落地边界、字段示例、版本与冲突处理规则。
作者: 发布时间:2026/5/16阅读时长:8 min read
记忆做不好,往往不是向量库选错,而是数据口径没定。本文给出四类记忆的可落地边界、字段示例、版本与冲突处理规则。
这是一篇偏行业洞察方向的内容,适合想快速理解“长期记忆数据建模:Profile、Preference、Facts、Episodes 的边界”核心脉络的读者。
文章先解释“TL;DR”,帮助你快速进入主题。
随后会展开“1. 四类记忆的定义(建议口径)”,方便直接定位关键方法或判断标准。
核心看点
- TL;DR
- 1. 四类记忆的定义(建议口径)
- 1.1 Profile(身份与稳定背景)
- 1.2 Preference(偏好与默认设置)
做长期记忆最常见的返工点之一,是“所有东西都叫记忆”:对话摘要、用户偏好、事实、任务状态、外部文档……混在一起,最后谁也不敢用。
这篇文章只解决一件事:把长期记忆拆成可治理的数据结构。
TL;DR
- Profile 是“你是谁”,Preference 是“你喜欢怎样”,Facts 是“可验证的事实”,Episodes 是“发生过什么”。四者写入频率、权限边界与生命周期不同。
- 数据模型不追求一次完美:先定义最小字段、冲突策略与审计字段,再逐步扩展。
- 安全上,把记忆当成可写攻击面:写入要白名单,读取要隔离与可回滚[2]。
1. 四类记忆的定义(建议口径)
1.1 Profile(身份与稳定背景)
典型字段(示例):
- userId / orgId
- role(岗位/角色)
- domain(行业/业务领域)
- locale(语言/时区)
特点:
- 低频变更
- 权限敏感(往往与账号/组织绑定)
- 一旦错了,影响范围大
1.2 Preference(偏好与默认设置)
典型字段:
- outputStyle(输出格式:表格/要点/步骤)
- verbosity(详细程度)
- toolDefaults(默认工具与参数)
特点:
- 中频变更
- 最适合做“显式触发”(用户说“以后都这样”才写入)
- 允许覆盖与回滚(保留历史版本)
1.3 Facts(可验证事实)
典型字段:
- projectName、repo、技术栈约束
- 已确认的业务规则
- 外部依赖版本(但要注意时间敏感性)
特点:
- 需要证据指针:来源链接、文档ID、审批记录
- 必须有“过期策略”:事实会变
1.4 Episodes(事件与过程痕迹)
典型字段:
- eventType(例如“发布”“支付”“故障”“用户反馈”)
- happenedAt(时间)
- payload(结构化摘要)
- traceId / docId / url(可追溯)
特点:
- 高频写入
- 最容易膨胀,需要 TTL 与归档
- 经常是评测与审计的输入
2. 建模建议:从“可治理”开始
2.1 统一元字段(强烈建议)
不管哪种记忆,建议都带上:
id:唯一ID
scope:user/org/project/session
source:来源(user_explicit / agent_infer / tool_output / import)
createdAt、updatedAt
version:版本号
confidence:置信度(可选,但很实用)
evidence:证据指针(链接/文档ID/traceId)
这些字段不是“为了好看”,而是为了后续做到:审计、回滚、调试、评测。
2.2 冲突策略:先写下来,别靠“模型自己懂”
常见冲突:
- Preference:用户今天说“输出要短”,明天说“要详细”
- Facts:外部依赖版本变更
建议先约定三条规则:
- Preference 以最新显式确认为准(保留历史版本,允许回滚)。
- Facts 必须带证据与时间范围,不带证据的 Facts 降级为“假设/建议”。
- Episodes 不做覆盖,只做追加(但做 TTL/归档)。
2.3 写入白名单与“指令隔离”
记忆是可写的,意味着它能被“注入”。OWASP 的 Agent Memory Guard 直接把记忆投毒列为核心风险之一,并给出运行时防护与回滚思路[2]。工程上,建议做到:
- tool_output 写入必须经过结构化解析与字段白名单
- 不把记忆文本当指令使用(把它当数据)
3. 一个可复制的最小表结构(示例)
你不一定要按这个建表,但建议至少能表达以下概念:
memory_item:存储结构化字段(type、scope、key、value、version、evidence)
memory_event:追加式事件(episode),用于审计/评测
memory_index:用于检索(向量/倒排/标签)
如果你使用第三方框架的 memory 组件,也建议把“长期记忆”的存储落到可控的数据层,而不是仅仅保存在对话历史里。很多框架也强调短期与长期分开:短期更像线程内历史,长期用于跨线程的用户级数据[1]。
近30天动态(节选)
- 供应链与分发成为 MCP 生态的焦点:mpak 提出了 MCP server registry 的打包与扫描思路(2026-02-16),对“记忆/工具/skill 作为依赖”治理具有参考意义。更多见:近30天动态总览
参考与延伸阅读
这篇文章由 ToolsHub 公开发布,站点持续维护 AI 工具、在线文档、技术教程和效率实践内容。
我们优先保证公开页面可直接阅读、可分享、可被搜索引擎与 AI 正确理解。