AI Agent Memory Layer
解释 coding agent 的 memory layer 是什么,以及它与上下文、知识、技能、文件化规则和外部 memory backend 的边界。
#ai
#concept
#growing
[!info] related notes
AI Agent Memory Layer
[!abstract] 一句话定义 Agent Memory Layer 是跨消息、会话或任务保存并按需取回用户事实、项目知识和历史经验的系统。它负责记忆的生命周期与治理;模型真正推理时,只有被选择并注入 Context 的那部分记忆才可见。
核心架构
Conversation / Event / Tool Result
→ Memory Candidate Extractor
→ Policy + Validation
→ Memory Store / Index
→ Retrieval + Rerank
→ Context Builder
→ Model
Memory Layer 不等于某个向量数据库;存储只是其中一部分。
它应承担什么
- 候选信息提取;
- Scope、来源、置信度和敏感度标记;
- 去重、版本与冲突处理;
- 短期/长期生命周期;
- 关键词、结构化和语义检索;
- Freshness、Permission 与 Context Budget 过滤;
- 用户查看、纠正和删除;
- 使用效果、误召回和泄漏评估。
典型作用域
| 作用域 | 示例 |
|---|---|
| Run / Session | 当前任务、最近工具结果 |
| User | 回答偏好、长期目标 |
| Project / Repository | 架构决策、常用命令、历史故障 |
| Organization | 团队规范、共享流程 |
| Agent / Tool | 某个 Agent 的专门经验和限制 |
作用域必须显式,不能把个人偏好默认共享给所有项目和 Agent。
与相邻信息层的边界
Context
→ 当前调用直接可见的信息包
Memory
→ 使用过程中沉淀、跨轮次复用的状态
Knowledge / RAG
→ 外部资料和可检索事实源
Instruction Files
→ 明确、可审计的规则和流程
Business State
→ 业务数据库中的权威事实
Memory 被取回后会进入 Context,但 Memory 本身不等于 Context。
Coding Agent 为什么特别需要
Coding Agent 会反复进入同一仓库,持续面对:
- 目录和架构边界;
- 构建、测试与发布命令;
- 历史设计决策;
- 用户代码风格和审阅偏好;
- 过去出现过的故障与修复;
- 跨天继续的 Plan / Execution。
但当前代码、测试结果和显式规则通常比旧 Memory 权威。记忆应帮助定位,不应覆盖现场证据。
常见存储形态
- 关系表:结构化 Fact、Scope、Version、TTL;
- 文档 / Markdown:可审阅规则和长期知识;
- 向量索引:语义候选召回;
- 图结构:实体、关系和时间演进;
- Event Log:历史 Episode 与 Provenance。
成熟系统常组合多种存储,而不是把所有内容塞进同一向量集合。
常见失败模式
- 把最近聊天历史叫做“长期记忆”;
- 自动保存模型推断,未标记置信度;
- 旧项目事实覆盖当前代码;
- 跨用户或跨租户泄漏;
- 检索结果过多,污染 Context;
- 只支持新增,不支持修正、失效和删除;
- 把 API Key、Token 或敏感医疗信息无条件长期保存。
最小实现顺序
1. Explicit scoped facts
2. Source + version + updated time
3. User-visible edit/delete
4. Retrieval filters
5. Semantic search as candidate recall
6. Conflict / forgetting policy
7. Eval and observability
先把结构化、可控的少量记忆做好,再扩展自动抽取。
学习检查
不看正文回答:
- Memory Layer 为什么不等于向量数据库?
- Candidate extraction、policy、store、retrieval、rerank、context injection 分别承担什么职责?
- Memory 与当前 Context、RAG Knowledge、Business State、Instruction File 的边界分别是什么?
- 为什么项目代码和当前测试结果通常应比旧 memory 更权威?
- User / Project / Session / Organization scope 为什么必须显式?
- 什么情况下“自动记住更多”反而会降低 Agent 质量?
- 为什么 Memory 系统必须支持纠正、失效和删除,而不能只 append?
- 给一个 coding agent 跨天继续任务的案例,设计需要记住与不应该长期记住的内容。
掌握验收
- 能画出写入、存储、检索、过滤和注入链路。
- 能说明 Memory 与 Context / RAG / Business State 的区别。
- 能为用户、项目和会话设计隔离 Scope。
- 能处理冲突、过期、纠正和删除。
- 能用任务指标评估 Memory,而不只看召回率。