跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

MemClawz 三层记忆架构集成指南:为 OpenClaw 注入持久记忆

MemClawz 通过三层架构解决 OpenClaw 智能体会话重启后上下文丢失的问题。QMD 提供毫秒级工作记忆,Zvec 实现混合向量与关键词搜索,因果图支持多跳推理。集成过程包含环境配置、服务启动及 AGENTS.md 协议调整,配合自动压缩与备份策略,显著降低延迟并提升检索精度。

猫巷少女发布于 2026/3/29更新于 2026/7/2134 浏览
MemClawz 三层记忆架构集成指南:为 OpenClaw 注入持久记忆

MemClawz 三层记忆架构集成指南

OpenClaw 智能体在每次会话启动时往往面临'全新'的状态,缺乏工作记忆来记住之前的上下文。虽然内置的 memory_search 工具支持语义搜索,但在处理活跃任务、精确关键词匹配及日志压缩方面存在明显局限。

MemClawz 引入了一套三层记忆架构,针对不同访问模式进行了优化,旨在让智能体从'金鱼记忆'进化到'过目不忘'。

核心优势对比

特性MemClawzOpenClaw 内置改进
工作记忆✅ QMD JSON❌ 无∞
搜索延迟<10ms~50ms5× 更快
关键词搜索✅ BM25❌ 仅语义更精准
自动索引✅ 60 秒内❌ 手动实时
自动压缩✅ 完成的任务归档❌ 无限增长零维护
API 密钥❌ 无需✅ 需本地嵌入100% 离线

架构设计

数据流逻辑

写入路径遵循即时更新与异步索引结合的原则:

智能体执行操作 ↓ 更新 QMD (current.json) ← 即时,<2ms
↓ OpenClaw 写入 SQLite ← 内置行为
↓ Watcher 检测新块 ← 每 60 秒轮询
↓ Watcher 发送至 Zvec /index ← 嵌入 + 更新
↓ Zvec HNSW 索引更新 ← <10ms 可搜索
↓ 因果图节点添加 ← 可选,带因果边

读取路径则采用分层降级策略,确保速度与准确性的平衡:

智能体需要回忆某事 ↓ 检查 QMD (current.json) ← <1ms,JSON 解析
├─ 找到 → 立即返回
↓ 搜索 Zvec (/search) ← <10ms,混合搜索
├─ 找到 → 返回结果
↓ 搜索因果图 (/graph/search) ← ~15ms,多跳推理
├─ 置信度低 → 遍历因果边
├─ 仍不足 → 关键词回退
↓ 回退到 memory_search ← ~50ms,语义搜索
└─ 返回所有可用结果
压缩路径

当会话结束或上下文填满时,系统会自动触发压缩流程:

会话结束或上下文填满 ↓ qmd-compact.py 运行
↓ 已完成任务 → 每日日志 (memory/YYYY-MM-DD.md)
↓ 活跃任务 → 保留在 QMD
↓ 每周心跳检查
↓ 重要决策 → MEMORY.md
↓ 旧日志 (>30 天) → archive/

核心组件详解

1. QMD — 快速记忆转储 (Quick Memory Dump)

位置: memory/qmd/current.json

这是结构化 JSON 工作记忆,记录智能体当前正在处理的内容。相比 Markdown,JSON 能让智能体即时解析而无需 LLM 解释。

存储内容:

  • 活跃任务(进度、决策、阻碍)
  • 实体追踪(提到的人、URL、凭证)
  • 决策日志('为什么选择 X 而非 Y')

示例结构:

{
  "session_id": "main-2026-03-07",
  "started_at": "2026-03-07T08:30:00Z",
  "tasks": [
    {
      "id": "hotel-search",
      "status": "active",
      "title": "查找利马索尔月租房",
      "context": "2 成人 +3 儿童,3 月 5 日–4 月 5 日",
      "progress": ["发送 20 份 RFP", "四季酒店回复:€1,360/晚"],
      "entities": ["四季酒店", "Amara 酒店"],
      "decisions": ["使用 AgentMail 而非个人邮箱"],
      "blockers": ["Royal Apollonia 邮件被退回"],
      "next": "等待回复,每 6 小时检查",
      "caused_by": ["research-ama-bench"],
      "confidence": 0.85
    }
  ],
  "entities_seen": {"people": ["Omer Levi"], "urls": ["clawz.org"]},
  "updated_at": "2026-03-07T20:00:00Z"
}

