长期记忆系统:给 AI 代理加一层不丢上下文的记忆

前言

AI 代理最常见的故障不是算错,而是「忘了」。上下文窗口被压缩后,之前用户说过的偏好、定过的方案、踩过的坑都会一起消失,表现为代理反复问同一个问题、推翻已经确认的决定、重复犯同样的错。靠加大上下文窗口只能缓解,不能解决:长会话必然触发压缩,历史越长检索越贵。

下面介绍的 Skill「Elite Longterm Memory」就是针对这个问题的一套完整方案。它把六种已经单独验证过的记忆方法(会话状态文件、向量库、Git 笔记、策展归档、云端备份、自动事实提取)拼成一个分层架构,覆盖从「当前这一刻」到「永久保存」的全链路。

这是什么

一句话定位:一个给 AI 代理用的长期记忆系统,以 SKILL.md 形式分发,让代理在压缩、重启、跨会话的情况下仍能记住任务状态、用户偏好和已确认的决定。

  • 出品方:Next Frontier AI,发布者 nextfrontierbuilds,坐标 @clawhub_nextfrontierbuilds/elite-longterm-memory
  • 来源:clawhub,上游仓库 https://clawhub.ai/nextfrontierbuilds/elite-longterm-memory
  • 版本:1.2.3,分类 ai-agent,标签 requires_api_key=true
  • 官方页面列出的统计:评分 100000、下载 87991、安装 2264(以 ClawHub 页面为准)
  • 适用对象:官方说明面向 Cursor、Claude、ChatGPT、Copilot 等代理,实现方式是把记忆规则写进代理的工作区文件与指令,不依赖特定客户端插件

它解决的核心问题是:会话内上下文会丢失,而「想起来」这件事不能依赖模型自己记。

核心功能:六层记忆架构

官方架构图把系统分成六层,热度从上到下递减,写入成本也越来越高,因此每条信息应该落在对应热度的层,而不是所有东西都往同一个文件里堆。

1、HOT RAM(会话状态热内存)。文件是工作区里的 SESSION-STATE.md,承载当前任务、关键上下文、待办和最近决定。这一层的目标是扛住 compaction:代理每次回复前先把状态写进去,而不是回复后再写。写法来自 bulletproof-memory 项目,遵循 WAL(Write-Ahead Log)协议。

2、WARM STORE(向量库温存储)。用 LanceDB 存语义向量,提供跨记忆的语义检索,代理在会话启动时自动召回相关内容。这一层来自 lancedb-memory,写入用 memory_store,读取用 memory_recall。

3、COLD STORE(Git 笔记冷存储)。用 git-notes 存结构化的决定和知识,按分支隔离,属于永久层。写入和读取走 memory.py 脚本。

4、CURATED ARCHIVE(策展归档)。工作区里的 MEMORY.md 加 memory/ 目录(按天记录 daily log 和 topic 文件),是写给人看的长期记忆,代理定期把日常日志里值得长期保留的内容蒸馏进去。这一层是 OpenClaw 原生约定。

5、CLOUD BACKUP(云端备份,可选)。SuperMemory API,做跨设备同步,官方说明里标为 optional。

6、AUTO-EXTRACTION(自动事实提取,官方标为推荐)。集成 Mem0,自动从对话里提取事实并去重更新已有记忆。官方页面称相比原始历史可减少 80% 的 token 消耗,这是官方说法,实际效果取决于对话内容和提取策略。

安装与启用

安装命令来自 ClawHub 官方页面,适用于 OpenClaw 工具链:

openclaw skills install @nextfrontierbuilds/elite-longterm-memory

官方页面同时提供 npx skills 的入口。安装后需要在工作区落地一套文件和配置,官方给出的 Quick Setup 是五步:

1、创建 SESSION-STATE.md(热内存文件):

cat > SESSION-STATE.md << 'EOF'
# SESSION-STATE.md — Active Working Memory

This file is the agent's "RAM" — survives compaction, restarts, distractions.

## Current Task
[None]

## Key Context
[None yet]

## Pending Actions
- [ ] None

## Recent Decisions
[None yet]

---
*Last updated: [timestamp]*
EOF

这一步建立热内存文件,代理之后会持续读写它。

2、在 ~/.openclaw/openclaw.json 中启用 LanceDB(温存储):

{
  "memorySearch": {
    "enabled": true,
    "provider": "openai",
    "sources": ["memory"],
    "minScore": 0.3,
    "maxResults": 10
  },
  "plugins": {
    "entries": {
      "memory-lancedb": {
        "enabled": true,
        "config": {
          "autoCapture": false,
          "autoRecall": true,
          "captureCategories": ["preference", "decision", "fact"],
          "minImportance": 0.7
        }
      }
    }
  }
}

memorySearch 负责向量检索的开关与召回范围,memory-lancedb 插件负责向量的自动召回和按类别捕获。provider 用的是 openai,需要有效 API key。

3、初始化 Git 笔记冷存储:

