Morrow Agent Memory

Polar Sponsor
爱发电 赞助
.NET 9.0

设计、实现并调试持久自主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 应执行以下步骤:

  1. 读取 HEARTBEAT.md(由系统注入或显式加载)
  2. 检查 Operator 收件箱是否有新指令
  3. 对于基础设施/通道类问题:读取 RUNTIME_REALITY.md(而非更早的叙述性文本)
  4. 对于待办事项:读取 OPEN_LOOPS.md
  5. 对于复杂任务:读取 CORE_MEMORY.md 和 GOALS.md

切勿仅依赖会话 transcript 来维护本应存于记忆中的状态——transcript 会被压缩。

压缩防御策略

OpenClaw 的 lossless-claw 插件(或类似 LCM)会对较早的会话历史进行无损压缩。需主动防范有损压缩风险:

  1. 勿等遗忘后再写入。 重要事实须立即外化,不可拖延至会话末尾。
  2. 严格控制 HEARTBEAT.md 长度。 过长的 heartbeat 将被优先截断。
  3. 使用 lcm_grep 与 lcm_expand_query 在回答有关前期工作的提问前,先检索已被压缩的历史。
  4. 区分观察与推论。 记忆文件应记录带来源与日期的事实,而非仅呈现结论。

语义记忆(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 脉冲过程中内联调用。

相关专题

更多
Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

0

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

0

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

0

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

0

12

Conan二进制包配置指南
Conan二进制包配置指南

本专题介绍Conan根据操作系统、编译器、架构和构建类型生成二进制包的方法,讲解Profile、Settings、Options及Package ID的作用,帮助管理不同平台和编译环境下的包版本。

2026.09.22

0

13

Conan私有仓库搭建教程
Conan私有仓库搭建教程

本专题系统的讲解Conan私有仓库的搭建流程,涵盖仓库服务部署、存储目录配置、用户认证、权限划分和远程地址添加,并介绍内部C++依赖包的上传、下载及版本维护方法。

2026.09.22

0

19

loomy官网入口地址合集
loomy官网入口地址合集

本专题汇总了 Loomy 桌面 AI 助理的官方入口地址合集及使用指南。提供 macOS 与 Windows 客户端下载 。Loomy 是讯飞推出的桌面级 AI 工作搭子,支持文件整理、数据分析、网页操作及通过飞书/钉钉远程操控电脑,助你高效完成本地办公任务 。

2026.09.22

0

19

NumPy常见函数使用方法
NumPy常见函数使用方法

本专题整理 NumPy 常见函数使用方法相关教程,覆盖函数大全、参数用法、数组运算、统计聚合、排序处理、where 条件筛选、linspace 创建数列等常用场景,帮助读者快速掌握 NumPy 函数调用思路和实际数据处理技巧。

2026.09.22

0

21

NumPy性能优化版本更新与常见报错排查
NumPy性能优化版本更新与常见报错排查

本专题整理 NumPy 性能优化、版本更新与常见报错排查相关教程,覆盖向量化计算、广播性能、内存布局、NumPy 2.0 升级、版本兼容冲突、安装导入报错、dtype 溢出、矩阵运算异常和 broadcasting 报错修复,帮助读者系统掌握 NumPy 性能调优与问题定位方法。

2026.09.22

0

25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
文心快码功能介绍
文心快码功能介绍

共0课时 | 0人学习

文心快码Agent使用手册
文心快码Agent使用手册

共0课时 | 0人学习

文心快码产品文档
文心快码产品文档

共0课时 | 0人学习