管理、优化和排查 OpenClaw 内存系统 — MEMORY.md 维护、日常日志(memory/YYYY-MM-DD.md)、memory_search 调优、压缩监控
OpenClaw 内存 — 设置、 优化和麻烦排除是一项面向实际任务的技能,主要用于Core 原则;OpenClaw 内存是磁盘上的普通马克下. 文件是真实的单一来源;
该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
OpenClaw 的记忆机制本质上是磁盘上的纯 Markdown 文件。这些文件即为唯一可信数据源(Single Source of Truth)。
模型仅“记住”被写入磁盘的内容——会话之间无任何内容保留在内存(RAM)中。
记忆搜索功能由当前启用的记忆插件提供(默认为 memory-core)。
memory/YYYY-MM-DD.mdmemory_search 进行全文检索。MEMORY.mdMEMORY.md 和 memory.md,仅加载 MEMORY.md。bootstrapMaxChars 限制)。~/.openclaw/workspace/
├── MEMORY.md # 长期人工维护的记忆(仅主会话加载)
├── memory/
│ ├── 2026-03-17.md # 今日日志
│ ├── 2026-03-16.md # 昨日日志(同样自动加载)
│ └── ... # 更早的日志(可检索,但不自动加载)
├── AGENTS.md # 运行手册、启动流程
├── SOUL.md # 角色设定、语气风格、价值观
├── USER.md # 用户档案
└── TOOLS.md # 环境特定配置
| 内容类型 | 存放位置 | 原因 |
|---|---|---|
| 持久性决策与偏好 | MEMORY.md |
每会话启动时加载 |
| Agent 必须始终遵守的铁律规则 | MEMORY.md |
经压缩(compaction)后仍保留 |
| 今日工作笔记、事件、上下文 | memory/YYYY-MM-DD.md |
仅追加式日志 |
| 一次性指令 | 聊天窗口(或写入每日日志) | 按设计即为临时性内容 |
| 行为规范 | AGENTS.md 或 SOUL.md |
始终处于上下文内 |
OpenClaw 向 Agent 暴露两类面向用户的工具:
memory_search — 语义召回MEMORY.md + 所有每日日志)中执行搜索。finalScore = vectorWeight × vectorScore + textWeight × textScore。memory_get — 定向文件读取请将以下规则加入 AGENTS.md:
## 记忆协议
- 执行涉及历史上下文的任务前,必须先运行 memory_search。
- 切勿仅凭对话历史猜测——务必查阅你的笔记。
若未设置此规则,Agent 将倾向于猜测而非主动检查记忆文件。
长对话会迅速填满上下文窗口。当达到阈值时,OpenClaw 将执行压缩(compaction)操作(即对较早消息进行摘要或截断)。仅存在于对话中的内容——包括在聊天窗口中输入的指令——可能因此丢失。
在触发压缩前,OpenClaw 会启动一次静默的 Agent 轮次(silent agentic turn),提醒模型将持久化笔记写入磁盘。
默认配置:
{
"agents": {
"defaults": {
"compaction": {
"reserveTokensFloor": 20000,
"memoryFlush": {
"enabled": true,
"softThresholdTokens": 4000,
"systemPrompt": "Session nearing compaction. Store durable memories now.",
"prompt": "Write any lasting notes to memory/YYYY-MM-DD.md; reply with NO_REPLY if nothing to store."
}
}
}
}
}
contextWindow - reserveTokensFloor - softThresholdTokens 处。sessions.json)。NO_REPLY,用户不可见。workspaceAccess: "ro" 或 "none",则跳过刷新。memoryFlush.enabled = true 且缓冲余量充足。MEMORY.md 和 AGENTS.md 可在压缩中幸存。local — 若已配置 memorySearch.local.modelPath 且对应文件存在openai — 若 OpenAI API 密钥可用gemini — 若 Gemini API 密钥可用voyage — 若 Voyage API 密钥可用mistral — 若 Mistral API 密钥可用另支持:ollama(本地/自托管,但不参与自动选择)。
重要提示:Codex OAuth 仅覆盖聊天/补全(chat/completions)能力,不适用于嵌入(embeddings)。你需要为嵌入服务提供商单独配置 API 密钥。
{
"agents": {
"defaults": {
"memorySearch": {
"provider": "openai",
"model": "text-embedding-3-small",
"query": {
"hybrid": true
}
}
}
}
}
~/.openclaw/memory/.sqlite 。向量 + 关键词 → 加权合并 → 时间衰减 → 排序 → MMR 重排 → Top-K 结果
仅靠原始相似度,旧笔记可能排名高于新笔记。启用时间衰减可解决此问题:
高度相似的每日日志可能挤占多样化结果。MMR 用于消除冗余:
memory_search 返回大量重复或近似重复的片段。面向追求更高搜索质量的高级用户:
{
"memory": {
"backend": "qmd",
"citations": "auto",
"qmd": {
"includeDefaultMemory": true,
"update": { "interval": "5m", "debounceMs": 15000 },
"limits": { "maxResults": 6, "timeoutMs": 4000 },
"paths": [
{ "name": "docs", "path": "~/notes", "pattern": "**/*.md" }
]
}
}
}
bun install -g https://github.com/tobi/qmd。memory.qmd.sessions.enabled = true。索引默认工作区以外的文件:
{
"agents": {
"defaults": {
"memorySearch": {
"extraPaths": ["../team-docs", "/srv/shared-notes/overview.md"]
}
}
}
}
.md 文件。在 OpenClaw 会话中运行 /context list 检查以下事项:
MEMORY.md 是否成功加载?若显示 “missing” → 未进入上下文 → 完全无效。| 现象 | 原因 | 修复方法 |
|---|---|---|
| Agent “遗忘”某条规则 | 规则仅存在于聊天中,未写入文件 | 移至 MEMORY.md 或 AGENTS.md |
memory_search 无返回结果 |
未配置嵌入服务提供商 | 为 openai/gemini/ollama 设置有效 API 密钥 |
memory_search 返回陈旧结果 |
未启用时间衰减 | 在 memorySearch 配置中启用衰减 |
memory_search 返回重复结果 |
未启用 MMR 重排序 | 启用 MMR 多样性过滤器 |
MEMORY.md 未加载 |
文件过大,或当前为群组会话 | 精简文件;确认会话类型为私有(private) |
| 搜索时返回 401 错误 | 嵌入 API 密钥错误或缺失 | 设置正确密钥(Codex OAuth 不适用) |
| Agent 在对话中途丢失上下文 | 压缩操作清除了上下文 | 启用 memoryFlush;将规则写入文件 |
MEMORY.md 存在,且大小 < 10,000 字符(理想)或 < 20,000 字符(上限)memory/ 目录存在,且包含近期的每日日志memoryFlush.enabled = trueAGENTS.md 包含“执行前先搜索记忆”规则wc -c ~/.openclaw/workspace/*.md 审计各文件大小适用于需要超越内置系统能力的用户:
@mem0/openclaw-mem0)openclaw-supermemory)MEMORY.md — 删除过时事实,将重要日志条目提升至此。memory/*.md,识别反复出现的模式与经实践验证的关键规则。MEMORY.md 或技能文件 SKILL.md。cd ~/.openclaw/workspace
git init # 若尚未初始化
git add memory/ MEMORY.md
git commit -m "Memory backup $(date +%Y-%m-%d)"
排除项:~/.openclaw/credentials/ 和 openclaw.json(含敏感凭据)。
| 文件 | 加载时机 | 作用域 | 能否抵御压缩 |
|---|---|---|---|
AGENTS.md |
每次会话启动时 | 所有会话 | ✅ 是 |
SOUL.md |
每次会话启动时 | 所有会话 | ✅ 是 |
MEMORY.md |
会话启动时(仅私有会话) | 主会话 | ✅ 是 |
memory/today.md |
会话启动时 | 主会话 | ✅ 是 |
memory/yesterday.md |
会话启动时 | 主会话 | ✅ 是 |
memory/older.md |
仅通过 memory_search 按需调用 |
按需 | ✅ 是 |
| 聊天指令 | 对话过程中 | 当前上下文 | ❌ 否 |
相关专题
热门下载
相关下载
精品课程
共1课时 | 140人学习
共0课时 | 0人学习
共1课时 | 194人学习