在构建一个高质量的 AI Agent(尤其是 VSCode Copilot / Cursor 类 IDE Agent)时,记忆系统(Memory System)是决定体验上限的核心能力。
很多人一开始会误以为:
👉 “记忆 = 把对话存下来 + 让 LLM 调用 tools”
但实际工程里:
❗ Memory 是一个“有策略的数据系统”,而不是一个“让 LLM 随便调用的工具集合”
本文将从架构设计 → 存储策略 → 推断机制 → 工程实现路径,系统讲清楚如何设计一套可落地的 Agent 记忆系统。
一、Memory 的本质:不是存数据,而是提升决策质量
Agent 的 Memory,本质是:
👉 在未来决策时,提供更准确、更高价值的上下文
Memory 的四种核心类型
1. Working Memory(工作记忆)
2. Episodic Memory(情节记忆)
3. Semantic Memory(语义记忆)
4. Procedural Memory(程序性记忆)
1️⃣ Working Memory(短期上下文)
- 当前 prompt window
- 当前任务上下文
👉 特点:不持久化,高频更新
2️⃣ Episodic Memory(过程记录)
- 对话历史
- 任务执行过程(trace)
👉 用于:长任务推理、上下文延续
3️⃣ Semantic Memory(知识)
- RAG 知识库
- API 文档 / 规则
👉 用于:回答问题、补充知识
4️⃣ Procedural Memory(🔥最重要)
- 成功经验
- 工具使用策略
- Debug 方案
👉 用于:让 Agent 越用越聪明
二、核心问题:存什么?什么时候存?什么时候用?
1️⃣ 存什么(What)
只存高价值信息:
if (
isReusable &&
isHighValue &&
isVerified
) {
save()
}
2️⃣ 什么时候存(When)
✅ 必存场景
if (userAcceptSuggestion) → 存成功经验
if (task.success) → 存解决方案
if (fileChanged) → 更新项目结构
❌ 不该存
- 闲聊
- 单次行为
- 未验证结果
3️⃣ 什么时候用(Retrieve)
onGenerateCode → 加载项目上下文
onDebug → 加载历史修复经验
onRefactor → 加载相似代码模式
三、关键原则:不要把 Memory 完全交给 LLM
❌ 错误设计
LLM decides → 调用 memory tool
问题:
- 不稳定
- 成本高
- 易污染 memory
✅ 正确设计(推荐)
系统规则(主) + LLM判断(辅) + Tool执行
四、IDE Agent Memory 架构(Copilot 类)
IDEAgentMemory {
EditorContextMemory
SessionMemory
ProjectMemory // 核心🔥
UserMemory
ProceduralMemory // 核心🔥
}
核心说明
🧩 ProjectMemory(项目记忆)
- 代码结构(AST / Graph)
- 依赖关系
- 代码语义(embedding)
👉 支撑:跨文件理解
👤 UserMemory(用户习惯)
- 代码风格
- 命名习惯
👉 支撑:生成“像用户写的代码”
🧠 ProceduralMemory(经验)
- 哪种方案能解决问题
- 哪个工具更有效
👉 支撑:Agent 自我进化
五、用户习惯系统设计(User Memory)
关键点:不是记录行为,而是提取模式
❌ 错误
写一次 arrow function → 存
✅ 正确
多次行为 → 统计 → 达阈值 → 存
实现流程
监听行为 → 提取 pattern → 统计频率 → 达阈值 → 存储偏好
示例结构
{
type: "code_style",
key: "function_style",
value: "arrow_function",
confidence: 0.9,
frequency: 20
}
使用方式
方法1:Prompt 注入
User prefers arrow function
方法2:AST 后处理(推荐🔥)
transform(code)
六、工具经验系统(Procedural Memory)
核心思想
👉 把“成功解决问题的过程”沉淀为经验
监听入口
onTaskFinished(task, result)
提取经验
{
taskType: "fix_error",
pattern: "typescript_property_not_exist",
solution: "...",
tools: ["tsserver"],
success: true
}
存储条件
if (
success &&
confidence > 0.7 &&
reusability > 0.6
)
使用方式
retrieve → 注入 prompt → LLM 推理
七、结合 Git:从真实开发中学习
监听 Git 提交(VSCode)
repo.state.onDidChange()
检测 commit
repo.log()
获取 diff
repo.diffBetween()
提取经验
oldCode → newCode → 分析 → 存储
👉 这一步非常关键:
Agent 从真实开发行为中持续进化
八、完整执行链路(工程级)
flowchart TD
A[用户写代码]
B[行为监听]
C[模式识别]
D[Memory 检索]
E[LLM 生成]
F[用户反馈]
G[经验提取]
H[Memory 更新]
A → B → C → D → E → F → G → H
九、关键优化策略(必须做🔥)
1️⃣ Memory Gating(门控)
score > threshold 才存
2️⃣ Memory 压缩
总结 → 替代原始数据
3️⃣ 去重
similar → merge
4️⃣ 遗忘机制
低价值 → 删除
5️⃣ 分层存储
KV(偏好)
Vector(经验)
Graph(结构)
十、总结
一句话总结
Agent 记忆系统的本质是:
👉 在正确的时机,把高价值信息结构化存储,并在需要时精准使用
再精炼一点:
❌ 不是:让 LLM 管理记忆
✅ 而是:用工程系统管理记忆,让 LLM 使用记忆