What to remember
如果答案是否定的,不要写入 GUMem。记忆系统的价值来自选择,而不是保存一切。
适合写入的信息
| 类型 | 示例 | 为什么适合写入 |
|---|---|---|
| 稳定偏好 | 用户偏好浅色跑鞋、周会默认安排在 Berlin。 | 会影响后续推荐、排期或决策。 |
| 明确事实 | 用户下周三去上海出差。 | 后续任务可能需要引用或提醒。 |
| 长期约束 | 预算不超过 800、不能安排周五会议。 | 可以减少重复询问和错误建议。 |
| 阶段性计划 | 用户正在为欧洲团队安排季度 check-in。 | 多轮任务需要保持上下文连续。 |
| 可审计行为 | 用户确认、拒绝、收藏、跳过或完成某个工具动作。 | 后续需要解释为什么 Agent 做出某个判断。 |
| 行为模式 | 用户多次筛选同一价格区间或多次选择同一城市。 | 行为比直接表达更能说明意图。 |
如何判断是否值得变成 Facts
GUMem 会先把写入的 Message 转成 Facts,再把相关 Facts 压缩成 Summary。判断一条信息是否值得写入时,可以先判断它是否值得成为 Facts。
适合成为 Facts 的信息通常满足以下条件:
- 它有明确来源,可以追溯到某条用户消息、assistant 回复、工具结果或行为事件。
- 它会影响未来回答、推荐、工具调用、风险判断或审计解释。
- 它表达的是事实、偏好、计划、约束、身份、角色、时间、地点、对象或明确行为。
- 它的粒度足够具体,Agent 可以直接使用。
一个 Message 里可能包含多个独立 Facts。比如“欧洲团队默认 Berlin,美洲团队默认 Toronto,周五不要安排会议”至少包含两个城市偏好和一个会议限制。相反,紧密绑定的信息不要拆散,例如“欧洲团队默认 Berlin”应该作为一个完整事实保留。
Summary 更适合承载一组 Facts 共同表达的长期记忆。例如多次搜索、筛选和收藏都指向同一个偏好时,Summary 可以把这些 Facts 压缩成一句更适合召回的上下文。
不适合默认写入的信息
| 类型 | 示例 | 推荐处理 |
|---|---|---|
| 临时 UI 状态 | 当前展开的面板、临时排序、一次性 hover。 | 留在前端或当前请求状态中。 |
| 无意义点击流 | 与任务无关的连续滚动、误点、页面停留。 | 不写入,除非业务明确需要分析。 |
| 敏感信息 | 证件号、支付信息、健康细节、密钥。 | 默认不写入;如必须处理,先定义脱敏、权限和生命周期。 |
| 未验证推断 | “用户可能焦虑”“用户大概率收入较高”。 | 不写入事实型 Memory;需要时标注为低置信推断。 |
| 一次性中间结果 | 某次工具调用的临时 token、分页 cursor。 | 保存在业务流程状态中。 |
| 模型幻觉内容 | Agent 自己编造或未被用户确认的内容。 | 不写入,除非后续被用户确认。 |
写入前检查
写入 Messages 或 User Actions 前,建议检查:
- 这条信息是否会影响未来回答、推荐、工具调用或风险判断?
- 这条信息属于哪个
user_id和哪个Session? - 这条信息是用户明确表达、行为产生,还是 Agent 推断?
- 如果用户要求删除或更正,能否找到来源并处理?
- 是否包含敏感数据,是否需要脱敏、过滤或更短生命周期?
写入方式选择
| 上下文来源 | 使用方式 |
|---|---|
| 用户或 assistant 在对话中明确说出的内容 | 使用 Add Memory 写入 Session messages。 |
| 搜索、筛选、点击、收藏、跳过、工具调用或业务事件 | 使用 User Actions 写入行为 Message。 |
| 需要在召回前过滤、清洗或追加规则 | 使用 WebHooks 在处理链路中介入。 |
| 只需要当前请求使用的信息 | 不写入 GUMem,直接放入当前 Agent 上下文。 |
下一步
- 阅读 Add Memory 查看消息和行为写入方式。
- 阅读 Query Memory 查看如何召回已写入的 Memory。
- 阅读 Memory 如何形成 了解原始输入如何变成可复用 Memory。