生命周期管理:

  • 会话开始: 读取 current.json 恢复感知
  • 工作中: 每次重要操作后更新 QMD(新任务、决策、完成)
  • 会话结束: 完成任务压缩到日志,活跃任务保留
  • 每周: 重要决策提升到 MEMORY.md
2. Zvec 服务器 — 混合向量 + 关键词搜索

位置: memclawz_server/server.py 端口: localhost:4010

技术栈基于 FastAPI + Uvicorn,底层使用阿里巴巴的 Zvec (HNSW 向量数据库),支持 768 维嵌入(兼容 OpenClaw 的 embeddinggemma-300m)。

搜索策略:

  • HNSW 向量搜索: 适用于语义相似性场景,如'查找酒店定价相关上下文'。
  • BM25 关键词搜索: 适用于精确匹配,如'查找 Four Seasons 提及'。
  • 混合评分: 默认采用 70% 向量 + 30% 关键词融合排序。
3. 自动索引 Watcher

位置: memclawz_server/watcher.py

Watcher 监控 OpenClaw 的 SQLite 记忆数据库,每 60 秒自动同步新块到 Zvec。关键特性包括无需手动重新索引、新记忆 60 秒内可搜索、批量处理(每次 50 块)以及错误重试机制。

4. 因果图 (Causality Graph) — v3.0 新增

位置: memclawz_server/causality_graph.py 存储: SQLite (~/.openclaw/zvec-memory/causality.db)

基于 AMA-Bench 研究发现,因果图结合工具增强检索能显著提升得分。边类型包括 Causality(有向)、Association(无向关联)和 Similarity(无向相似度)。

QMD 因果字段(v3.0):

{"id":"deploy-v3","status":"active","title":"部署 v3","caused_by":["research-ama-bench"],"causes":["testing-v3"],"confidence":0.85}
5. 压缩脚本

位置: scripts/qmd-compact.py

用于将已完成的 QMD 任务移动到日志文件,修剪工作记忆。支持手动运行、cron 定时或通过心跳检查钩子触发。

python3 scripts/qmd-compact.py
# 输出:Compacted 3 completed tasks to memory/2026-03-07.md
# 2 active tasks remain in QMD

安装与配置

前置条件
  • OpenClaw:已安装并运行
  • Python:3.10–3.13 (x86_64 Linux)
  • pip 包:zvec, numpy

注意: zvec 仅提供 x86_64 Linux wheels,暂不支持 macOS/ARM64/Windows。

一键安装
cd ~/.openclaw/workspace
git clone https://github.com/yoniassia/memclawz.git
cd memclawz && bash scripts/first-run.sh

首跑脚本会自动完成依赖安装、目录创建、服务启动、历史导入及验证注册。

后续命令:

# 重新同步历史
bash scripts/bootstrap-history.sh
# 验证安装
python3 scripts/verify.py
# 手动搜索
bash scripts/search.sh "查询内容"
环境变量
变量默认值说明
ZVEC_PORT4010HTTP 服务器端口
ZVEC_DATA~/.openclaw/zvec-memoryHNSW 索引存储目录
SQLITE_PATH~/.openclaw/memory/main.sqliteOpenClaw 记忆数据库
CAUSALITY_DB~/.openclaw/zvec-memory/causality.db因果图数据库
systemd 服务(生产环境)
# 安装服务
sudo cp systemd/zvec-server.service /etc/systemd/system/
sudo cp systemd/zvec-watcher.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now zvec-server zvec-watcher

# 查看状态
systemctl status zvec-server zvec-watcher

# 查看日志
journalctl -u zvec-server -f

API 参考

基础端点
方法路径说明示例
GET/health健康检查{"status": "ok", "engine": "zvec"}
GET/stats集合统计{"total_docs": 295, "dim": 768}
GET/info集合信息{"dim": 768, "collection_loaded": true}
GET/migrate一次性 SQLite 导入{"migrated": 1166, "skipped": 0}
搜索端点

POST /search

请求体包含 embedding 或 text(自动嵌入):

{"embedding":[0.1,0.2,...], "text":"可选,自动嵌入", "topk":5, "filter":"可选过滤表达式"}

响应返回匹配结果及分数:

{"results":[{"id":"chunk_123","score":0.95,"text":"匹配内容...","path":"memory/2026-03-07.md","source":"sqlite","start_line":10,"end_line":25}],"count":5}
索引端点

POST /index

支持简写模式,自动嵌入文本:

{"text":"内容", "meta":{"path":"source.md","source":"manual"}}
因果图端点(v3.0)

POST /graph/add

允许定义节点间的因果关系:

