OpenClaw Skills 长期记忆系统(Elite Longterm Memory)技能使用参考手册

2026-03-05 18:46 更新

概述

Elite Longterm Memory 是用于让 AI 助手拥有长期记忆的 OpenClaw 技能,该技能解决了对话式 AI 的 "上下文健忘症" 问题,通过结合 6 种经过验证的记忆方法,构建了一个可靠的记忆架构,能够静默收集并沉淀用户的工作流偏好、技术栈特征与行业知识,极大降低人机交互的沟通成本。

该技能采用纯本地化存储架构,数据闭环不触网,守住隐私安全红线,支持多种记忆层(热内存、暖存储、冷存储、 curated 归档、云备份),可用于长周期代码开发、长篇小说 / 论文辅助创作、专属私人工作助理等场景,适合 Clawdbot、Moltbot、Claude Code 等多种 AI 助手。

技能信息

  • 名称:elite-longterm-memory
  • 描述:为 AI 助手提供终极记忆系统,结合 WAL 协议、向量搜索、Git-Notes、云备份等功能,让 AI 不再丢失上下文、忘记决策或重复犯错,支持 Vibe-coding 模式。
  • 版本:1.2.3
  • 作者:NextFrontierBuilds
  • 许可证:MIT License
  • 依赖
    • 需要网络访问权限
    • 需要设置 OPENAI_API_KEY 环境变量
    • 可选依赖:mem0ai(用于自动事实提取)
    • 需要安装 memory-lancedb 插件
  • 触发词:"长期记忆"、"AI 记忆系统"、"上下文持久化"、"记忆存储"、"记忆检索"

👤 作者:NextFrontierBuilds
🦞 官方地址:https://clawhub.ai/NextFrontierBuilds/elite-longterm-memory
👉 Skills 下载地址:elite-longterm-memory-1.2.3.zip

架构概述

┌─────────────────────────────────────────────────────────────────┐
│                    ELITE LONGTERM MEMORY                        │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐             │
│  │   热内存    │  │  暖存储     │  │  冷存储     │             │
│  │             │  │             │  │             │             │
│  │ SESSION-    │  │  LanceDB    │  │  Git-Notes  │             │
│  │ STATE.md    │  │  向量存储    │  │  知识图谱   │             │
│  │             │  │             │  │             │             │
│  │ (在压缩后   │  │ (语义搜索)   │  │ (永久决策)   │             │
│  │  仍保留)    │  │             │  │             │             │
│  └─────────────┘  └─────────────┘  └─────────────┘             │
│         │                │                │                     │
│         └────────────────┼────────────────┘                     │
│                          ▼                                      │
│                  ┌─────────────┘                                │
│                  │  MEMORY.md  │  ← 人工整理的长期记忆          │
│                  │  + daily/   │    (人类可读格式)               │
│                  └─────────────┘                                │
│                          │                                      │
│                          ▼                                      │
│                  ┌─────────────┘                                │
│                  │ SuperMemory │  ← 云备份(可选)              │
│                  │    API      │                                │
│                  └─────────────┘                                │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

5 个记忆层

