110 lines
4.5 KiB
Markdown
110 lines
4.5 KiB
Markdown
# Agent Memory 认知地图
|
|
|
|
## 一句话地图
|
|
|
|
Agent memory 的核心任务是:在不能把全部历史交给模型的情况下,保留足以支持未来正确决策的信息结构。
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
O["观察与轨迹"] --> W["写入判断"]
|
|
W --> R["原始证据层"]
|
|
W --> S["语义与主题层"]
|
|
W --> P["程序与技能层"]
|
|
R --> X["当前执行状态"]
|
|
S --> X
|
|
P --> X
|
|
X --> A["行动与回答"]
|
|
A --> F["结果与反馈"]
|
|
F --> C["价值归因与巩固"]
|
|
C --> W
|
|
G["来源、时效与权限"] --> W
|
|
G --> X
|
|
```
|
|
|
|
这张图里,存储只是中间环节。真正困难的是写入、选择、更新、归因和治理。
|
|
|
|
## 两条最重要的区分轴
|
|
|
|
EvoMemBench 把问题拆成两条轴,这比“短期/长期 memory”更能指导设计。
|
|
|
|
| | 知识导向 | 执行导向 |
|
|
| --- | --- | --- |
|
|
| 当前任务内 | 当前问题需要的事实、约束、证据 | 当前计划、子目标、工具结果、失败分支 |
|
|
| 跨任务 | 用户偏好、领域规则、稳定事实 | 可复用流程、技能、失败教训、策略价值 |
|
|
|
|
由此得到四个问题:
|
|
|
|
1. 当前任务中,我需要保留哪些事实?
|
|
2. 当前任务中,我需要维持怎样的执行状态?
|
|
3. 跨任务后,哪些知识仍然有效?
|
|
4. 哪些经验应该变成可以复用的行为规则?
|
|
|
|
## 四种核心产物
|
|
|
|
| 产物 | 保存什么 | 最适合的任务 | 主要风险 |
|
|
| --- | --- | --- | --- |
|
|
| 原始证据 | 完整对话、工具结果、轨迹 | 审计、细节恢复、重新解释 | 太长、噪声多、检索困难 |
|
|
| 语义文档 | 事实、主题、关系、时间线 | 多 session 问答、偏好与知识更新 | 过期、冲突、schema 不匹配 |
|
|
| 执行状态 | 当前路径、子目标、分支和约束 | 长程工具任务、GUI、编码与规划 | 错误状态持续传播 |
|
|
| 程序知识 | 规则、技能、指令和策略 | 重复任务、自我改进 | 过拟合、错误经验被固化 |
|
|
|
|
一个完整系统通常需要它们共存,而不是选一个数据库解决全部问题。
|
|
|
|
## 方法演化
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
A["把历史塞进上下文"] --> B["按相似度检索记录"]
|
|
B --> C["结构化主题、图和层级"]
|
|
C --> D["Agent 主动导航与验证证据"]
|
|
D --> E["把轨迹维护成执行状态"]
|
|
E --> F["把经验编译为规则和技能"]
|
|
F --> H["从结果学习写入、检索和遗忘策略"]
|
|
H --> I["增加 transition 验证、来源和权限治理"]
|
|
```
|
|
|
|
这不是严格时间线,而是问题不断暴露后的能力叠加:
|
|
|
|
- 上下文解决可见性,但产生成本和注意力稀释。
|
|
- 检索解决容量,但相似不等于对决策有用。
|
|
- 结构解决关系和聚合,但 schema 可能提前丢失未来问题需要的信息。
|
|
- Agentic retrieval 延迟结构承诺,让模型按问题寻找证据,但增加推理成本。
|
|
- 执行状态解决长任务中的因果连续性和错误隔离。
|
|
- 编译记忆把反复出现的经验变成行为改变,而不只是再次展示历史。
|
|
- 学习控制策略解决“哪些记忆长期有价值”,同时引入 credit assignment 问题。
|
|
- 治理层防止错误或不可信内容变成永久系统状态。
|
|
|
|
## 五个设计环节
|
|
|
|
### Write
|
|
|
|
决定候选信息是否值得越过持久化边界。需要处理信息增量、重复、置信度、来源和未来用途。
|
|
|
|
### Manage
|
|
|
|
执行合并、拆分、更新、遗忘、冲突处理和版本维护。这里决定 memory 会不会随时间腐烂。
|
|
|
|
### Read
|
|
|
|
根据当前问题选择最小但充分的上下文。读取既可以是一次检索,也可以是 Agent 多步搜索、检查和补证据。
|
|
|
|
### Learn
|
|
|
|
根据任务结果更新哪些记忆有用、哪些结构有效、哪些经验应晋升为规则。关键难题是把结果正确归因到先前记忆。
|
|
|
|
### Govern
|
|
|
|
记录来源、时间、主体、权限和派生链;敏感行动不能只因为某条记忆“看起来合理”就执行。
|
|
|
|
## 一眼判断方法
|
|
|
|
面对一个新任务,按顺序问:
|
|
|
|
1. 历史是否真的超过有效上下文,或者会跨 session?如果否,先用长上下文 baseline。
|
|
2. 任务失败来自忘记事实,还是丢失执行状态?两者需要不同结构。
|
|
3. 是否存在可重复利用的稳定模式?如果有,考虑程序记忆或编译指令。
|
|
4. 未来查询类型能否提前定义?如果不能,保留原始证据并支持主动导航。
|
|
5. memory 模块消耗的 token 和延迟,是否比把预算给基础 Agent 更值得?
|
|
6. 写错、写旧或写入恶意内容后,系统能否追踪、撤销并阻止敏感行动?
|
|
|