{"text":"事件描述", "node_id":"custom-id", "caused_by":["node_id_1"], "causes":["node_id_2"]}

POST /graph/search

支持多跳检索,可设置置信度阈值和遍历深度:

{"embedding":[0.1,0.2,...], "topk":5, "similarity_threshold":0.5, "max_depth":2}

OpenClaw 集成

AGENTS.md 配置

在智能体的 AGENTS.md 中添加以下记忆协议,指导智能体如何读写记忆:

## Memory Protocol
1. **On session start:** Read `memory/qmd/current.json` — your working memory
2. **During work:** Update QMD after significant actions (new task, decision, completion)
3. **For search:** Check QMD first → then curl Zvec (port 4010) → then memory_search
4. **On session end:** Run `python3 scripts/qmd-compact.py` to archive completed tasks
搜索脚本封装

创建便捷的搜索脚本 scripts/search.sh,封装了调用嵌入器与搜索的逻辑:

#!/bin/bash
# MemClawz Search Wrapper
# Usage: ./scripts/search.sh "query text"
QUERY="$1"
TOPK="${2:-5}"
ZVEC_URL="${ZVEC_URL:-http://localhost:4010}"

if [ -z "$QUERY" ]; then
  echo "Usage: $0 \"query text\" [topk]"
  exit 1
fi

