Files
agent/learning/agent-memory/knowledge-map.md
T
2026-07-10 18:01:44 +08:00

4.5 KiB

Agent Memory 认知地图

一句话地图

Agent memory 的核心任务是:在不能把全部历史交给模型的情况下,保留足以支持未来正确决策的信息结构。

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、编码与规划 错误状态持续传播
程序知识 规则、技能、指令和策略 重复任务、自我改进 过拟合、错误经验被固化

一个完整系统通常需要它们共存,而不是选一个数据库解决全部问题。

方法演化

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. 写错、写旧或写入恶意内容后,系统能否追踪、撤销并阻止敏感行动?