开发 AI Agent 的时候,你有没有遇到过这样的问题:
对话进行到第10轮,Agent 突然忘了你在第3轮说过的关键信息;明明昨天跟它讨论过一个方案,今天它却像第一次听说;用户反复问同样的问题,每次都要重新解释一遍...
这不是 AI 的问题,而是缺少一个关键能力:记忆。
今天我们来聊聊 OpenClaw 的 Memory 系统,看看它是如何让 AI Agent 拥有类似人类的记忆能力的。
为什么 AI Agent 需要记忆?
先说个场景。
假设你在开发一个客服 Agent,用户第一次问:"我的订单什么时候到?"你的 Agent 查询后回答了。过了5分钟,用户又问:"那个快递现在在哪儿?"
如果没有记忆,Agent 会懵:什么快递?哪个订单?
但如果有记忆,Agent 会知道:"哦,你说的是刚才那个订单号为 XXX 的快递,现在在配送中心。"
这就是记忆的价值 —— 让对话有连贯性,让服务更智能。
OpenClaw Memory:三种记忆类型
OpenClaw 参考了人类的记忆机制,设计了三种记忆类型:
1. 短期记忆(Short-term Memory)
作用:存储当前对话的上下文
就像你刚才说的话,还在大脑里回荡。短期记忆保存的是最近几轮对话的内容,让 Agent 能理解对话的连贯性。
memory:
short_term:
enabled: true
window_size: 10 # 保留最近10轮对话
特点:
- 容量有限(通常 5-20 轮对话)
- 自动管理,超出窗口会丢弃
- 响应速度快
适用场景:
- 日常对话
- 客服问答
- 需要快速响应的场景
2. 长期记忆(Long-term Memory)
作用:存储重要的、需要长期保留的信息
就像你记住的生日、电话号码。长期记忆保存那些跨会话都需要的信息,比如用户偏好、历史订单、关键事实等。
memory:
long_term:
enabled: true
provider: "chromadb" # 向量数据库
collection: "user_preferences"
特点:
- 容量大,持久化存储
- 支持语义检索
- 跨会话可用
适用场景:
- 用户画像
- 知识库
- 个性化推荐
- 需要记住长期信息的任务
3. 工作记忆(Working Memory)
作用:存储当前任务的临时数据
就像你在做数学题时,脑子里暂存的中间结果。工作记忆保存的是执行任务过程中的临时状态。
memory:
working:
enabled: true
max_items: 50
特点:
- 任务范围内有效
- 结构化存储
- 任务结束后清空
适用场景:
- 多步骤任务
- 需要暂存中间结果
- 复杂流程编排
实战:如何配置和使用?
场景1:智能客服 Agent
用户会话通常持续几分钟,需要记住对话内容和用户信息。
配置思路:
- 短期记忆:保存当前对话
- 长期记忆:保存用户信息和历史记录
- 工作记忆:处理查询时的临时数据
agent:
name: "customer_service_agent"
memory:
short_term:
enabled: true
window_size: 15 # 保留15轮对话
long_term:
enabled: true
provider: "chromadb"
collection: "customer_data"
embedding_model: "text-embedding-3-small"
working:
enabled: true
max_items: 30
使用示例:
from openclaw import Agent
agent = Agent.from_config("customer_service.yaml")
# 用户第一次咨询
response = agent.run("我的订单什么时候到?")
# Agent 会将订单号存入长期记忆
# 5分钟后,用户再次咨询
response = agent.run("那个快递现在到哪了?")
# Agent 从长期记忆中找到订单号,继续追踪
场景2:内容创作 Agent
需要记住用户的写作风格、偏好主题、历史创作。
配置思路:
- 短期记忆:当前创作会话
- 长期记忆:用户风格、历史作品
- 工作记忆:当前文章的大纲、素材
agent:
name: "content_creator_agent"
memory:
short_term:
enabled: true
window_size: 20
long_term:
enabled: true
provider: "chromadb"
collection: "user_writing_style"
working:
enabled: true
max_items: 100 # 创作需要更大的工作空间
场景3:数据分析 Agent
需要在多步骤分析中保持中间结果。
配置重点:工作记忆的高效使用
agent:
name: "data_analyst_agent"
memory:
short_term:
enabled: true
window_size: 10
long_term:
enabled: true
provider: "chromadb"
collection: "analysis_history"
working:
enabled: true
max_items: 200
persistence: true # 分析结果需要持久化
三种记忆的协同工作
这三种记忆不是孤立的,它们会协同工作:
用户输入
↓
短期记忆(理解当前对话)
↓
长期记忆(提取相关历史信息)
↓
工作记忆(暂存处理过程)
↓
生成回复
举个例子:
用户:"帮我分析一下这个月的销售数据"
- 短期记忆:记住用户在问销售数据
- 长期记忆:检索出用户上个月也分析过,以及关注的指标
- 工作记忆:暂存数据查询结果、计算的中间值
- 生成分析报告
性能优化:让记忆更高效
1. 短期记忆窗口大小
不是越大越好。太大会增加 token 消耗,太小会丢失上下文。
建议:
- 简单对话:5-10轮
- 复杂任务:15-20轮
- 长期会话:考虑用长期记忆
2. 长期记忆检索策略
长期记忆越多,检索越慢。需要优化检索策略:
long_term:
search:
top_k: 5 # 只检索最相关的5条
threshold: 0.7 # 相似度阈值
rerank: true # 使用重排序提高准确性
3. 工作记忆清理
工作记忆会随着任务进行而膨胀。需要定期清理:
# 任务完成后清理工作记忆
agent.memory.working.clear()
# 或者保留关键信息
agent.memory.working.retain_keys(["final_result", "user_feedback"])
最佳实践:5个建议
1. 合理分配记忆类型
不是所有信息都需要长期记忆。区分什么该记住、什么可以忘记。
- 短期:对话内容、临时查询
- 长期:用户偏好、知识库、历史记录
- 工作:任务中间结果、临时状态
2. 控制长期记忆的增长
长期记忆会不断积累,需要管理:
long_term:
retention:
max_age_days: 90 # 90天后自动清理
max_items: 10000 # 最多保存1万条
3. 使用结构化存储
不要把所有信息都丢给长期记忆。结构化存储更高效:
# 不推荐
agent.memory.long_term.add("用户叫张三,喜欢红色,上次买了一个杯子")
# 推荐
agent.memory.long_term.add({
"type": "user_profile",
"name": "张三",
"preferences": {"color": "红色"},
"purchase_history": [{"item": "杯子", "date": "2024-01-15"}]
})
4. 监控记忆使用情况
定期检查记忆的使用效率:
# 获取记忆统计信息
stats = agent.memory.get_stats()
print(f"短期记忆:{stats.short_term.size} 条")
print(f"长期记忆:{stats.long_term.size} 条")
print(f"工作记忆:{stats.working.size} 条")
5. 测试记忆的准确性
记忆不是越多越好,关键是准确性:
# 测试长期记忆检索
query = "用户上次买了什么?"
results = agent.memory.long_term.search(query, top_k=3)
# 验证检索结果是否相关
for result in results:
print(f"相似度:{result.score}")
print(f"内容:{result.content}")
常见问题
Q:三种记忆都要开启吗?
不一定。根据场景选择:
- 简单对话:只开启短期记忆
- 个性化服务:开启短期+长期
- 复杂任务:三种都开启
Q:长期记忆用什么数据库?
OpenClaw 支持多种向量数据库:
- ChromaDB:轻量级,适合开发和小规模应用
- Pinecone:云服务,适合生产环境
- Qdrant:开源,性能好
Q:记忆会影响响应速度吗?
会有一定影响:
- 短期记忆:影响很小
- 长期记忆:检索需要时间,但通常在100ms内
- 工作记忆:几乎不影响
Q:如何处理记忆冲突?
如果新旧信息冲突,有几个策略:
- 时间优先:保留最新的
- 来源优先:保留可信度高的
- 人工介入:让用户确认
写在最后
记忆系统是 AI Agent 从"对话工具"进化到"智能助手"的关键一步。
OpenClaw 的 Memory 系统,通过短期、长期、工作三种记忆的协同,让 Agent 能够:
- 理解对话的连贯性
- 记住用户的个性化信息
- 处理复杂的多步骤任务
但记住,记忆不是越多越好,关键是记住对的信息。
你在开发 AI Agent 的时候,是怎么处理记忆问题的?欢迎在评论区分享你的经验。
参考资料:
- OpenClaw 官方文档:https://docs.openclaw.ai/zh-CN/concepts/memory
- OpenClaw Memory 最佳实践指南
相关阅读:
- 如何设计一个高效的 AI Agent 架构
- OpenClaw 工具系统完全指南
- 向量数据库选型指南
