🧠 OpenClaw 的四种记忆方案

📅 2026-03-05 | 👁 156 次阅读

在构建智能 AI 助手时,记忆机制是决定智能体"智能程度"的关键因素。OpenClaw 作为强大的 AI 代理框架,提供了多种记忆方案供开发者选择。本文将详细介绍四种主流的记忆方案,并提供具体的部署步骤。

问题背景:为什么需要记忆方案?

OpenClaw 智能体每次会话都需读取庞大上下文文件,导致以下问题:

⚠️ 注意:默认内存机制虽然简单,但长期使用会导致成本失控和性能下降。建议根据项目需求选择合适的持久记忆方案。

方案一:结构化记忆文件夹(简单透明)

这是最简单、最透明的记忆方案,适合初学者和小型项目。

核心思路

在项目目录中创建多个 Markdown 文件,分别存储不同类型的记忆信息:

部署步骤

  1. 创建记忆文件夹结构
    mkdir -p memory touch goals.md decisions.md coding_style.md MEMORY.md
  2. 初始化记忆文件
    # goals.md # 项目目标 - 构建智能科研助手 - 支持文献搜索和整理 - 自动生成研究报告 # decisions.md # 重要决策 - 2026-03-05: 选择结构化记忆方案 - 原因:简单透明,无需额外 API # coding_style.md # 编码偏好 - 语言:中文 - 代码注释:详细 - 文件命名:snake_case
  3. 配置系统提示

    在 OpenClaw 配置中添加提示词,让智能体在会话结束时自动更新记忆文件:

    每次会话结束时,请检查是否需要更新以下文件: - goals.md:如果有新的目标或任务完成 - decisions.md:如果做出了重要决策 - memory/YYYY-MM-DD.md:记录本次会话的关键内容
  4. 定期整理

    每隔一段时间(如每周),将 daily memory 文件中的重要信息整理到 MEMORY.md 中,形成 curated long-term memory。

✅ 优点:无需额外 API,兼容所有模型,完全透明可控,适合初学者。
❌ 缺点:需要手动管理,无法进行语义检索。

方案二:内置记忆搜索(Memory Search)

OpenClaw 支持通过嵌入(Embedding)技术实现自然语言记忆检索。

核心思路

将记忆内容转换为向量存储,通过语义相似度进行检索,而非简单的关键词匹配。

部署步骤

  1. 选择嵌入 API 提供商
    • OpenAI Embeddings API
    • Google Gemini Embeddings
    • Voyage AI Embeddings
  2. 获取 API 密钥
    # OpenAI export OPENAI_API_KEY="sk-..." # Google Gemini export GEMINI_API_KEY="..." # Voyage AI export VOYAGE_API_KEY="..."
  3. 配置 OpenClaw

    在 OpenClaw 配置文件中添加嵌入服务配置:

    # config.json 或环境变量 { "embeddings": { "provider": "openai", // 或 "gemini", "voyage" "apiKey": "${OPENAI_API_KEY}", "model": "text-embedding-3-small" } }
  4. 启用记忆搜索功能

    在会话中,智能体可以自动将重要信息存入记忆库,并在需要时检索:

    # 示例:检索相关记忆 /remember search "上次提到的项目目标是什么?"
  5. 测试验证
    # 存入记忆 /remember save "用户偏好使用中文进行代码注释" # 检索记忆 /remember search "代码注释风格"
⚠️ 常见问题:Anthropic 用户常因未配置对应的嵌入 API 密钥导致功能失效。记忆搜索功能默认关闭,必须显式配置才能启用。
✅ 优点:支持自然语言检索,成本低,检索准确。
❌ 缺点:依赖特定 API,需要额外配置。

方案三:Mem0 插件(自动化长期记忆)

Mem0 是第三方记忆管理插件,提供"一劳永逸"的自动化记忆解决方案。

核心思路

Mem0 自动监控对话,提取关键信息并以向量形式存储,支持语义检索,无需手动管理。

部署步骤

  1. 安装 Mem0 插件
    npm install mem0-ai # 或 pip install mem0
  2. 获取 Mem0 API 密钥

    访问 mem0.ai 注册账号并获取 API 密钥:

    export MEM0_API_KEY="m0_..."
  3. 配置 OpenClaw 集成
    # 在 OpenClaw 配置中添加 { "plugins": { "mem0": { "enabled": true, "apiKey": "${MEM0_API_KEY}", "autoSave": true, "autoRetrieve": true } } }
  4. 设置记忆提取规则

    配置哪些类型的信息应该自动保存:

    # mem0_config.yaml extraction_rules: - type: "user_preference" keywords: ["喜欢", "偏好", "习惯", "常用"] - type: "project_info" keywords: ["项目", "目标", "任务", "截止日期"] - type: "technical_detail" keywords: ["API", "配置", "密钥", "端点"]
  5. 测试自动记忆功能
    # 对话示例 用户:我更喜欢用 Python 写脚本 AI:[自动保存] 用户偏好:Python 脚本 用户:上次说的那个项目叫什么? AI:[自动检索] 您提到的是"智能科研助手"项目
