核心用法
Enhanced Memory 是 OpenClaw 记忆系统的 drop-in 增强组件,用 4 信号融合检索管道替代原有的扁平向量搜索。核心工作流分为三步:
1. 索引构建:运行 embed_memories.py 对 memory/ 目录下所有 .md 文件按 markdown 标题分块,调用 Ollama 的 nomic-embed-text 生成向量,输出 memory/vectors.json;
2. 混合检索:search_memory.py 执行向量相似度(0.4)、关键词匹配(0.25)、标题匹配(0.1)、文件路径匹配(0.25)的加权融合;
3. 辅助功能:memory_salience.py 按重要性×陈旧度评分提示需回顾的记忆,crossref_memories.py 构建文件级知识图谱。
显著优点
- 检索质量飞跃:MRR 从基线 0.45 提升至 0.782,接近翻倍;
- 零 pip 依赖:纯 Python 标准库 + Ollama HTTP API,部署极简;
- 自适应智能:低关键词重叠时自动切换至 85% 向量权重,高分不足时触发伪相关反馈(PRF)扩展查询;
- 时间感知:识别 "yesterday"、"Feb 8" 等日期引用,对匹配文件给予 3 倍 boost;
- 可插拔替换:JSON 输出版本
enhanced_memory_search.py直接兼容 OpenClaw 原工具接口。
潜在局限
- 硬依赖 Ollama:必须本地运行 embedding 服务,无法云端部署或离线运行(除非预置模型);
- 英文模型主导:
nomic-embed-text对中文语义捕捉弱于英文,虽可换mxbai-embed-large等,但需全量重建索引; - 无实时增量:文件变更需手动重跑
embed_memories.py,缺乏监听守护进程; - PRF 黑盒风险:自动扩展查询词可能引入漂移,高敏感场景建议关闭;
- 路径泄露隐患:文件路径作为 0.25 权重信号,若路径含敏感命名(如
password-vault.md)可能被检索排序放大。
适合人群
- 使用 OpenClaw/Claude Code 等 agent 框架、记忆库超千条 markdown 文件的开发者;
- 对检索召回率敏感、愿牺牲部分实时性换取精度的研究型/工程型用户;
- 具备本地 GPU/CPU 资源运行 Ollama,且接受命令行维护工作流的技术用户。
常规风险
| 风险类别 | 具体表现 | 缓解建议 |
|---------|---------|---------|
| 供应链 | Ollama 服务被投毒或模型文件篡改 | 校验模型 SHA256,限制 Ollama 监听 127.0.0.1 |
| 信息泄露 | 向量索引文件 `vectors.json` 含全文片段 | 加入 `.gitignore`,避免提交至仓库 |
| 权限提升 | 脚本以工作区根目录执行,可能误操作 | 在容器或受限用户下运行,限制 `memory/` 外写权限 |
| 可用性 | Ollama 未启动或端口冲突导致检索失败 | 启动前健康检查 `curl localhost:11434`,配置超时重试 |