为什么你的 AI 助手记不住上下文?Agent 记忆设计指南¶
你一定遇到过这种情况:
"帮我修改一下之前那个函数" — 请问是哪个函数?
"用我们上次讨论的方式来实现" — 上次讨论的什么方式?
不是 AI 笨,是记忆系统没设计好。
记忆的本质问题¶
人脑的记忆是关联的、层级的、有选择性的。但 AI 的"记忆"只是上下文窗口里的 token——用完了就被覆盖。
这就是 Agent 记忆要解决的核心问题:如何在有限的上下文中,让 AI 记住真正重要的事情。
Agent 记忆的四种类型¶
| 记忆类型 | 存什么 | 存多久 | 怎么用 |
|---|---|---|---|
| 工作记忆 | 当前任务的中间状态 | 任务期间 | 直接塞进 prompt |
| 会话记忆 | 本次对话的历史 | 会话期间 | 按需检索 |
| 持久记忆 | 跨会话的重要信息 | 长期 | 向量检索 |
| 世界知识 | 常识和领域知识 | 永远 | 预训练+微调 |
1. 工作记忆(Working Memory)¶
这是 AI "正在思考"的内容:
关键点:工作记忆应该精简,只保留当前任务的关键状态。
2. 会话记忆(Session Memory)¶
记录一次对话中的关键信息:
关键点:不是记录所有对话,而是选择性记住用户明确要求"记住"的内容。
3. 持久记忆(Persistent Memory)¶
跨会话记住重要信息:
关键点:不是存储越多越好,而是存储真正有价值的信息。
4. 世界知识(World Knowledge)¶
预训练时学会的常识,不需要额外存储。
记忆系统的工程实现¶
1. 分层存储¶
2. 记忆的写入策略¶
被动写入:记录所有对话(太多了,检索困难)
主动写入:只有满足条件才记录:
3. 记忆的检索策略¶
完整实现示例¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | |
LoopForge 的记忆设计¶
作为本地优先的 Agent OS,LoopForge 实现了完整的多层记忆系统:
1. Workspace 级记忆¶
2. Session 级记忆¶
3. 跨 Workspace 记忆¶
实践建议¶
给开发者的记忆设计 Checklist¶
- 区分工作记忆 / 会话记忆 / 持久记忆
- 设定合理的 token 预算(建议 prompt 的 50-70%)
- 实现主动写入,而非被动记录所有
- 定期压缩/总结长期记忆(防止向量库膨胀)
- 提供用户手动管理记忆的能力
不要做的事情¶
- ❌ 把所有对话都存进向量库(噪音太多)
- ❌ 只依赖向量检索(相似度不等于有用)
- ❌ 忘记清理过期记忆(GDPR 也有关系)
- ❌ 不给用户控制权(用户想删记忆怎么办?)
总结¶
Agent 的记忆不是"记住所有事情",而是在对的时刻想起对的事情。
好的记忆系统 = 合适的存储分层 + 精准的检索策略 + 用户可控的记忆管理
当你的 AI 助手能够: - 记住项目的技术栈和架构 - 记住你的编码偏好 - 记住之前任务的状态和上下文
它就不再是每次都要从头开始的"新助手",而是真正懂你的个人工程师。
相关链接