记忆、摘要与画像
很多人第一次看到 ETOS 的"记忆"功能时,会把所有长期上下文都理解成同一件事。
实际上至少有三层:
| 层 | 职责 |
|---|---|
| 长期记忆 | 一条条可检索的事实或偏好 |
| 会话摘要 | 跨会话连续性的压缩记录 |
| 用户画像 | 更稳定的长期偏好与背景描述 |
它们不是三个名字,而是三种不同的上下文职责。如果只把它们当作"AI 的记忆",会被功能数量吓到;理解了职责分层,就能精确决定哪条信息该放哪一层。
一、长期记忆:离散、可检索、可编辑
长期记忆最适合保存:
- 稳定偏好
- 长期项目背景
- 明确要求"以后记住"的事实
不适合保存:
- 今天这次对话才需要的参数
- 某个单文件的临时内容
- 一次性安排
- 敏感隐私
save_memory 工具的边界规则
ETOS 内置的 save_memory 工具在 description 里直接写明了写入边界:
- 只有"后续很多次对话里都可能有用"的信息才该写入
- 稳定偏好、长期身份、长期合作背景可以写
- 明确的"记住这个"请求可以写
- 一次性细节、短期任务、敏感信息、第三方隐私默认不该写
这不是保守过头——而是防止记忆库被短期噪音污染。
长期记忆的存储模型
长期记忆不是单纯一段文本列表。内部至少两层形态:
| 形态 | 用途 |
|---|---|
| 原文记忆 | 保留用户真正想记住的内容 |
| 向量索引 | 把原文切成块后生成 embedding,供后续语义检索 |
一条记忆的大致生命周期:
写入原文
→ 按块切分
→ 生成 embedding
→ 建立向量索引
→ 回答前按需检索没配嵌入模型也能用
如果没有配置嵌入模型,记忆原文仍然保存,但无法参与向量检索——只能等你完全关闭检索(Top K = 0 全量送入,详见 上下文拼装)。
两种检索模式
向量检索 vector
适合自然语言问题:
- "我之前偏好的文风是什么"
- "最近长期在做的项目方向有哪些"
关键词检索 keyword
适合名称、术语、短语命中:
- 某个项目代号
- 某个固定术语
- 某个人名或设备名
ETOS 把 search_memory 工具的 mode 参数明确暴露出来,让模型能精确选择检索方式,而不是偷偷做一套混合检索。
归档 ≠ 删除
一条长期记忆可以被归档:
- 不再参与检索
- 但原文和向量仍然保留
适合"曾经重要,但现在不该继续污染回答"的信息——比如已经完结的项目、不再做的方向。
二、会话摘要:跨会话连续性压缩
会话摘要不是长期记忆的替代品。它解决另一个问题:
"这段对话关系线最近推进到了哪里?"
与长期记忆相比,它更像阶段性压缩。
触发策略
ETOS 会在聊天后异步判断是否要生成会话摘要。默认门槛:
| 项目 | 默认值 |
|---|---|
| 跨会话记忆 | 开启 |
| 触发生成最小用户轮次 | 6 |
| 同一会话两次摘要更新最小间隔 | 120 分钟 |
| 在后续对话里注入最近多少条摘要 | 5 |
它使用独立的 detached completion 在后台生成,不污染当前聊天历史。
摘要提示词的目标
会话摘要不是详细会议纪要,而是压缩成跨对话可复用的短摘要。
系统要求它:
- 输出 60~140 字
- 只保留关键主题、用户意图、明确结论
- 不要罗列细节
- 不要写免责声明
这让它既能保持上下文连续,又不至于把历史噪音全部带回来。
三、用户画像:更稳定的长期层
用户画像是比"会话摘要"再高一层的抽象。
不是按会话分的,而是整个人的长期描述。
ETOS 要求它强调:
- 稳定偏好
- 工作背景
- 长期关注点
并且主动避开:
- 一次性细节
- 短期噪音
默认更新策略
默认情况下,用户画像每天自动更新一次,也可以在设置里手动编辑、覆盖或清空。
为什么画像不是"自动权威真相"
发送给模型时,ETOS 会明确标注:
- 这是一份历史对话异步整理出来的画像
- 不应被视为新的用户指令
也就是说——用户画像是参考层,不是最高规则层。模型应该把它当作"用户大概率长这样",而不是"用户命令我必须这样"。
三层怎么配合
速查表
| 层级 | 作用 | 适合保存什么 |
|---|---|---|
| 长期记忆 | 离散事实检索 | 稳定偏好、长期背景、明确要求记住的事实 |
| 会话摘要 | 跨会话连续性 | 这段关系线最近做了什么、得出了什么结论 |
| 用户画像 | 长期抽象画像 | 稳定风格、长期关注点、工作背景 |
典型例子
| 想让 AI 记住 | 该放到 |
|---|---|
| "默认用中文回答" | 长期记忆 |
| "我们最近在重写文档站并切到 Teek 主题" | 会话摘要(自动) |
| "用户追求产品解释性,喜欢把设计逻辑讲清楚" | 用户画像(自动 + 可手动编辑) |
为什么不把一切都塞进长期记忆
那样会带来两个坏结果:
- 记忆库被短期任务挤爆
- 模型无法区分"长期事实"和"最近进展"
三层拆开后,ETOS 才能做到:
- 长期记忆负责检索事实
- 会话摘要负责保留关系线
- 用户画像负责提炼长期偏好
这套分层不是"功能堆砌"——是**让 AI 能解释"我为什么这么说"**的前提条件。