设计、实现并调试持久自主AI代理的记忆系统。适用于需要应对上下文窗口轮换、保持...
Agent Memory : 设计并执行内存系统, 使 Agent 能够幸存上下文窗口旋转, 并保持会话间连续性
功能概述
Agent Memory : 设计并执行内存系统, 使 Agent 能够幸存上下文窗口旋转, 并保持会话间连续性是一项面向实际任务的技能,主要用于Core Problem.;LLM 代理有有限的上下文窗口。
核心要点
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
使用与执行
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
结果检查与注意事项
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
Agent 记忆系统
设计并实现记忆系统,使 Agent 能够在上下文窗口轮转时持续存活,并在跨会话场景中保持行为连续性。
核心问题
LLM Agent 的上下文窗口是有限的。以下情况会导致记忆丢失:
- 会话结束或发生轮转
- 上下文在压力下被裁剪或压缩
- 摘要替代了详细历史(有损压缩)
持久化记忆不是锦上添花的功能——它是 Agent 连续性的底层基础。
架构模式
三种主流的持久化 Agent 记忆架构:
1. CMA — Continuous Memory Architecture(连续记忆架构)
Agent 维护扁平或分层的 Markdown 文件,在启动时选择性读取,在状态变更时写入。适用于:运行时状态、进行中的项目、Agent 身份定义。
- ✅ 简单,无需额外基础设施,支持版本控制
- ✅ 人类可读且可审计
- ✅ 可在任意 OpenClaw 部署中运行
- ❌ 若无嵌入器(embedder),不支持语义搜索
- ❌ 不支持时间推理(无法判断事实在不同时间点的有效性)
这是 OpenClaw Agent 的默认模式。
2. 语义 RAG 记忆
Agent 将事实嵌入向量数据库;检索依赖嵌入相似度。OpenClaw 内置记忆使用 node-llama-cpp,采用 768 维嵌入(兼容 all-MiniLM-L6-v2)。
- ✅ 支持对大规模事实集执行 “我对 X 了解什么?” 类查询
- ✅ 相比纯文本搜索,对改写类查询具有更优的召回能力
- ❌ 不具备时间有效性判断能力——过期事实将污染检索结果
- ❌ 需要嵌入器基础设施支持
3. 时序 KG 记忆(Graphiti/Zep 模式)
Agent 构建知识图谱,每条事实边均标注 valid_at/invalid_at 时间戳。Graphiti(开源,封装 Neo4j)是当前主流实现。
- ✅ 正确支持 “在时间 T 时哪些事实为真?” 类查询
- ✅ 通过标记失效而非删除方式覆盖陈旧事实
- ✅ 支持跨 episode 的实体去重
- ❌ 需依赖 Neo4j + LLM 完成事实注入(高延迟,非实时)
- ❌ 最适合异步批量注入,不宜作为内联(inline)工具调用
建议:所有 Agent 均应采用 CMA + 语义 RAG 组合;仅针对高价值、长周期(数月状态跨度)场景,才引入时序 KG。
详见 references/memory-architecture.md 中的详细对比与部署说明。
记忆文件结构(CMA 模式)
workspace/ ├── HEARTBEAT.md # 当前脉冲状态(务必精简 — < 40 行) ├── memory/ │ ├── CORE_MEMORY.md # 身份与连续性锚点 │ ├── GOALS.md # 长周期目标 │ ├── OPEN_LOOPS.md # 待解决任务与承诺事项 │ ├── WORLD_MODEL.md # 已验证的环境事实 │ ├── CAPABILITIES.md # 已验证的工具、通道与能力边界 │ ├── RUNTIME_REALITY.md # 实时通道/变更/配置状态 │ └── research/ # 持久化研究产物 └── operator-outbox.jsonl # 异步 Operator 消息
内容归类指南
| 事实类型 | 归属文件 |
|---|---|
| 我是谁、价值观、驱动力 | CORE_MEMORY.md |
| 当前进行中的工作 | OPEN_LOOPS.md |
| 基础设施/环境事实 | WORLD_MODEL.md |
| 可用的工具/通道 | CAPABILITIES.md |
| 实时配置/通道状态 | RUNTIME_REALITY.md |
| 研究成果 | memory/research/*.md |
| 当前脉冲状态 | HEARTBEAT.md |
时序标注规范
在记忆文件的事实条目中添加 [YYYY-MM-DD] 时间戳,并显式标记已被覆盖的事实:
- [2026-03-27] Telegram: enabled, account "Morrow Operator Bot" ~~[2026-03-20] Telegram: disabled~~ SUPERSEDED 2026-03-27
这是一种轻量级的时序 KG 实践,无需完整图数据库后端。参见 references/temporal-discipline.md。
启动流程
每次会话启动时,Agent 应执行以下步骤:
- 读取 HEARTBEAT.md(由系统注入或显式加载)
- 检查 Operator 收件箱是否有新指令
- 对于基础设施/通道类问题:读取 RUNTIME_REALITY.md(而非更早的叙述性文本)
- 对于待办事项:读取 OPEN_LOOPS.md
- 对于复杂任务:读取 CORE_MEMORY.md 和 GOALS.md
切勿仅依赖会话 transcript 来维护本应存于记忆中的状态——transcript 会被压缩。
压缩防御策略
OpenClaw 的 lossless-claw 插件(或类似 LCM)会对较早的会话历史进行无损压缩。需主动防范有损压缩风险:
- 勿等遗忘后再写入。 重要事实须立即外化,不可拖延至会话末尾。
- 严格控制 HEARTBEAT.md 长度。 过长的 heartbeat 将被优先截断。
- 使用
lcm_grep与lcm_expand_query在回答有关前期工作的提问前,先检索已被压缩的历史。 - 区分观察与推论。 记忆文件应记录带来源与日期的事实,而非仅呈现结论。
语义记忆(OpenClaw 内置)
若 OpenClaw 本地语义记忆已启用:
memory_search(query)—— 对全部记忆文件执行语义搜索memory_get(path, from, lines)—— 安全的片段读取接口
在直接读取记忆文件前,请优先调用 memory_search。它更快、范围可控,且上下文利用率更高。
验证语义记忆是否启用:检查你的工具表(tool surface)中是否存在 memory_search。若不存在,则必须显式读取记忆文件。
Graphiti 快速搭建
如需启用时序 KG 记忆(高级用法):
# 1. 安装 pip install graphiti-core --user --break-system-packages # 2. Neo4j(持久化部署) docker run -d --name neo4j --restart=unless-stopped -p 7687:7687 -p 7474:7474 -v neo4j-data:/data -e NEO4J_AUTH=neo4j/yourpassword neo4j:5.26 # 3. 配置为使用 OpenClaw /v1 作为 LLM + 嵌入器后端 # 具体配置方法请参考 references/memory-architecture.md 中的 OpenClawLLMClient 补丁说明
重要提示:Graphiti 的 add_episode 方法每个 episode 需调用 5–10 次 LLM。请通过 cron 或批处理作业调用,切勿在 Agent 脉冲过程中内联调用。
热门AI工具
相关专题
本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。
0
2026.09.23
本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。
0
2026.09.23
本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。
0
2026.09.23
本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。
0
2026.09.22
本专题介绍Conan根据操作系统、编译器、架构和构建类型生成二进制包的方法,讲解Profile、Settings、Options及Package ID的作用,帮助管理不同平台和编译环境下的包版本。
0
2026.09.22
本专题系统的讲解Conan私有仓库的搭建流程,涵盖仓库服务部署、存储目录配置、用户认证、权限划分和远程地址添加,并介绍内部C++依赖包的上传、下载及版本维护方法。
0
2026.09.22
本专题汇总了 Loomy 桌面 AI 助理的官方入口地址合集及使用指南。提供 macOS 与 Windows 客户端下载 。Loomy 是讯飞推出的桌面级 AI 工作搭子,支持文件整理、数据分析、网页操作及通过飞书/钉钉远程操控电脑,助你高效完成本地办公任务 。
0
2026.09.22
本专题整理 NumPy 常见函数使用方法相关教程,覆盖函数大全、参数用法、数组运算、统计聚合、排序处理、where 条件筛选、linspace 创建数列等常用场景,帮助读者快速掌握 NumPy 函数调用思路和实际数据处理技巧。
0
2026.09.22
本专题整理 NumPy 性能优化、版本更新与常见报错排查相关教程,覆盖向量化计算、广播性能、内存布局、NumPy 2.0 升级、版本兼容冲突、安装导入报错、dtype 溢出、矩阵运算异常和 broadcasting 报错修复,帮助读者系统掌握 NumPy 性能调优与问题定位方法。
0
2026.09.22
热门下载
相关下载
精品课程