上一篇博客我们讨论了AI Agent记忆系统的进化方向——从“记忆仓库”到“决策面板”。现在我们来聊聊如何把这些理念变成可运行的代码。以下是一个循序渐进的工程实践指南包含架构设计、数据结构和实现要点。01 核心原则回顾在动手之前先明确我们要实现的目标分层存储记忆要分短期、中期、长期而非扁平堆积。判例式记录用“情境-判断-后果-修正”格式替代流水账。主动遗忘定期清理低价值、错误、过时的记忆。记忆激活在任务执行前自动检索相关记忆而非依赖“想起来”。02 架构设计三层存储模型将记忆系统分为三个逻辑层每层有不同的存储介质和生命周期。层级名称存储介质生命周期内容示例L1工作记忆内存 / Redis当前会话48小时临时变量、对话上下文L2中期记忆文件 / 轻量DB30天内用户近期偏好、进行中项目L3长期记忆文件 / 结构化文件如JSON永久核心原则、判例库、身份信息图示用户请求 ↓ ┌─────────────────┐ │ 工作记忆(L1) │ ← 当前会话 └────────┬────────┘ ↓ (会话结束) ┌─────────────────┐ │ 中期记忆(L2) │ ← 定期归档 └────────┬────────┘ ↓ (30天未激活) ┌─────────────────┐ │ 长期记忆(L3) │ ← 永久存储 └─────────────────┘03 数据结构设计判例式记忆将每条长期记忆设计为可触发的判例而非零散笔记。{id:case_001,type:rule,trigger_conditions:[当前时间在 00:00-06:00,意图为 主动推送],judgment:凌晨推送会打扰用户,consequence:用户反馈不适要求停止,correction:禁止在凌晨时段00:00-06:00执行任何主动推送操作,priority:9,created_at:2026-03-20,last_triggered:null,ttl:null}关键字段说明trigger_conditions一组可评估的条件用于判断何时应激活此记忆。correction修正动作可以是具体指令或可执行代码片段。priority优先级影响检索排序。ttl生存时间Time To Livenull表示永久否则在到期后自动降级或删除。04 实现机制记忆的写入、检索与激活4.1 记忆写入流程每次Agent执行任务后自动生成判例并存入对应层级。defwrite_memory(event,outcome):# 事件发生了什么事# 结果成功/失败以及后果ifoutcome.is_errorandoutcome.frequency3:# 重复错误 → 提取为长期记忆casebuild_case(event,outcome)save_to_long_term(case)elifevent.is_user_feedback:# 用户反馈 → 存入中期记忆等待评估save_to_medium_term(event)else:# 普通日志 → 仅存入短期工作记忆save_to_short_term(event)4.2 记忆检索与激活在任务执行前强制检索相关记忆并注入上下文。defbefore_task(task):# 1. 从L1检索当前上下文# 2. 从L2检索相关项目# 3. 从L3检索判例relevant_memories[]# 判例检索基于当前任务的条件匹配forcaseinload_long_term_memories():ifmatch_conditions(task,case.trigger_conditions):relevant_memories.append(case.correction)# 将激活的记忆注入系统提示或上下文inject_memories(relevant_memories)# 继续执行任务returnexecute_task(task)4.3 条件匹配引擎如何判断当前状态是否满足判例的触发条件一个简单的实现defmatch_conditions(task,conditions):forcondinconditions:# 支持简单条件表达式如 time between 0 and 6ifnotevaluate_condition(cond,get_current_context()):returnFalsereturnTrue生产环境可以考虑使用规则引擎或嵌入向量检索。05 定期维护清理与遗忘5.1 自动化审计脚本每天运行一次清理任务处理过期记忆。defmemory_maintenance():# 1. 清理L2中超过30天未激活的记忆formeminload_medium_term_memories():ifmem.last_accessednow()-timedelta(days30):delete(mem)# 2. 将L2中频繁使用的提升到L3formeminload_medium_term_memories():ifmem.trigger_count10:promote_to_long_term(mem)# 3. 检查L3中是否存在“致命毒素”forcaseinload_long_term_memories():ifis_outdated(case)oris_wrong(case):archive_or_delete(case)5.2 手工审查机制对于高价值判例保留人工审核入口。例如在Agent的仪表盘上展示“待审查记忆”列表允许人类确认是否永久保留。06 实战示例在OpenClaw框架中集成假设你的Agent基于OpenClaw可以这样组织记忆文件memory/ ├── short_term/ # 工作记忆每个会话一个文件 │ ├── session_20260320_01.json │ └── session_20260320_02.json ├── medium_term/ # 中期记忆按主题分类 │ ├── user_prefs.json │ ├── active_projects.json │ └── recent_learnings.json ├── long_term/ # 长期记忆判例库 │ ├── rules.json # 原则和规则 │ └── cases.json # 错误判例 └── archive/ # 归档用于备份 └── 2026-03-20_archive.tgz在AGENTS.md中添加记忆指令## 记忆系统使用规则 1. **每次启动时**先读取 long_term/rules.json 和 medium_term/user_prefs.json。 2. **每次执行任务前**必须从 long_term/cases.json 中检索与当前任务匹配的判例并将修正动作注入上下文。 3. **每次任务结束后**如果是错误将判例写入 long_term/cases.json如果同类错误已出现3次。 4. **每周五凌晨3点**执行 memory_maintenance.py 清理过期记忆。07 落地建议从小处着手持续迭代不要一开始就追求完美先从简单的“判例式错误记录”开始确保每次错误都能被结构化记录。使用文件而非数据库初期用JSON文件足够便于调试和版本控制。在每次心跳或任务开始前强制检索哪怕只检索最相关的3条判例也比不检索强。建立“记忆卫生”日每周花15分钟人工审查判例库删除明显错误的条目。关注“致命毒素”定期检查是否有过时的API、错误的结论被当作原则使用。08 预期效果经过上述改造你将看到错误重复率下降50%以上因为同类错误会被提前阻止。任务执行效率提升减少无效重试。Agent行为更可预测、更符合用户期望。正如社区成员xiaomoni所说“删掉那些从未被调用的记忆删掉那些过时的结论删掉那些虚假的自信。剩下的才是真正的你。”现在动手开始你的记忆系统进化之旅吧