Technical Guide

20. Memory 原理:长期上下文该记什么

理解 Memory 的边界:它不是聊天记录仓库,而是把稳定、有复用价值的信息注入后续任务。

Memory 不是聊天记录仓库

很多人把 memory 理解成“什么都记”。

这很危险。

Agent 记住错误信息,比不记还麻烦。

Memory 应该记什么

适合记的是稳定信息:

用户偏好
项目长期约定
常用路径
工作流约束
反复出现的事实

不适合记的是临时信息:

本次任务进度
一次性结果
可能很快过期的链接
未经验证的判断

DeerFlow 的 Memory 目录

相关源码:

backend/packages/harness/deerflow/agents/memory/

能看到:

message_processing.py
prompt.py
queue.py
storage.py
summarization_hook.py
updater.py

这说明 memory 包含提取、存储、更新、注入 prompt 等多个环节。

Memory 怎么参与任务

大致可以理解成:

对话或事件产生信息
|
处理和筛选
|
写入存储
|
后续任务注入上下文

关键不是“能不能记”,而是“该不该记”。

这一篇你要记住

Memory 的质量比数量重要。

对研究型 Agent 来说,Memory 更适合记用户偏好、报告格式、常用数据源,而不是每一次研究的临时细节。

Memory 的风险

Memory 一旦写入,就会影响后续任务。

所以它比普通上下文更敏感。

错误 memory 可能导致 Agent 长期沿着错误假设工作。

研究型 Agent 适合记什么

适合记:

用户偏好的报告结构
常用保存路径
常用来源优先级
不希望使用的来源
输出语言和风格

不适合记:

某一次研究的临时结论
未经验证的市场判断
很快过期的数据

memory prompt

目录里有 prompt.py,说明 memory 最终会影响提示词或上下文构造。

这也是为什么写入前要筛选。

进入 prompt 的东西,都会改变 Agent 后面的判断。

实践:动手检查

从“报告结构、保存路径、来源偏好、临时研究结论”中各写一个候选 memory,并逐项判断是否稳定、可验证、值得跨任务复用。最后只保留通过三项判断的内容。

完成标准

  • 至少拒绝一条临时或未经验证的信息;
  • 保留项能对应明确的后续任务行为;
  • 能在 backend/packages/harness/deerflow/agents/memory/ 中找到 storage、updater 和 prompt;
  • 没有为了测试而写入错误 memory。

多走一步(可选)

沿 updater.pyprompt.py 找一次“更新后影响上下文”的源码线索。