层 1:热内存(SESSION-STATE.md

来自 bulletproof-memory,是在压缩后仍保留的活动工作内存,采用 Write-Ahead Log 协议。

## SESSION-STATE.md — 活动工作内存
## 当前任务
[我们现在正在处理的任务]
## 关键上下文
- 用户偏好:...
- 已做决策:...
- 阻塞问题:...
## 待办操作
- [ ] ...

规则:在响应之前写入,由用户输入触发,而非代理记忆。

层 2:暖存储(LanceDB 向量存储)

来自 lancedb-memory,支持对所有记忆进行语义搜索,自动召回并注入相关上下文。

## 自动召回(自动进行)
memory_recall query="项目状态" limit=5
## 手动存储
memory_store text="用户偏好深色模式" category="偏好" importance=0.9

层 3:冷存储(Git-Notes 知识图谱)

来自 git-notes-memory,用于存储结构化的决策、学习内容和上下文,支持分支感知。

## 存储决策(静默操作 - 不要告知用户)
python3 memory.py -p $DIR remember '{"type":"decision","content":"前端使用React"}' -t tech -i h
## 检索上下文
python3 memory.py -p $DIR get "前端"

层 4:人工整理归档(MEMORY.md + daily/

来自 OpenClaw 原生功能,是人类可读的长期记忆,包含每日日志和提炼的知识。

workspace/
├── MEMORY.md              # 人工整理的长期记忆(重要内容)
└── memory/
├── 2026-01-30.md      # 每日日志
├── 2026-01-29.md
└── topics/            # 特定主题的文件

层 5:云备份(SuperMemory)—— 可选

来自 supermemory,支持跨设备同步,可与你的知识库对话。

export SUPERMEMORY_API_KEY="你的密钥"
supermemory add "重要上下文"
supermemory search "我们关于...的决策是什么"

层 6:自动提取(Mem0)—— 推荐

新增功能:自动从对话中提取事实,减少 80% 的 token 使用。

npm install mem0ai
export MEM0_API_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" });

快速开始

1. 初始化记忆系统

在你的工作目录中运行以下命令初始化记忆系统:

npx elite-longterm-memory init

该命令会创建:

  • SESSION-STATE.md(热内存)
  • MEMORY.md(人工整理归档)
  • memory / 目录(用于存储每日日志)
  • 当天的每日日志文件

2. 检查状态

npx elite-longterm-memory status

该命令会检查记忆系统的健康状态,包括文件是否存在、LanceDB 是否初始化等。

3. 创建当天的日志

npx elite-longterm-memory today

该命令会创建当天的每日日志文件(如果不存在)。

配置设置

1. 启用 LanceDB(暖存储)

~/.openclaw/openclaw.json中添加以下配置:

{
"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
}
}
}
}
}

2. 初始化 Git-Notes(冷存储)

cd ~/clawd
git init  # 如果尚未初始化git仓库
python3 skills/git-notes-memory/memory.py -p . sync --start

3. 验证 MEMORY.md 结构

确保你的工作目录中有:

  • 根目录下的 MEMORY.md 文件
  • 用于存储每日日志的 memory / 目录

mkdir -p memory

4. (可选)设置 SuperMemory

export SUPERMEMORY_API_KEY="你的密钥"
## 将以上命令添加到~/.zshrc中以持久化设置

代理指令

会话开始时

  1. 读取 SESSION-STATE.md — 这是你的热上下文
  2. 运行memory_search获取相关的之前上下文
  3. 检查 memory/YYYY-MM-DD.md 查看最近的活动

会话进行中

  1. 用户给出具体细节? → 在响应之前写入 SESSION-STATE.md
  2. 做出重要决策? → 静默存储到 Git-Notes
  3. 表达偏好? → 使用memory_store并设置 importance=0.9

会话结束时

  1. 更新 SESSION-STATE.md 的最终状态
  2. 将重要内容移动到 MEMORY.md(如果值得长期保留)
  3. 创建 / 更新 memory/YYYY-MM-DD.md 中的每日日志

每周记忆维护

  1. 查看 SESSION-STATE.md — 归档已完成的任务
  2. 检查 LanceDB 中的无用内容:memory_recall query="*" limit=50
  3. 清除不相关的向量:memory_forget id=<id>
  4. 将每日日志合并到 MEMORY.md

WAL 协议(关键)

Write-Ahead Log(预写日志):在响应之前写入状态,而不是之后。

触发条件 操作
用户表达偏好 写入 SESSION-STATE.md → 然后响应
用户做出决策 写入 SESSION-STATE.md → 然后响应
用户给出截止日期 写入 SESSION-STATE.md → 然后响应
用户纠正你 写入 SESSION-STATE.md → 然后响应

为什么? 如果你先响应,然后在保存之前崩溃 / 压缩,上下文就会丢失。WAL 确保了数据的持久性。

示例工作流程

