零成本、纯文件、分层记忆系统 — 专为 24/7 AI Agent 设计
一个不需要数据库、不需要额外 LLM 调用、不花一分钱 token 的 AI Agent 记忆方案。
借鉴了 memU 的类型体系和 OpenViking 的分层架构,但完全基于 Markdown 文件实现。
现有的 AI Agent 记忆方案(mem0、memU 等)都需要:
- 额外的 LLM 调用来提取和分类记忆(每轮对话多花几千 token)
- 外部数据库(ChromaDB、PostgreSQL、向量存储)
- 复杂的部署和维护
但对于 OpenClaw 这样的 24/7 Agent 来说,记忆系统本身不应该成为成本负担。
XiaoClaw Memory V2 的答案是:让 Agent 自己判断记忆类型,用纯文件系统存储,零额外开销。
三层分层架构(L0 → L1 → L2)
┌─────────────────────────────────────────────┐
│ L0: MEMORY.md — 索引 + 统计 + 摘要 │ ← 每次会话必读(~200 tokens)
│ 快速定位需要什么,去哪找 │
└──────────────────┬──────────────────────────┘
│
┌──────────────────▼──────────────────────────┐
│ L1: 主题文件 — 按类型分类的长期记忆 │ ← 按需加载
│ │
│ [P] profile.md 用户画像/身份/偏好 │
│ [E] events.md 重要事件时间线 │
│ [K] knowledge.md 技术知识/客观事实 │
│ [B] behaviors.md 行为模式/工作习惯 │
│ [S] skills.md 踩坑经验/可复用方案 │
│ [!] security.md 安全教训(最高优先级) │
│ projects.md 项目信息 │
│ accounts.md 账号信息 │
└──────────────────┬──────────────────────────┘
│
┌──────────────────▼──────────────────────────┐
│ L2: YYYY-MM-DD.md — 每日原始日志 │ ← 只读最近 2 天
│ 所有新信息先写这里,定期蒸馏到 L1 │
└─────────────────────────────────────────────┘
| 标签 | 类型 | 说明 | 示例 |
|---|---|---|---|
[P] |
Profile | 用户身份、偏好、稳定特征 | 用户是 Web3 开发者,用 Mac Mini ARM |
[E] |
Event | 具体事件,有时间/结果/教训 | 2026-02-07 私钥泄露,钱包被盗 |
[K] |
Knowledge | 客观知识、技术事实 | BSC USDC 是 18 位小数 |
[B] |
Behavior | 行为模式、工作习惯 | 用户经常深夜工作,喜欢一键脚本 |
[S] |
Skill | 踩坑经验、技术方案 | PS5 编码问题用 ASCII bootstrapper 解决 |
关键区别: memU 用 LLM 自动分类,我们让 Agent 在写入时自己判断类型——Agent 本身就是 LLM,何必再调一次?
## 2026-02-28
- [E] 首笔充值成功:user@example.com ¥5.00 → 5 Credits
- [S] 收钱吧海外不通:TLS 超时,解决用香港 Nginx 反代 → skills.md#收钱吧代理
- [K] `irm -OutFile` 无视 charset=utf-8,用系统编码保存 → knowledge.md
- [B] 用户要求所有消息走 Telegram 通知 → behaviors.md#通知偏好### [S] Windows PS5 编码地狱
- **问题**: `irm -OutFile` 用系统编码(GBK)保存,中文全炸
- **方案**: 拆两文件——纯 ASCII bootstrapper + WebClient UTF-8 下载主脚本
- **关联**: → knowledge.md#Windows_PowerShell, events.md#2026-02-28
- **日期**: 2026-02-28每个 L1 文件顶部维护一段摘要(<200 字),供 MEMORY.md 索引引用:
# 技能经验 (Skills)
> **摘要**: 覆盖 Fastify、OpenClaw、Windows PS5 编码等领域。
> 每条含问题→方案→关联。最常踩坑: 编码问题和配置路径。
> 共 12 条技能记录,最后更新 2026-02-28。记忆条目之间用 → 链接,形成知识网络:
→ security.md#私钥泄露 指向安全教训
→ projects.md#ClawGate 指向项目信息
→ skills.md#PS5编码 指向技术方案
→ 2026-02-28.md 指向原始日志
新信息产生
│
▼
写入 L2 日志(带 [P/E/K/B/S] 标签 + 交叉引用)
│
▼ (心跳/定期蒸馏)
按类型分拣到对应 L1 文件
│
▼
合并重复 → 更新引用 → 更新摘要
│
▼
更新 MEMORY.md 统计和索引
- 读最近 3 天的 L2 日志
- 按类型标签分拣到对应 L1 文件
- 合并重复条目(保留最新版本)
- 更新交叉引用
- 更新各 L1 文件头部摘要
- 更新 MEMORY.md 统计
新会话启动
│
├─ 必读: MEMORY.md(~200 tokens,索引+摘要)
├─ 必读: 今天 + 昨天的 L2 日志
│
├─ 按需: 根据任务加载对应 L1 文件
│ "部署问题" → 加载 skills.md + projects.md
│ "用户偏好" → 加载 profile.md + behaviors.md
│
└─ 搜索: memory_search 语义搜索全部文件
上下文成本对比:
| 方案 | 每次会话加载 | 额外 LLM 调用 |
|---|---|---|
| 全量加载 | ~5000+ tokens | 0 |
| memU | ~500 tokens | 3-5 次/轮 |
| XiaoClaw V2 | ~500 tokens | 0 |
| 特性 | memU | XiaoClaw V2 |
|---|---|---|
| 存储 | 数据库 + 向量索引 | 纯 Markdown 文件 |
| 记忆类型 | 5 种(LLM 自动分类) | 5 种(Agent 自行判断) |
| 提取方式 | LLM 自动提取 | Agent 写入时标注 |
| 检索 | RAG + LLM 双模式 | 语义搜索 + 分层加载 |
| 交叉引用 | ✅ 自动关联 | ✅ 手动 → 链接 |
| 分类摘要 | ✅ LLM 生成 | ✅ Agent 维护 |
| 额外 token 成本 | 每轮几千 token | 0 |
| 外部依赖 | Python + DB + LLM API | 无 |
| 意图预测 | ✅ | ❌(不需要) |
| 部署复杂度 | 中等 | 复制文件即可 |
git clone https://github.com/huafenchi/xiaoclaw-memory.git
cp -r xiaoclaw-memory/template/ your-workspace/memory/your-workspace/
├── MEMORY.md # L0 索引(必须)
└── memory/
├── profile.md # [P] 用户画像
├── events.md # [E] 事件时间线
├── knowledge.md # [K] 技术知识
├── behaviors.md # [B] 行为模式
├── skills.md # [S] 技能经验
├── security.md # 安全教训
├── projects.md # 项目信息
└── YYYY-MM-DD.md # 每日日志
把以下规则加到你的 Agent 系统提示(AGENTS.md 或等效配置)中:
## 记忆写入规则
- 新信息先写 memory/YYYY-MM-DD.md,标注类型 [P/E/K/B/S]
- 有长期价值的提炼到对应 L1 文件
- 添加交叉引用 → 文件#锚点
- 定期蒸馏:L2 → L1 → L0- ✅ OpenClaw / Claude Code / 任何支持文件读写的 AI Agent
- ✅ 长期运行的 24/7 Agent
- ✅ 对 token 成本敏感的场景
- ✅ 不想维护数据库的个人/小团队
- ❌ 需要自动提取的场景(考虑 memU)
- ❌ 需要向量检索的大规模知识库(考虑 RAG 方案)
- memU — 五种记忆类型体系的灵感来源
- OpenViking — 分层架构的参考
- OpenClaw — 运行环境
- ClawGate — 一个 API Key 接入所有 AI 模型(Claude/GPT/Gemini/DeepSeek),国内直连,开箱即用
MIT
Built by XiaoClaw 🦞 — 一只凌晨 3 点还在跑 cron job 的龙虾