OpenClaw 本地记忆系统完整指南
目录
概述
OpenClaw 的记忆系统由两个核心插件组成,分别解决不同层面的问题:
| 问题 | 解决方案 | 插件 |
|---|---|---|
| 上下文窗口溢出 | DAG 压缩摘要 | lossless-claw |
| 跨会话记忆丢失 | 持久化存储 + 语义检索 | memos-local |
架构流程图
┌─────────────────────────────────────────────────────────────┐
│ 记忆系统架构 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ lossless-claw (LCM) │ │
│ │ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ 原始消息 │ → │ 摘要节点 │ → 上下文注入 │ │
│ │ │ (SQLite) │ │ (DAG 结构) │ │ │
│ │ └─────────────┘ └─────────────┘ │ │
│ │ │ │
│ │ 触发条件: contextThreshold (默认 75%) │ │
│ │ 核心能力: 无损压缩 + 按需展开 │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ memos-local (MemOS) │ │
│ │ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ 语义块 │ → │ 任务摘要 │ → 技能演化 │ │
│ │ │ (Vector+FTS)│ │ (LLM生成) │ │ │
│ │ └─────────────┘ └─────────────┘ │ │
│ │ │ │
│ │ 触发条件: 每轮对话自动捕获 │ │
│ │ 核心能力: 长期记忆 + 任务组织 + 团队共享 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘Lossless-Claw 插件
核心功能
Lossless Context Management (LCM) 是基于 Voltropy LCM 论文 实现的无损上下文管理插件。
核心特性:
| 特性 | 说明 |
|---|---|
| 无损压缩 | 原始消息完整保存到 SQLite,永不丢失 |
| DAG 摘要 | 多层级摘要结构,自动凝结成更高层节点 |
| 按需展开 | 通过 lcm_expand 随时恢复原始对话细节 |
| 全文搜索 | lcm_grep 支持正则和全文检索 |
| 自动触发 | 上下文达到阈值自动压缩,无需手动干预 |
安装方式
bash
# 方式一:通过 OpenClaw CLI 安装(推荐)
openclaw plugins install @martian-engineering/lossless-claw
# 方式二:从本地源码安装
git clone https://github.com/martian-engineering/lossless-claw.git
openclaw plugins install --link ./lossless-claw配置说明
在 ~/.openclaw/openclaw.json 中配置:
json
{
"plugins": {
"slots": {
"contextEngine": "lossless-claw"
},
"entries": {
"lossless-claw": {
"enabled": true,
"config": {
"contextThreshold": 0.75,
"freshTailCount": 32,
"incrementalMaxDepth": -1,
"summaryModel": "gpt-4o-mini"
}
}
}
}
}核心参数说明
| 参数 | 默认值 | 说明 |
|---|---|---|
contextThreshold | 0.75 | 上下文使用率达到 75% 时触发压缩 |
freshTailCount | 32 | 保护最近 32 条消息不被压缩 |
incrementalMaxDepth | 0 | 增量压缩深度(-1 = 无限) |
leafMinFanout | 8 | 叶子节点最少合并消息数 |
summaryModel | - | 摘要生成模型(可用更便宜的模型) |
工具列表
| 工具 | 功能 | 使用场景 |
|---|---|---|
lcm_grep | 搜索压缩历史 | 查找历史对话中的关键词 |
lcm_expand | 展开摘要节点 | 恢复压缩前的原始内容 |
lcm_describe | 查看摘要详情 | 检查摘要内容和层级关系 |
数据存储
~/.openclaw/lcm.db # SQLite 数据库
├── messages # 原始消息(永不丢失)
├── summaries # 摘要节点(DAG 结构)
└── conversations # 会话元数据MemOS Local 插件
核心功能
MemOS Local 是一个完整的长期记忆系统,提供语义检索、任务摘要和技能演化能力。
核心特性:
| 特性 | 说明 |
|---|---|
| 自动捕获 | 每轮对话自动存入 SQLite + 向量索引 |
| 混合检索 | FTS5 关键词 + 向量语义双重搜索 |
| 任务组织 | 自动识别任务边界,生成结构化摘要 |
| 技能演化 | 从任务中提炼可复用的技能指南 |
| 团队共享 | Hub-Client 架构支持多智能体协作 |
| Memory Viewer | Web UI 管理记忆、任务、技能 |
安装方式
bash
# 方式一:一键安装脚本(推荐)
# macOS / Linux
curl -fsSL https://cdn.memtensor.com.cn/memos-local-openclaw/install.sh | bash
# Windows PowerShell
powershell -c "irm https://cdn.memtensor.com.cn/memos-local-openclaw/install.ps1 | iex"
# 方式二:通过 OpenClaw CLI
openclaw plugins install @memtensor/memos-local-openclaw-plugin配置说明
jsonc
{
"agents": {
"defaults": {
// IMPORTANT: Disable OpenClaw's built-in memory to avoid conflicts
"memorySearch": {
"enabled": false
}
}
},
"plugins": {
"slots": {
"memory": "memos-local-openclaw-plugin"
},
"entries": {
"memos-local-openclaw-plugin": {
"enabled": true,
"config": {
"embedding": {
"provider": "openai_compatible",
"apiKey": "YOUR_API_KEY",
"endpoint": "https://api.siliconflow.cn/v1",
"model": "BAAI/bge-m3"
}
}
}
}
}
}⚠️ 重要: 必须设置
agents.defaults.memorySearch.enabled = false
工具列表
| 工具 | 功能 | 使用场景 |
|---|---|---|
memory_search | 语义搜索记忆 | 查找历史对话内容 |
memory_get | 获取完整原文 | 验证搜索结果 |
task_summary | 获取任务摘要 | 查看完整任务记录 |
skill_get | 获取技能指南 | 获取可复用的操作指南 |
memory_viewer | 获取 Viewer URL | 打开 Web 管理界面 |
两者协同使用
分工协作
单次会话内 (lossless-claw):
对话 → 消息积累 → 达到阈值 → DAG压缩 → 摘要注入
跨会话 (memos-local):
每轮对话 → 自动捕获 → 语义索引 → 任务组织 → 新会话召回检索策略
| 场景 | 使用工具 | 说明 |
|---|---|---|
| 查找当前会话历史 | lcm_grep | 搜索已压缩的对话 |
| 查找跨会话记忆 | memory_search | 搜索所有历史对话 |
| 恢复压缩内容 | lcm_expand | 展开摘要获取原始消息 |
| 获取任务上下文 | task_summary | 查看完整任务记录 |
省 Token 验证方案
方案一:LCM 压缩效率验证
验证脚本:
bash
#!/bin/bash
# lcm_token_savings.sh
DB="$HOME/.openclaw/lcm.db"
if [ -f "$DB" ]; then
MSG_COUNT=$(sqlite3 "$DB" "SELECT COUNT(*) FROM messages WHERE role != 'system'" 2>/dev/null || echo "0")
SUMMARY_COUNT=$(sqlite3 "$DB" "SELECT COUNT(*) FROM summaries" 2>/dev/null || echo "0")
ORIGINAL_TOKENS=$((MSG_COUNT * 500))
SUMMARY_TOKENS=$((SUMMARY_COUNT * 200))
SAVED=$((ORIGINAL_TOKENS - SUMMARY_TOKENS))
echo "原始消息数: $MSG_COUNT"
echo "摘要节点数: $SUMMARY_COUNT"
echo "估算节省 tokens: $SAVED"
else
echo "LCM 数据库未找到"
fi方案二:MemOS 长期记忆验证
验证脚本:
bash
#!/bin/bash
# memos_token_savings.sh
DB="$HOME/.openclaw/memos-local/memos.db"
if [ -f "$DB" ]; then
CHUNK_COUNT=$(sqlite3 "$DB" "SELECT COUNT(*) FROM chunks" 2>/dev/null || echo "0")
TASK_COUNT=$(sqlite3 "$DB" "SELECT COUNT(*) FROM tasks" 2>/dev/null || echo "0")
SEARCH_COUNT=$(grep -c "memory_search" ~/.openclaw/logs/gateway.log 2>/dev/null || echo "0")
echo "记忆块数量: $CHUNK_COUNT"
echo "任务数量: $TASK_COUNT"
echo "搜索调用次数: $SEARCH_COUNT"
echo "预估节省 tokens: $((SEARCH_COUNT * 1500))"
else
echo "MemOS 数据库未找到"
fiToken 节省估算
| 场景 | 节省比例 | 说明 |
|---|---|---|
| LCM 压缩 | 70-90% | 摘要代替原始消息 |
| MemOS 召回 | 50-75% | 避免重复解释背景 |
最佳实践
配置建议
json
{
"lossless-claw": {
"contextThreshold": 0.75,
"freshTailCount": 32,
"summaryModel": "gpt-4o-mini"
},
"memos-local": {
"embedding": { "provider": "local" },
"summarizer": { "model": "gpt-4o-mini" }
}
}使用策略
- 长对话: 依赖 LCM 自动压缩
- 跨会话复用: 使用
memory_search - 重复性任务: 查看已有技能
使用硅基流动 BAAI/bge-m3 模型
支持情况
MemOS 的 openai_compatible provider 支持任何兼容 OpenAI Embedding API 的服务,包括硅基流动的 BAAI/bge-m3。
配置方案
方式一:通过 .env 文件(推荐)
在 ~/.openclaw/extensions/memos-local-openclaw-plugin/.env 中设置:
bash
EMBEDDING_PROVIDER=openai_compatible
EMBEDDING_API_KEY=sk-jdgtxwicvnqecuraesdkvrcyetsxxjfpmjaqmginhcvsfmqn
EMBEDDING_ENDPOINT=https://api.siliconflow.cn/v1
EMBEDDING_MODEL=BAAI/bge-m3方式二:通过 OpenClaw 配置
在 ~/.openclaw/openclaw.json 的插件配置中添加:
json
{
"plugins": {
"entries": {
"memos-local-openclaw-plugin": {
"enabled": true,
"config": {
"embedding": {
"provider": "openai_compatible",
"apiKey": "sk-jdgtxwicvnqecuraesdkvrcyetsxxjfpmjaqmginhcvsfmqn",
"endpoint": "https://api.siliconflow.cn/v1",
"model": "BAAI/bge-m3"
}
}
}
}
}
}参数说明
| 参数 | 值 | 说明 |
|---|---|---|
provider | openai_compatible | 使用 OpenAI 兼容接口 |
endpoint | https://api.siliconflow.cn/v1 | 硅基流动国内端点 |
model | BAAI/bge-m3 | 模型全称,注意大小写 |
apiKey | 你的 SiliconFlow API Key | 从控制台获取 |
模型特性
- 输出维度: 1024 维向量
- 语义质量: 中英文表现优秀,适合中文场景
- 速度: 国内访问 latency 低
- 成本: 按 SiliconFlow 计费标准
生效步骤
- 编辑配置(
.env或openclaw.json) - 重启网关:
openclaw gateway restart - 新对话会自动使用 bge-m3 生成 embeddings
- 验证:
sqlite3 ~/.openclaw/memos-local/memos.db "SELECT COUNT(*) FROM embeddings"
总结
| 维度 | Lossless-Claw | MemOS Local |
|---|---|---|
| 作用范围 | 单次会话内 | 跨所有会话 |
| 核心价值 | 延长会话长度 | 知识积累复用 |
| Token 节省 | 70-90% | 50-75% |
| 检索方式 | 全文搜索 | 语义搜索 |
两者结合使用可实现:
- ✅ 无限长度会话
- ✅ 永久记忆保存
- ✅ 智能知识复用
- ✅ 自动技能提炼