cd ~/clawd
git init   # if not already
python3 skills/git-notes-memory/memory.py -p . sync --start

4、确认 MEMORY.md 结构,确保工作区根目录有 MEMORY.md,并创建 memory/ 目录存放日常日志:

mkdir -p memory

5、(可选)配置 SuperMemory 云端备份:

export SUPERMEMORY_API_KEY="your-key"
# Add to ~/.zshrc for persistence

Mem0 这一层需要另外安装依赖并配置 key:

npm install mem0ai
export MEM0_API_KEY="your-key"
const { MemoryClient } = require('mem0ai');
const client = new MemoryClient({ apiKey: process.env.MEM0_API_KEY });
await client.add(messages, { user_id: "user123" });
const memories = await client.search(query, { user_id: "user123" });

代理侧的规则写进 AGENTS.md 或等价指令文件。官方给出的代理指令分三个时机:会话开始时读 SESSION-STATE.md、跑 memory_search 召回相关历史、看当天的 memory/YYYY-MM-DD.md;会话中遇到具体细节、重要决定、用户偏好时按 WAL 协议先写再答;会话结束时更新 SESSION-STATE.md 终态、把值得长期保留的条目挪进 MEMORY.md、写当日日志。

典型用法

以一次技术选型对话为例,官方给出的内部流程是:

用户说「这个项目用 Tailwind,不用原生 CSS」。代理内部依次执行:

1. Write to SESSION-STATE.md: "Decision: Use Tailwind, not vanilla CSS"
2. Store in Git-Notes: decision about CSS framework
3. memory_store: "User prefers Tailwind over vanilla CSS" importance=0.9
4. THEN respond: "Got it — Tailwind it is..."

第 4 步才回复用户,前 3 步全部在写。这就是 WAL 协议的要点:如果先回复再保存,一旦在保存前崩溃或触发压缩,这条上下文就丢了;先写后答保证持久性。官方对触发场景的规定是:用户表达偏好、做出决定、给出截止时间、纠正代理时,都必须先写 SESSION-STATE.md 再回答。

日常读写用的三个命令:

# 自动召回(默认自动发生)
memory_recall query="project status" limit=5

# 手动写入
memory_store text="User prefers dark mode" category="preference" importance=0.9

# 写入一条决定到 Git-Notes(静默,不向用户播报)
python3 memory.py -p $DIR remember '{"type":"decision","content":"Use React for frontend"}' -t tech -i h

# 取回上下文
python3 memory.py -p $DIR get "frontend"

维护命令用于定期清理:

# 审计向量记忆
memory_recall query="*" limit=50

# 清除无关向量
memory_forget id=<id>

# 导出 Git-Notes
python3 memory.py -p . export --format json > memories.json

# 检查记忆健康度
du -sh ~/.openclaw/memory/
wc -l MEMORY.md

官方建议每周做一次记忆卫生:归档 SESSION-STATE.md 里已完成的任务、检查 LanceDB 里的垃圾向量并清除、把日常日志合并进 MEMORY.md。

适用场景与注意事项

适合:在 Cursor、Claude、Codex 等代理上做长期项目,上下文经常被压缩或跨会话交接;希望用纯文件 + 脚本落地、不依赖特定客户端插件的团队;工作区已经用 git 管理、能直接挂上 git-notes 的项目。

注意:

1、requires_api_key=true 是事实标签,向量检索走 openai provider,冷存储和自动提取依赖 git-notes-memory 脚本、Mem0 和 SuperMemory,都需要各自配置,缺任何一个只会让对应层失效,不影响其他层。
2、SuperMemory 是可选层,不做跨设备同步可以跳过。
3、记忆不生效时官方列了排查表:全部遗忘通常是 memory_search 未启用;文件没被加载通常是代理没有读取记忆的规则,需要补进 AGENTS.md;事实没被捕获需要启用自动提取或手动记录;子代理拿不到上下文需要在任务 prompt 里显式传;重复犯错需要把教训写进 memory/lessons.md。
4、Git 笔记层是分支感知的,把记忆写在错误的分支上会导致查不到,合并分支时要留意。
5、MEMORY.md 是给人和代理共同阅读的策展层,日常日志如果不蒸馏进去,长期记忆只会膨胀不会沉淀。

结尾

这套 Skill 的价值在于把「记不住」从一个模型局限变成一套可操作的工程流程:热内存扛压缩、向量库管检索、Git 笔记管永久、策展归档管可读、云端备份管同步,外加 WAL 协议保证写在前、丢不掉。每一层的实现都是常见工具,难点不在工具本身,而在代理何时写、写哪一层、什么时候清理。

官方地址:

  • SkillHub 页面:https://www.skillhub.cn/skills/clawhub_nextfrontierbuilds/elite-longterm-memory
  • 上游仓库:https://clawhub.ai/nextfrontierbuilds/elite-longterm-memory
  • 安装入口:https://api.skillhub.cn/zcwl/elite-longterm-memory
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