借鉴 memU 的结构化思路,保持零额外 token 成本
每条记忆写入时标注类型:
| 类型 | 标签 | 说明 | 示例 |
|---|---|---|---|
| Profile | [P] |
用户身份、偏好、稳定特征 | JJ 是 Web3 开发者,用 Mac Mini ARM |
| Event | [E] |
具体事件,有时间/地点/结果 | 2026-02-07 私钥泄露,钱包被盗 |
| Knowledge | [K] |
客观知识、技术事实 | BSC USDC 是 18 位小数 |
| Behavior | [B] |
行为模式、工作习惯 | JJ 经常深夜工作,喜欢一键脚本 |
| Skill | [S] |
踩坑经验、技术方案、可复用技能 | PS5 编码问题用 ASCII bootstrapper 解决 |
旧结构 → 新结构:
memory/
├── profile.md ← [P] 用户画像(合并旧 preferences.md + accounts.md 中的用户信息)
├── events.md ← [E] 重要事件时间线(从日志蒸馏)
├── knowledge.md ← [K] 技术知识(保留,扩充)
├── skills.md ← [S] 踩坑经验+可复用方案(保留,标准化格式)
├── behaviors.md ← [B] 行为模式+工作习惯(从 preferences 拆出)
├── projects.md ← 保留不变(项目是独立维度)
├── security.md ← 保留不变(安全是最高优先级)
├── accounts.md ← 保留不变(纯账号信息)
├── environment.md ← 保留不变
├── YYYY-MM-DD.md ← L2 日志,写入时加类型标签
旧格式(散文式):
### Fastify
- DELETE 请求不能带 Content-Type...
新格式(结构化):
### [S] Fastify DELETE 空 body 报错
- **问题**: DELETE 请求带 Content-Type: application/json 但 body 为空,触发 FST_ERR_CTP_EMPTY_JSON_BODY
- **方案**: DELETE 只发 Authorization header,不带 Content-Type
- **关联**: → projects.md#ClawGate
- **日期**: 2026-02-XX
记忆条目之间用 → 链接:
→ security.md#私钥泄露— 指向安全教训→ projects.md#ClawGate— 指向项目→ skills.md#PS5编码— 指向技术方案→ 2026-02-28.md— 指向原始日志
每条日志自动标注类型:
## 2026-02-28
- [E] 首笔充值成功:5524dage@gmail.com ¥5.00 → 5 Credits
- [S] 收钱吧海外不通:TLS 超时,解决方案是香港 Nginx 反代 → skills.md#收钱吧代理
- [K] `irm -OutFile` 无视 charset=utf-8,用系统编码保存 → knowledge.md
- [B] JJ 要求所有消息走 Telegram 通知 → behaviors.md#通知偏好每个 L1 文件头部维护一段摘要(<200 字),供 MEMORY.md 索引引用:
# 技能记忆 (Skills)
> **摘要**: 覆盖 Fastify、Claude Code、OpenClaw、ethers v6、Windows PS5 编码、
> curl|bash 交互、浏览器自动化等领域。最常踩坑:编码问题和配置路径。
> 共 15 条技能记录,最后更新 2026-02-28。
---
### [S] Windows PS5 编码地狱
...# MEMORY.md - 长期记忆索引 V2
## 📊 记忆统计
| 类型 | 数量 | 最后更新 |
|------|------|----------|
| [P] Profile | 12 | 2026-02-28 |
| [E] Event | 8 | 2026-02-28 |
| [K] Knowledge | 15 | 2026-02-28 |
| [B] Behavior | 6 | 2026-02-27 |
| [S] Skill | 18 | 2026-02-28 |
## 📂 文件摘要
### profile.md
Web3 开发者 JJ,Base 链生态...
### skills.md
覆盖 Fastify、PS5 编码、OpenClaw 配置...
...- 读最近 3 天的 L2 日志
- 按类型标签分拣到对应 L1 文件
- 合并重复条目(同一技能的多次记录合并为最新版本)
- 更新交叉引用
- 更新各 L1 文件的摘要
- 更新 MEMORY.md 统计和摘要
- 删除已蒸馏的 L2 中的冗余细节(保留骨架)
- ❌ 不用 LLM 自动提取(我自己判断类型)
- ❌ 不用 embedding 向量化(memory_search 已经够用)
- ❌ 不用外部数据库(纯文件系统)
- ❌ 不搞意图预测(当前需求不需要)
- 创建新的 L1 文件结构
- 把现有记忆按类型标签迁移
- 建立交叉引用
- 更新 MEMORY.md 为 V2 格式
- 更新 AGENTS.md 中的记忆规则
- 测试蒸馏流程