# Call embedder + search in one step
curl -s -X POST "$ZVEC_URL/search" \
  -H 'Content-Type: application/json' \
  -d "{\"text\": \"$QUERY\", \"topk\": $TOPK}" | \
  python3 -c "import sys, json; data = json.load(sys.stdin); 
  for r in data.get('results', []): print(f\"\\n[Score: {r['score']:.3f}] {r.get('path', 'unknown')}:{r.get('start_line', 0)}\"); 
  print(r['text'][:200] + '...' if len(r['text']) > 200 else r['text'])"
子智能体调度模式(Dispatch Pattern)

最佳实践是生成领域专家子智能体,并在预加载阶段从 MemClawz 获取相关记忆。

规则: 每个需要工作的请求都生成一个子智能体,主智能体保持轻量。

预加载上下文:

  1. 提取请求中的关键术语
  2. 查询 POST http://127.0.0.1:4010/search_text
  3. 将结果作为'过往上下文'包含在 spawn 任务中

Spawn 模板:

# Step 1: Search memclawz for context
curl -s -X POST http://127.0.0.1:4010/search \
  -H 'Content-Type: application/json' \
  -d '{"text":"[request keywords]","topk":5}'

# Step 2: Spawn with context + live memory access
sessions_spawn(
  task="[Task]\n\n## Past Context (from memclawz):\n[results]\n\n ## Memory Access:\nSearch memclawz during work:\n curl -s -X POST http://127.0.0.1:4010/search \
   -H 'Content-Type: application/json' \
   -d '{\"text\":\"query\",\"topk\":5}'\n ALWAYS search before starting to find relevant history.",
  label="[domain]-[short-desc]"
)

性能基准

测试环境: AMD EPYC 9354P, 32GB RAM, 1,166 索引块

操作延迟说明
QMD 读取<1ms直接 JSON 文件读取
QMD 写入<2msJSON 文件写入
Zvec 搜索 (top-5)~8msHNSW + BM25 混合
Zvec 索引 (单文档)~15ms嵌入 + 更新 + 刷新
因果图搜索~15ms多跳遍历
OpenClaw memory_search~50ms内置语义搜索
Watcher 同步周期~200ms50 新块批量处理
QMD 压缩~5ms移动完成任务到日志

最佳实践

1. QMD 更新时机

应该更新:

  • 开始新任务
  • 做出重要决策
  • 完成任务
  • 遇到阻碍
  • 发现关键实体(人、URL、凭证)

不应该更新:

  • 每次工具调用(过于频繁)
  • 琐碎的中间步骤
  • 临时想法(除非重要)
2. 搜索策略选择
场景推荐层理由
当前任务状态QMD即时访问,结构化
语义相关上下文Zvec混合搜索,快速
精确术语匹配Zvec 关键词BM25 精确匹配
因果推理因果图多跳遍历
历史策划记忆memory_searchcurated 长期记忆
3. 压缩策略

自动压缩(推荐): 添加到 crontab,每小时运行:

0 * * * * cd ~/.openclaw/workspace/memclawz && python3 scripts/qmd-compact.py --auto

会话结束压缩: 在智能体会话结束时自动运行:

import subprocess
subprocess.run(["python3", "scripts/qmd-compact.py", "--auto"])
4. 监控与告警

健康检查脚本示例:

#!/bin/bash
# check_memclawz_health.sh
ZVEC_URL="http://localhost:4010"

# Check Zvec server
if ! curl -sf "$ZVEC_URL/health" > /dev/null; then
  echo "❌ Zvec server not responding"
  exit 1
fi

# Check indexed docs
STATS=$(curl -sf "$ZVEC_URL/stats")
DOCS=$(echo "$STATS" | python3 -c "import sys,json; print(json.load(sys.stdin).get('total_docs',0))")

if [ "$DOCS" -lt 100 ]; then
  echo "⚠️ Low doc count: $DOCS"
fi

# Check QMD file
if [ ! -f "memory/qmd/current.json" ]; then
  echo "❌ QMD file missing"
  exit 1
fi

echo "✅ All systems operational ($DOCS docs indexed)"
5. 备份策略

定期备份:

tar -czf memclawz-backup-$(date +%Y%m%d).tar.gz \
  ~/.openclaw/zvec-memory/ \
  memory/qmd/current.json

恢复流程:

# 停止服务
systemctl stop zvec-server zvec-watcher
# 恢复备份
tar -xzf memclawz-backup-20260307.tar.gz -C ~/ 
# 重启服务
systemctl start zvec-server zvec-watcher

故障排查

常见问题
1. Zvec 服务器无法启动

症状: curl localhost:4010/health 无响应

排查步骤:

# 检查日志
cat /tmp/zvec-server.log
# 检查端口占用
lsof -i :4010
# 检查 Python 版本
python3 --version # 需要 3.10+
# 检查依赖
python3 -c "import zvec; print(zvec.__version__)"

解决方案:

# 重新安装依赖
pip3 install --upgrade zvec numpy
# 清理锁文件
rm -rf ~/.openclaw/zvec-memory/memory/.lock
# 重启服务器
cd memclawz && python3 memclawz_server/server.py
2. 搜索结果为空

可能原因: 索引为空、嵌入维度不匹配、查询向量维度错误。

排查:

# 检查索引统计
curl localhost:4010/stats
# 检查集合信息
curl localhost:4010/info
# 测试搜索
curl -X POST localhost:4010/search \
  -H 'Content-Type: application/json' \
  -d '{"text": "test", "topk": 5}'
3. Watcher 未同步新文件

排查:

# 检查 Watcher 进程
ps aux | grep watcher.py
# 检查 Watcher 日志
cat /tmp/zvec-watcher.log
# 手动触发索引
curl -X POST localhost:4010/index \
  -H 'Content-Type: application/json' \
  -d '{"text": "test content", "meta": {"path": "test.md"}}'

项目结构

memclawz/
├── README.md
├── LICENSE
├── CONTRIBUTING.md
├── clawhub.json # ClawHub 包清单
├── requirements.txt
├── qmd/
│   ├── schema.json # QMD JSON 模式
│   └── current.json.example # QMD 示例
├── memclawz_server/
│   ├── server.py # Zvec HTTP 搜索服务器
│   ├── embed_server.py # 独立嵌入服务器 (端口 4020)
│   ├── fleet_server.py # 多租户舰队记忆服务器
│   ├── file_watcher.py # 直接 .md 文件监视器
│   ├── chunker.py # Markdown 分块引擎
│   ├── watcher.py # SQLite 自动索引监视器
│   ├── embedder.py # 嵌入工具
│   ├── embed_bridge.py # 本地 GGUF 嵌入桥接
│   └── causality_graph.py # 因果图 (v3.0)
├── skill/
│   ├── SKILL.md # OpenClaw 技能说明
│   ├── install.sh # 一键安装
│   └── config.example # 环境配置示例
├── scripts/
│   ├── first-run.sh # 首跑脚本
│   ├── bootstrap-history.sh # 历史导入
│   ├── search.sh # 搜索封装
│   ├── qmd-compact.py # 压缩脚本
│   ├── verify.py # 验证脚本
│   └── optimize-context.py # 上下文优化
├── systemd/
│   ├── zvec-server.service
│   └── zvec-watcher.service
├── tests/ # 45 个测试(全部通过)
└── docs/
    ├── architecture.md
    ├── fleet-memory.md
    └── explainer.html

参考资料

研究论文

'AMA-Bench: Evaluating Long-Horizon Memory for Agentic Applications' (Zhao et al., 2026)
https://arxiv.org/abs/2602.22769
关键发现: Mem0 得分 0.2104,因果图 + 工具增强检索得分 0.5722(2.7× 提升)

相关项目
项目链接说明
memclawzhttps://github.com/yoniassia/memclawz本仓库
Zvechttps://github.com/alibaba/zvec阿里巴巴 HNSW 向量数据库
OpenClawhttps://github.com/openclaw/openclawAI 智能体平台
OpenClaw 文档https://docs.openclaw.ai官方文档
交互式解释器https://clawz.org/memory/架构可视化演示
ClawHub 安装
clawhub install yoniassia/memclawz

目录

  1. MemClawz 三层记忆架构集成指南
  2. 核心优势对比
  3. 架构设计
  4. 数据流逻辑
  5. 压缩路径
  6. 核心组件详解
  7. 1. QMD — 快速记忆转储 (Quick Memory Dump)
  8. 2. Zvec 服务器 — 混合向量 + 关键词搜索
  9. 3. 自动索引 Watcher
  10. 4. 因果图 (Causality Graph) — v3.0 新增
  11. 5. 压缩脚本
  12. 输出:Compacted 3 completed tasks to memory/2026-03-07.md
  13. 2 active tasks remain in QMD
  14. 安装与配置
  15. 前置条件
  16. 一键安装
  17. 重新同步历史
  18. 验证安装
  19. 手动搜索
  20. 环境变量
  21. systemd 服务(生产环境)
  22. 安装服务
  23. 查看状态
  24. 查看日志
  25. API 参考
  26. 基础端点
  27. 搜索端点
  28. 索引端点
  29. 因果图端点(v3.0)
  30. OpenClaw 集成
  31. AGENTS.md 配置
  32. Memory Protocol
  33. 搜索脚本封装
  34. MemClawz Search Wrapper
  35. Usage: ./scripts/search.sh "query text"
  36. Call embedder + search in one step
  37. 子智能体调度模式(Dispatch Pattern)
  38. Step 1: Search memclawz for context
  39. Step 2: Spawn with context + live memory access
  40. 性能基准
  41. 最佳实践
  42. 1. QMD 更新时机
  43. 2. 搜索策略选择
  44. 3. 压缩策略
  45. 4. 监控与告警
  46. checkmemclawzhealth.sh
  47. Check Zvec server
  48. Check indexed docs
  49. Check QMD file
  50. 5. 备份策略
  51. 停止服务
  52. 恢复备份
  53. 重启服务
  54. 故障排查
  55. 常见问题
  56. 1. Zvec 服务器无法启动
  57. 检查日志
  58. 检查端口占用
  59. 检查 Python 版本
  60. 检查依赖
  61. 重新安装依赖
  62. 清理锁文件
  63. 重启服务器
  64. 2. 搜索结果为空
  65. 检查索引统计
  66. 检查集合信息
  67. 测试搜索
  68. 3. Watcher 未同步新文件
  69. 检查 Watcher 进程
  70. 检查 Watcher 日志
  71. 手动触发索引
  72. 项目结构
  73. 参考资料
  74. 研究论文
  75. 相关项目
  76. ClawHub 安装
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 设计一个支持万人并发抢购的秒杀系统架构
  • JavaScript 跨域通信的替代方案:图片探测与 JSONP
  • 大模型选型指南:基于 AI Ping 的 20+ 供应商与 220+ 模型性能评测
  • 知网 AIGC 检测未通过?3 种方法降低 AI 生成率至 15% 以下
  • 高频 SQL 50 题:聚合函数实战
  • C++ 算法实战:数字变换、矩阵优化与前缀和技巧
  • MySQL 数据库基础入门:从概念到实战
  • Xinference 多模型并发:Llama3+Qwen2-VL+Whisper
  • Git 已推送 Commit 能否重新推送?操作规范与场景解析
  • C++11 手写 Promise 实现与 std::promise 对比
  • GitHub Copilot 代理功能与 VS Code 集成指南
  • 快速排序优化:三路查找与自省排序
  • 强化学习核心算法:Actor-Critic 原理与 Python 实现
  • 现代 C++ 新特性 constexpr:从 C++11 到 C++20 的演进
  • Copilot 实战:如何高效完成 1.5 万行 Python 项目
  • Azure Bot Service 集成大模型实现智能问答
  • 普通程序员大模型(LLM)学习指南:构建全面知识体系路径
  • LLaMA-Factory 大模型高效微调实战指南
  • 自动驾驶技术入门:Apollo 8.0 学习笔记
  • AI 图像生成提示词进阶指南与最佳实践

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online