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.py 到 prompt.py 找一次“更新后影响上下文”的源码线索。