1. OpenClaw 的记忆到底分几层,重启电脑会丢哪一层
很多人第一次用 OpenClaw 这类本地 AI 工具,都会卡在同一个疑问上:它到底把“记忆”存在哪?我关掉终端再打开,刚才聊的内容还在不在?直接重启电脑,会不会像没保存的文档一样全没了?
先把结论说清楚:OpenClaw 的“记忆”不是一个东西,而是至少两层。第一层是会话上下文,也就是你当前这轮对话里说过的话、它给过的回答,这部分活在运行内存里,进程一退就没了,重启电脑必然丢。第二层是长期配置与偏好,比如系统指令、对话模板、模型参数、你调教出来的风格设定,这些是落在硬盘上的文件,重启电脑不会动它们,除非你手动删或者触发了清理逻辑。
所以真正要判断的是:你关心的那份数据,到底写没写进磁盘。这篇就围绕 OpenClaw 的记忆持久化机制,给你一份 config.toml 和 settings.json 里跟存储路径相关的可复制配置骨架,再演示重启前后的对比验证动作,让你自己就能确认数据有没有落盘。适合已经在本地部署 OpenClaw、想搞清楚数据去向的人。
2. 先把 TaoToken 的接入骨架备好
在验证记忆落盘之前,得先保证 OpenClaw 能正常跑起来、能发出请求,否则你连“会话上下文”都产生不了,更谈不上观察它丢不丢。OpenClaw 这类工具通常通过兼容接口调用模型,我这边习惯用 TaoToken 做统一接入,它的 API 地址是 https://taotoken.net/api ,模型对话、编码计划、密钥管理都在同一套体系里。
你需要先去控制台拿一个 API Key,地址是 https://taotoken.net/api-keys ,拿到之后填进 OpenClaw 的配置里。如果你后面要长期跑编码类或 Agent 类任务,可以看下 Coding Plan 的说明页 https://taotoken.net/coding-plan ,它更适合高频调用场景。接入文档在 https://taotoken.net/doc ,遇到字段对不上时对着查最快。
注意:API Key 属于敏感凭证,别写进会提交到公开仓库的配置文件里,本地用环境变量或单独的 secrets 文件更稳妥。
3. config.toml 与 settings.json 的可复制配置骨架
OpenClaw 的配置一般分两处:一处是主配置 config.toml,管模型接入、运行参数;另一处是 settings.json,管界面偏好和部分持久化行为。下面这份骨架你可以直接抄,重点看跟“存储路径”相关的字段。
# config.toml [model] provider = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "${TAOTOKEN_API_KEY}" model_name = "gpt-4o-mini" [session] # 会话上下文保留条数,超出后旧消息被截断 max_context_messages = 40 # 是否把会话历史写入磁盘,true 才会持久化 persist_history = true # 历史文件落盘目录,相对路径基于工作目录 history_dir = "./.openclaw/history" # 单条历史文件最大体积,超过后轮转 max_history_file_mb = 32 [memory] # 长期记忆开关,关闭则只保留当前会话 enable_long_term = true # 长期记忆存储文件 store_path = "./.openclaw/memory/store.json" # 写入策略:on_turn 每轮写,on_exit 退出时写 write_policy = "on_turn"{ "settings": { "workspace": "./.openclaw", "memory": { "enabled": true, "storePath": "./.openclaw/memory/store.json", "autoSaveIntervalSec": 30, "loadOnStart": true }, "session": { "historyDir": "./.openclaw/history", "restoreLastSession": true } } }这里有两个字段决定生死。persist_history为 false 时,会话历史只活在内存,重启必丢;为 true 且history_dir指向真实可写目录,才会落盘。write_policy选on_turn是每轮对话都写一次,断电最多丢最后一轮;选on_exit则要等正常退出才写,强制关机就没了。loadOnStart决定启动时要不要把磁盘上的记忆读回来,关掉它,文件还在但工具不认。
4. 重启前后对比验证,确认数据是否落盘
配置改完别急着信,动手验一遍最踏实。整个过程分三步:制造记忆、记录磁盘状态、重启后比对。
第一步,启动 OpenClaw 并发几轮对话,让它产生可识别的上下文。比如你连续问三个带编号的问题,方便后面核对。
export TAOTOKEN_API_KEY="你的key" openclaw --config ./config.toml在会话里输入类似“记住编号 A1、A2、A3”这样的内容,触发记忆写入。
第二步,不关程序,先看磁盘上有没有文件生成。
ls -la ./.openclaw/history ls -la ./.openclaw/memory cat ./.openclaw/memory/store.json | head -40如果store.json里有你刚才的编号内容,说明on_turn策略生效,已经落盘。如果目录是空的,回去检查persist_history和store_path是否写对、目录是否有写权限。
第三步,正常退出程序,然后重启电脑,再启动 OpenClaw,看它能不能把记忆读回来。
# 正常退出后重启电脑,再执行 openclaw --config ./config.toml启动后问它“刚才记住的编号是什么”。能答出 A1、A2、A3,说明loadOnStart和restoreLastSession都正常工作,数据确实持久化了。答不出来但文件还在,多半是加载开关没开或路径对不上。
5. 本篇常见错排查
重启后记忆全丢,但文件明明存在。先看loadOnStart是不是 false,再看history_dir用的是相对路径还是绝对路径。相对路径基于启动时的工作目录,你在 A 目录启动、在 B 目录启动,读到的就是两个地方。建议统一改成绝对路径。
store.json 一直是空的。检查write_policy。如果是on_exit,程序被 kill 或断电就不会写。改成on_turn最稳。另外确认enable_long_term为 true,否则长期记忆模块根本不启动。
报权限错误写不进去。容器或受限用户下,./.openclaw可能没有写权限。换成用户主目录下的路径,比如~/.openclaw/memory/store.json,并确认目录已创建。
API 请求失败导致压根没产生会话。先用模型对话页面 https://taotoken.net/api 确认 key 和模型名可用,再回来查存储。接入字段对不上时翻接入文档 https://taotoken.net/doc ,比盲猜快。
历史文件越来越大。调小max_history_file_mb或降低max_context_messages,让轮转更早触发,避免单文件撑爆磁盘。
6. 把记忆这件事管起来
验证完你会发现,OpenClaw 的记忆丢不丢,本质是配置问题,不是玄学。会话上下文默认在内存,重启就散;只要你把persist_history、write_policy、loadOnStart这三个开关配对,长期记忆就能稳稳落在硬盘上。我自己的习惯是把.openclaw目录固定放在用户主目录,配置里全用绝对路径,换工作目录也不会读错地方。
如果你要长期跑编码或 Agent 任务,记忆持久化只是第一步,稳定的模型接入同样关键。密钥在 https://taotoken.net/api-keys 管理,长期高频调用可以看 https://taotoken.net/coding-plan ,接入细节对着 https://taotoken.net/doc 查。把这两块都配好,重启电脑就不再是让你心里一紧的动作了。