⚠️ 安全提醒:Mem0 涉及数据外传风险,敏感信息(如 API 密钥、个人隐私)不应自动存储到第三方服务。
✅ 优点:完全自动化,无需手动管理,智能提取关键信息。
❌ 缺点:数据外传风险,依赖第三方服务。

方案四:SQLite 数据库存储(处理结构化数据)

OpenClaw 原生支持读写 SQLite 数据库,适合存储高密度结构化数据。

核心思路

使用 SQLite 数据库存储需要精确查询的结构化数据,如 API 端点、客户记录、配置参数等。

部署步骤

  1. 创建 SQLite 数据库
    # 创建数据库文件 sqlite3 memory.db # 创建记忆表 CREATE TABLE memories ( id INTEGER PRIMARY KEY AUTOINCREMENT, category TEXT NOT NULL, key TEXT NOT NULL, value TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE INDEX idx_category ON memories(category); CREATE INDEX idx_key ON memories(key);
  2. 编写数据库操作脚本
    # memory_db.py import sqlite3 from datetime import datetime class MemoryDB: def __init__(self, db_path='memory.db'): self.conn = sqlite3.connect(db_path) self.cursor = self.conn.cursor() def save(self, category, key, value): self.cursor.execute(''' INSERT OR REPLACE INTO memories (category, key, value, updated_at) VALUES (?, ?, ?, ?) ''', (category, key, value, datetime.now())) self.conn.commit() def get(self, category, key): self.cursor.execute(''' SELECT value FROM memories WHERE category = ? AND key = ? ''', (category, key)) result = self.cursor.fetchone() return result[0] if result else None def query(self, sql): self.cursor.execute(sql) return self.cursor.fetchall()
  3. 集成到 OpenClaw
    # 在 OpenClaw 工具配置中添加 { "tools": { "memory_db": { "enabled": true, "db_path": "./memory.db", "operations": ["save", "get", "query", "delete"] } } }
  4. 使用示例
    # 保存 API 配置 /memory save category="api_config" key="openai_endpoint" value="https://api.openai.com/v1" # 查询配置 /memory get category="api_config" key="openai_endpoint" # SQL 查询 /memory query "SELECT * FROM memories WHERE category='api_config'"
  5. 版本控制
    # 将数据库文件纳入版本控制 git add memory.db # 或导出为 SQL 文件进行版本控制 sqlite3 memory.db .dump > memory_schema.sql
✅ 优点:无需插件,便携且可版本控制,支持精确 SQL 查询,适合结构化数据。
❌ 缺点:不支持语义检索,需要编写 SQL 查询。

组合使用建议

单一方案往往有局限性,建议结合多种方法形成完整的记忆架构:

推荐的组合方案

记忆类型 推荐方案 存储内容
短期记忆 结构化文件夹 项目目标、当前任务、会话日志
中期记忆 Mem0 插件 对话中的关键信息、用户偏好
长期记忆 MEMORY.md curated 重要事件、决策、经验
结构化数据 SQLite 数据库 API 配置、客户记录、参数设置

架构示意图

┌─────────────────────────────────────────────────┐
│            OpenClaw 智能体"大脑"                  │
├─────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────┐ │
│  │ 结构化文件夹 │  │   Mem0 插件  │  │  SQLite │ │
│  │  (短期记忆)  │  │  (中期记忆)  │  │ (数据)  │ │
│  └──────┬──────┘  └──────┬──────┘  └────┬────┘ │
│         │                │               │      │
│         └────────────────┼───────────────┘      │
│                          │                      │
│                 ┌────────▼────────┐             │
│                 │   MEMORY.md     │             │
│                 │   (长期记忆)    │             │
│                 └─────────────────┘             │
└─────────────────────────────────────────────────┘
                

关键提醒

💡 最佳实践:从小型项目开始,先用结构化文件夹方案熟悉记忆管理,然后根据需求逐步引入其他方案。不要一开始就追求复杂的架构。
← 返回博客首页 ← 返回首页