用途
记忆管理技能解决的是 AI 智能体在会话结束后遗忘全部上下文的根本问题。它通过 openclaw-mem CLI 将记忆分层结构化,使智能体在多次会话之间保持连续性:会话结束后仍能记住正在做的事、已做的决策以及需要交接的任务。
环境设置
export OPENCLAW_MEM_ROOT=$WORKSPACE/.openclaw/workspace
MEM=$WORKSPACE/.openclaw/workspace/openclaw-mem/.venv/bin/openclaw-mem
文中所有命令中的 $MEM 均指向上方路径。
主要能力
1. 5 层记忆结构
| 层 | 文件/系统 | 特性 | 大小限制 |
|---|---|---|---|
| L0 | memory/core.md | 热点缓存,始终加载 | 严格 <2KB |
| L1 | memory/working-memory.md | 当前工作焦点,易失 | 自由 |
| L2 | memory/decisions.md | Master 决策日志,只追加 | 无限制(定期归档) |
| L3 | memory/YYYY-MM-DD.md + memory/handoffs/ | 情景记忆 | 保留最近 7 天 |
| L4 | LanceDB (rag/lancedb/) | 语义检索,覆盖整个工作区 | 自动管理 |
读取顺序:L0 → L1 → L2(近期)→ 按需检索 L3/L4。
2. 会话生命周期
会话开始(必须)
# 1. 读取上一会话交接
$MEM handoff read
# 2. 查看工作记忆
$MEM working-memory show
# 3. 查看最近决策
$MEM decision list --last 5
通过这三条命令的输出把握“当前正在做什么”,然后开始工作。
会话进行中
产生重要决策时立即记录:
# Master 决定的事项
$MEM decision log "Rust+Godot 专用,禁用 JS/TS" --tag master
# 智能体学习/洞察
$MEM observe "LanceDB 索引 --changed 比 --all 快 10x" --tag learning
# 记录错误
$MEM observe "Godot 导出时必须加 --headless" --tag error
工作记忆变化时:
$MEM working-memory set "当前焦点:NAS 迁移 Phase 2"
$MEM working-memory update "补充:DNS 传播等待中"
会话结束(必须)
# 1. 写交接笔记(给下一个会话的自己)
$MEM handoff write "博客部署完成。剩余任务:游戏页面截图 4 张"
# 2. 更新工作记忆
$MEM working-memory set "下一步:拍摄游戏截图 → 完成博客游戏文章"
# 3. 索引变更文件
$MEM index --changed
3. Brain 管理
Brain = memory/projects/{name}.md —— 按项目划分的持久上下文。
创建:
cat > memory/projects/eastsea-blog.md << 'EOF'
# eastsea-blog Brain
## Stack: Hugo + GitHub Pages
## Repo: eastsea-blog/
## Deploy: git push → GitHub Actions → pages
## 注意: baseURL 为 https://eastsea.xyz
EOF
更新原则:
- 事实变化时立即修改 Brain(过期信息有害)。
- 保持 < 1KB —— 因为会整体注入到子智能体的上下文中。
- 决策记录在 L2(decisions.md),不写入 Brain。
向子智能体注入 Brain:
- 生成子智能体时读取 Brain 文件内容并写入提示词。
- 采用直接注入内容的方式,而非让子智能体“先读 Brain 再开始”。
- 禁止注入整个 AGENTS.md —— 只注入 Brain 加任务专属规则。
4. 记忆卫生
L0 热点缓存管理(core.md < 2KB):
wc -c memory/core.md # 超过 2048 时需要清理
超限时:将陈旧或次要条目移至 L2 或 L4。
归档:
# 预演(查看哪些将被归档)
$MEM archive --days 30
# 执行
$MEM archive --days 30 --execute
# 归档后重新索引
$MEM archive --reindex
RAG 重新索引时机:
| 事件 | 命令 |
|---|---|
| 每天 01:00 KST(cron) | $MEM index --changed |
| 批量文件变更后 | $MEM index --all |
| 归档执行后 | $MEM archive --reindex |
| 手动添加特定文件 | $MEM index path/to/file.md |
情景整理:
memory/YYYY-MM-DD.md 在 7 天后成为归档对象。memory/handoffs/ 同理。
5. openclaw-mem CLI 参考
search —— 语义检索(渐进式披露):
$MEM search "部署流程" --top-k 5 # 基本检索
$MEM search "部署" --index # 步骤 1:仅摘要
$MEM search --detail "chunk:0:abc123" # 步骤 2:完整内容
$MEM search "错误" --tag error # 标签过滤
$MEM search "Godot" --source memory --raw # 来源过滤 + 人类可读
index —— 向量库索引:
$MEM index --changed # 仅变更文件(日常用)
$MEM index --all # 全量重新索引
$MEM index path/to/file.md # 单个文件
observe —— 结构化观察记录:
$MEM observe "文本" --tag learning # learning|decision|error|insight
working-memory —— 易失性工作缓冲:
$MEM working-memory show # 当前状态
$MEM working-memory set "新焦点" # 整体替换
$MEM working-memory update "补充内容" # 追加
$MEM working-memory clear # 清空
decision —— 决策日志(只追加):
$MEM decision log "决策内容" --tag master # 记录
$MEM decision list --last 10 # 最近 10 条
$MEM decision search "Rust" # 关键词检索
handoff —— 会话交接:
$MEM handoff write "交接内容" # 写入
$MEM handoff read # 读取最新
$MEM handoff history # 历史
archive —— 冷存储:
$MEM archive # 预演
$MEM archive --execute # 执行
$MEM archive --reindex # 归档索引
$MEM archive --days 14 --execute # 以 14 天为基准
auto-capture —— 从会话转录中自动提取:
$MEM auto-capture --since 6h # 最近 6 小时
$MEM auto-capture --file session.md # 特定文件
$MEM auto-capture --dry-run # 预览
适用场景
适用于需要跨会话保持连续性的智能体工作流,尤其是多会话推进的项目(如分阶段部署、长期内容创作、多步骤工程任务),以及需要向子智能体精确注入上下文、避免全量记忆转储的场景。
限制与禁忌
- 禁止在 core.md 中写入超过 2KB 的内容。
- 禁止修改/删除 decisions.md 中的条目(只追加)。
- 禁止在没有交接的情况下结束会话。
- 禁止向子智能体转储整个 memory/ 目录。
- 禁止滥用 --all 索引(无变更时不必全量索引)。
关于收费、价格、平台支持范围等信息,资料暂未提供。