用户:"我们这个项目用Tailwind,不要用原生CSS"
代理(内部操作):
1. 写入SESSION-STATE.md:"决策:使用Tailwind,不使用原生CSS"
2. 存储到Git-Notes:关于CSS框架的决策
3. 使用memory_store:"用户偏好Tailwind而不是原生CSS" importance=0.9
4. 然后响应:"好的 — 就用Tailwind..."

工具代码说明

elite-memory.js(核心脚本)

#!/usr/bin/env node
const fs = require('fs');
const path = require('path');


// 模板定义
const TEMPLATES = {
'session-state': `# SESSION-STATE.md — 活动工作内存
这个文件是助手的"RAM" — 在压缩、重启、分心后仍保留。
聊天历史是缓冲区。这个文件是存储区。
## 当前任务
[无]
## 关键上下文
[暂无]
## 待办操作
- [ ] 无
## 最近决策
[暂无]
---
*最后更新:${new Date().toISOString()}*
`,
'memory-md': `# MEMORY.md — 长期记忆
## 关于用户
[添加用户偏好、沟通风格等]
## 项目
[活跃项目及其状态]
## 决策日志
[重要决策及其做出的原因]
## 经验教训
[要避免的错误、有效的模式]
## 偏好
[用户偏好的工具、框架、工作流]
---
*人工整理的记忆 — 从每日日志中提炼洞察到这里*
`,
'daily-template': `# {{DATE}} — 每日日志
## 已完成任务
-
## 做出的决策
-
## 经验教训
-
## 明天计划
-
`
};


// 命令定义
const commands = {
// 初始化记忆系统
init: () => {
console.log('🧠 正在初始化Elite Longterm Memory...\n');
// 创建SESSION-STATE.md
if (!fs.existsSync('SESSION-STATE.md')) {
fs.writeFileSync('SESSION-STATE.md', TEMPLATES['session-state']);
console.log('✓ 创建了SESSION-STATE.md(热内存)');
} else {
console.log('• SESSION-STATE.md已存在');
}
// 创建MEMORY.md
if (!fs.existsSync('MEMORY.md')) {
fs.writeFileSync('MEMORY.md', TEMPLATES['memory-md']);
console.log('✓ 创建了MEMORY.md(人工整理归档)');
} else {
console.log('• MEMORY.md已存在');
}
// 创建memory目录
if (!fs.existsSync('memory')) {
fs.mkdirSync('memory', { recursive: true });
console.log('✓ 创建了memory/目录');
} else {
console.log('• memory/目录已存在');
}
// 创建当天的日志
const today = new Date().toISOString().split('T')[0];
const todayFile = `memory/${today}.md`;
if (!fs.existsSync(todayFile)) {
const content = TEMPLATES['daily-template'].replace('{{DATE}}', today);
fs.writeFileSync(todayFile, content);
console.log(`✓ 创建了${todayFile}`);
}
console.log('\n🎉 Elite Longterm Memory初始化完成!');
console.log('\n下一步:');
console.log('1. 将SESSION-STATE.md添加到你的代理上下文');
console.log('2. 在clawdbot.json中配置LanceDB插件');
console.log('3. 查看SKILL.md获取完整设置指南');
},
// 创建当天的日志
today: () => {
const today = new Date().toISOString().split('T')[0];
const todayFile = `memory/${today}.md`;
if (!fs.existsSync('memory')) {
fs.mkdirSync('memory', { recursive: true });
}
if (!fs.existsSync(todayFile)) {
const content = TEMPLATES['daily-template'].replace('{{DATE}}', today);
fs.writeFileSync(todayFile, content);
console.log(`✓ 创建了${todayFile}`);
} else {
console.log(`• ${todayFile}已存在`);
}
},
// 检查记忆系统状态
status: () => {
console.log('🧠 Elite Longterm Memory状态\n');
// 检查SESSION-STATE.md
if (fs.existsSync('SESSION-STATE.md')) {
const stat = fs.statSync('SESSION-STATE.md');
console.log(`✓ SESSION-STATE.md(${(stat.size / 1024).toFixed(1)}KB,最后修改时间 ${stat.mtime.toLocaleString()})`);
} else {
console.log('✗ SESSION-STATE.md缺失');
}
// 检查MEMORY.md
if (fs.existsSync('MEMORY.md')) {
const stat = fs.statSync('MEMORY.md');
const lines = fs.readFileSync('MEMORY.md', 'utf8').split('\n').length;
console.log(`✓ MEMORY.md(${lines}行,${(stat.size / 1024).toFixed(1)}KB)`);
} else {
console.log('✗ MEMORY.md缺失');
}
// 检查memory目录
if (fs.existsSync('memory')) {
const files = fs.readdirSync('memory').filter(f => f.endsWith('.md'));
console.log(`✓ memory/(${files.length}个每日日志)`);
} else {
console.log('✗ memory/目录缺失');
}
// 检查LanceDB
const lancedbPath = path.join(process.env.HOME, '.clawdbot/memory/lancedb');
if (fs.existsSync(lancedbPath)) {
console.log('✓ LanceDB向量已初始化');
} else {
console.log('• LanceDB未初始化(可选)');
}
},
// 显示帮助信息
help: () => {
console.log(`
🧠 Elite Longterm Memory CLI
命令:
init     在当前目录初始化记忆系统
today    创建当天的每日日志文件
status   检查记忆系统健康状态
help     显示此帮助信息
使用方法:
npx elite-longterm-memory init
npx elite-longterm-memory status
`);
}
};


