想象你雇了个助理,第一天它帮你订了咖啡,第二天你让它再订,它问:还是加奶不加糖吗?这就是短期记忆。一个月后你提起那次咖啡,它说:老板,那是上个月的事了吧?这就是长期记忆。而当你跟它说"把上次那个项目的数据拿来"时,它在脑子里快速翻找——这就是工作记忆。
Agent Memory就是AI助理的记事本:短期记忆记当前对话,长期记住住你的偏好,工作记忆在做任务时临时暂存。
AI不是金鱼,它有记忆——但得你教它怎么用
世界上有一种记忆叫Agent Memory,它不像金鱼那样只有7秒,也不像大象那样永生不忘——它介于两者之间,像一个聪明的秘书:记住重要的事,忘掉没用的废话。
当前对话的上下文,会话结束就清空
容量:有限(token限制)
生命周期:单次会话
持久化存储,存到数据库或文件
容量:几乎无限
生命周期:永久保存
任务执行时的临时状态
容量:中等
生命周期:任务期间
没有记忆的Agent就像金毛猎犬——热情但健忘。你让它分析数据,它分析了;下一句问结果,它说"什么数据?"——这就尴尬了。
✅ 记住用户偏好 - 你喜欢加奶不加糖,它下次还这样
✅ 保持上下文连贯 - 刚说的"那个项目"它知道是哪个
✅ 从历史中学习 - 上次踩的坑,下次绕开
✅ 执行复杂任务 - 多步骤任务需要记住中间结果
# MEMORY.md - OpenClaw 记忆配置文件
# 短期记忆:会话上下文
short_term:
max_tokens: 4000 # 上下文窗口大小
decay_rate: 0.1 # 重要度衰减率
recent_priority: true # 优先保留最近消息
# 长期记忆:持久化存储
long_term:
enabled: true
storage: ./memory/ # 本地存储路径
embedding_model: text-embedding-3-small
retrieval: semantic # 语义检索
# 工作记忆:任务执行状态
working_memory:
max_entries: 100
auto_cleanup: true # 任务完成自动清理
# scene_blocks/项目运营.md
Summary: 项目每日运营记录,包含内容生产、SEO优化、社区互动等核心活动
热度: 156 🔥
更新: 2026-04-28T04:00:00Z
# OpenClaw 会自动加载相关场景
# 当用户问"上周的内容生产情况"时
# 系统会检索 scene_blocks 中的相关记忆
// Agent 执行时自动检索相关记忆
const context = await memory.search({
query: "用户偏好设置",
type: "long_term",
limit: 5
});
// 场景记忆自动注入
// OpenClaw 会根据当前对话主题
// 自动加载相关 scene_blocks
# 小型任务:只用短期记忆
- 快速问答、简单查询
- 会话结束即清空
- 无需持久化
# 中型任务:短期 + 工作记忆
- 数据分析、报告生成
- 工作记忆暂存中间结果
- 任务完成自动清理
# 大型项目:三层记忆联动
- 长期运营、用户服务
- Scene Blocks 组织场景
- 长期记忆存关键事件
短期记忆:会话超时、用户明确清除
工作记忆:任务完成、出错重试时
长期记忆:定期归档、低热度条目清理
# memory_manager.py - 自定义记忆管理器
class CustomMemory:
def __init__(self):
self.short_term = [] # 会话上下文
self.long_term = {} # 持久化存储
self.working = {} # 任务状态
def add_short_term(self, message):
"""添加短期记忆,超出限制自动裁剪"""
self.short_term.append(message)
if len(self.short_term) > self.max_context:
self.short_term = self.short_term[-self.max_context:]
def save_long_term(self, key, value, importance=1.0):
"""保存长期记忆,带重要度评分"""
self.long_term[key] = {
'value': value,
'importance': importance,
'timestamp': time.now()
}
def retrieve(self, query, top_k=5):
"""按重要度和时间检索记忆"""
return sorted(
self.long_term.items(),
key=lambda x: x['importance'] * time_decay(x['timestamp']),
reverse=True
)[:top_k]