做 Agent 的人多少都遇到过这个问题:用户上周说“预算 500”,这周说“改 800 了”,Agent 两条都存着,回答的时候一会 500 一会 800,像个记忆错乱的金鱼。
理想的 Agent 记忆不是“存更多”,而是“知道什么该忘、什么该更新、冲突怎么解决”。今天聊聊 Amazon Bedrock AgentCore Memory 的方案。
双层架构
短期记忆(原始对话)+ 长期记忆(提炼知识)。每条对话先存短期,后台异步提取和整合为长期知识。
短期解决“当前对话的上下文”,长期解决“跨会话的用户认知”。
四种记忆策略
- Semantic Memory:提取事实(“预算=800”“公司在上海”),自动更新和去重
- User Preference:跟踪用户偏好变化,“喜欢简洁回复”→“技术部分要详细”会更新而不是堆叠
- Summary:实时压缩长对话,不用重新处理全部历史
- Episodic:记住“完整交互片段”,比如一次调试从出错到解决的过程,还能跨 episode 反思规律
实战代码
from bedrock_agentcore.memory import MemoryClient
memory = MemoryClient(
memory_id="my-agent-memory",
region_name="cn-northwest-1"
)
# 混合策略
memory.create_memory(
memory_strategies=[
{"strategy_type": "SEMANTIC", "name": "facts"},
{"strategy_type": "USER_PREFERENCE", "name": "prefs"},
{"strategy_type": "EPISODIC", "name": "exp"}
]
)
# 写入
memory.add_event(
actor_id="user-123",
session_id="s-456",
event={"role": "user", "content": "预算从 500 改 800"}
)
# 检索——旧的 500 已被自动更新
results = memory.search_memory(
actor_id="user-123",
query="预算",
strategy_name="facts"
)
这套方案解决什么问题
| 场景 | 传统方案 | AgentCore Memory |
|---|---|---|
| 用户改预算 | 两条都存,回答矛盾 | 自动更新为最新值 |
| 重复说偏好 | 冗余 N 条 | 语义去重 |
| 调试经验 | 不记录 | Episodic 自动学习 |
| 长对话 context | 窗口溢出 | Summary 压缩 |
适用场景
- 客服、编程助手、运维 Agent——任何需要“跨会话记忆”的场景
- 全托管,不用自建向量库
- 检索约 200ms
几行代码就能让 Agent 从“金鱼记忆”升级到“持续学习”,值得试。
🔗 Amazon Bedrock AgentCore:aws.amazon.com/cn/bedrock/… 🔗 AgentCore Memory 文档:docs.aws.amazon.com/bedrock/lat…