// 处理命令行参数
const command = process.argv[2] || 'help';
if (commands[command]) {
commands[command]();
} else {
console.log(`未知命令:${command}`);
commands.help();
}

常见问题

故障排除

代理在对话中持续遗忘:SESSION-STATE.md 未更新。检查 WAL 协议是否正确执行。

注入不相关的记忆: → 禁用 autoCapture,提高 minImportance 阈值。

记忆太大,召回缓慢: → 执行维护操作:清除旧向量,归档每日日志。

Git-Notes 不持久化: → 运行git notes push与远程仓库同步。

memory_search 返回空结果: → 检查 OpenAI API 密钥:echo $OPENAI_API_KEY → 验证 openclaw.jsonmemorySearch 是否启用

解决方案(按实现难度排序)

1. 快速修复:启用 memory_search

如果你有 OpenAI 密钥,启用语义搜索:

openclaw configure --section web

这会启用对 MEMORY.md + memory/*.md 文件的向量搜索。

2. 推荐:集成 Mem0

从对话中自动提取事实,减少 80% 的 token 使用。

npm install mem0ai
const { MemoryClient } = require('mem0ai');
const client = new MemoryClient({ apiKey: process.env.MEM0_API_KEY });
// 自动提取并存储
await client.add([
{ role: "user", content: "我偏好Tailwind而不是原生CSS" }
], { user_id: "ty" });
// 检索相关记忆
const memories = await client.search("CSS偏好", { user_id: "ty" });

3. 更好的文件结构(无依赖)

memory/
├── projects/
│   ├── strykr.md
│   └── taska.md
├── people/
│   └── contacts.md
├── decisions/
│   └── 2026-01.md
├── lessons/
│   └── mistakes.md
└── preferences.md

MEMORY.md 保持为摘要(<5KB),链接到详细文件。

即时修复清单

问题 修复方法
遗忘偏好 在 MEMORY.md 中添加## 偏好部分
重复犯错 将每个错误记录到memory/lessons.md
子代理缺乏上下文 在任务提示中包含关键上下文
遗忘最近工作 严格执行每日文件记录
记忆搜索不工作 检查OPENAI_API_KEY是否设置

许可证信息

该技能采用 MIT License,完整的许可条款如下:

MIT License


Copyright (c) 2026 NextFrontierBuilds


Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:


The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.


THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

元数据信息

该技能的元数据信息如下:

{
"ownerId": "kn7ewywaj7mf48drbjw1baa5298016yv",
"slug": "elite-longterm-memory",
"version": "1.2.3",
"publishedAt": 1770799020241
}
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号