如何清除OpenClaw的记忆:把 settings 改到 TaoToken 后的排查清单 1. 为什么改了 settings 到 TaoTokenOpenClaw 还在读旧记忆你大概率遇到过这个场景把 OpenClaw 的settings.json里的模型接入地址换成了 TaoTokenKey 也重新生成了/status看着一切正常但一开新会话它张口就能说出你三天前聊过的项目细节、上周踩过的坑甚至还记得你随口提过的一个变量名。你以为是模型串了其实是记忆没清干净。OpenClaw 的记忆不是单一开关它至少分成两层一层是长期记忆落在磁盘上的 Markdown 文件里比如MEMORY.md、memory/YYYY-MM-DD.md另一层是短期会话上下文存在当前会话的对话历史里。你改settings只动了「模型从哪来」没动「记忆从哪读」。旧记忆还在磁盘上新会话启动时照样被加载进上下文于是你看到的就是「换了模型记忆还在」。更隐蔽的是自动记忆刷新机制。当会话接近自动压缩阈值时OpenClaw 会静默提醒模型把重要信息写进memory/YYYY-MM-DD.md然后再压缩。也就是说你越聊它越会主动往磁盘上写。如果你只清了会话没清文件下一次压缩又会把旧内容重新落盘。这篇要解决的就是这个排查链路改完 settings 到 TaoToken 之后怎么确认旧记忆到底残留在哪一层怎么用三步验证动作清缓存、重启会话、确认记忆目录把它定位出来最后给一份可复制的 settings 配置片段。适合已经能跑 OpenClaw、但被「记忆幽灵」困扰的人。先说结论改 settings 不会自动清记忆。你要做的是把「接入配置」和「记忆存储」当成两件独立的事分别处理。下面按排查顺序拆开讲。2. TaoToken 接入前置settings 里到底改哪几个字段在动手清记忆之前先把接入配置确认对否则你会把「记忆残留」和「接入失败」混在一起排查越查越乱。OpenClaw 的模型接入通常写在settings.json或等价的 TOML 配置里核心就三件套Base URL、API Key、Model ID。TaoToken 的接入地址是https://taotoken.net/api注意这里不要带 UTM 参数API 调用路径要干净。Key 在控制台的 API Keys 页面生成模型 ID 用你实际要调用的那个比如claude-sonnet-4-5这类。三件套缺一不可少一个就会出现 401 或者local proxy failed。我试过把 Base URL 写成带查询参数的完整推广链接结果请求直接被拒报的就是local proxy failed。后来改成纯https://taotoken.net/api才通。这个坑很典型推广链接是给人点的API 地址是给程序调的两者不能混。下面是一份可复制的settings.json片段路径按 OpenClaw 默认的~/.openclaw/settings.json来你按自己实际路径调整{ model: { provider: openai-compatible, baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoToken密钥, modelId: claude-sonnet-4-5, maxTokens: 8192, temperature: 0.7 }, memory: { enabled: true, directory: ~/.openclaw/memory, longTermFile: ~/.openclaw/MEMORY.md, autoFlush: true }, session: { persistHistory: true, historyDir: ~/.openclaw/sessions } }如果你用的是 TOML 风格配置等价写法是这样[model] provider openai-compatible baseUrl https://taotoken.net/api apiKey sk-你的TaoToken密钥 modelId claude-sonnet-4-5 maxTokens 8192 [memory] enabled true directory ~/.openclaw/memory longTermFile ~/.openclaw/MEMORY.md autoFlush true改完配置后先别急着清记忆先确认接入是通的。用一条最小请求验证curl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的TaoToken密钥 \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-5, messages: [{role: user, content: 只回复两个字通了}] }返回里能看到choices数组、message.content是「通了」说明接入没问题。如果这里就报 401那是 Key 的问题报local proxy failed那是 Base URL 写错了。接入通了再往下查记忆排查才有意义。注意apiKey不要提交到 Git也不要用带 UTM 的推广链接当 Base URL。接入文档在 https://taotoken.net/doc 里面有各语言的完整示例。3. 可复制配置清缓存、重启会话、确认记忆目录三步验证接入确认之后进入正题。旧记忆被读取来源无非三个会话历史缓存、长期记忆文件、自动刷新落盘。对应的三步验证动作是清缓存、重启会话、确认记忆目录。每一步都要有可观察的结果不能凭感觉。3.1 第一步清缓存先排除会话历史残留OpenClaw 的会话历史通常存在~/.openclaw/sessions下每个会话一个文件或一个目录。你改 settings 后如果直接复用旧会话历史上下文会被原样加载看起来就像「记忆没清」。先在会话内执行/reset/reset清空当前对话的短期上下文但不动MEMORY.md里的长期记忆。执行完再问一个只有旧会话才知道的问题如果它答不上来说明短期缓存清了如果还能答上来那残留就在长期记忆文件里继续第二步。想彻底开新会话用/new/new创建一个全新会话完全不沿用任何历史上下文。这一步能帮你区分「是会话缓存问题」还是「是磁盘文件问题」。如果/new之后旧记忆还在那基本可以锁定是MEMORY.md或memory/目录里的文件在起作用。清缓存时还可以顺手看一眼上下文占用/context list /context detail这两个命令会告诉你具体是哪些文件、哪些工具描述占用了上下文窗口。如果列表里出现了MEMORY.md或memory/2025-xx-xx.md那残留来源就实锤了。3.2 第二步重启会话确认网关有没有重新加载配置改完 settings 后很多人只重启了会话没重启网关。OpenClaw 的网关进程在启动时读取配置和记忆目录如果你只/new不重启网关旧的内存态可能还在。正确顺序是先停网关再起openclaw gateway stop openclaw gateway start停之前建议先看一眼状态openclaw gateway status重启后再执行/status确认当前会话的模型、上下文窗口使用情况。如果/status显示的模型还是旧的说明 settings 没被读到检查配置文件路径和 JSON 语法。JSON 里多一个逗号都会导致解析失败而 OpenClaw 有时不会明确报错只是静默用默认值。重启网关这一步经常被跳过但它是区分「配置生效」和「配置没生效」的关键。你可以这样验证把modelId临时改成一个明显不同的值重启网关/status里如果跟着变了说明配置读取链路是通的。3.3 第三步确认记忆目录找到残留文件前两步都过了旧记忆还在那就直接去磁盘上找。OpenClaw 的长期记忆默认在ls -la ~/.openclaw/ ls -la ~/.openclaw/memory/重点看这几个位置路径作用是否影响旧记忆读取~/.openclaw/MEMORY.md长期记忆主文件是优先级最高~/.openclaw/memory/YYYY-MM-DD.md按日期落盘的记忆是会被合并加载~/.openclaw/sessions/会话历史是复用旧会话时加载~/.openclaw/settings.json接入与记忆配置否但决定读哪个目录确认残留来源后按需清理。只想重置当前话题、保留长期记忆用/reset想彻底清空当前对话用/new想让对话瘦身但不丢关键信息用/compact它会把较旧的对话历史总结成简短摘要释放上下文窗口。如果要彻底删除所有本地数据包括所有智能体的记忆和工作区先停网关openclaw gateway stop然后删除主数据目录操作不可逆rm -rf ~/.openclaw如果还想清理旧版本可能遗留的目录可以一并执行rm -rf ~/.clawdbot ~/.moltbot ~/.molthub删完再openclaw gateway start这时是真正的全新开始。注意rm -rf没有回收站删之前确认路径没写错。4. 验证请求与成功结果怎么确认记忆真的清了清完之后不能只看「感觉」要有可复现的验证动作。下面这套验证流程能帮你确认记忆到底清没清干净。第一步重启网关后开一个全新会话openclaw gateway stop openclaw gateway start然后在会话里执行/new再问一个只有旧记忆才知道答案的问题比如「我上次让你记的那个项目代号是什么」。如果它答「不知道」或「没有相关记录」说明长期记忆没被加载。第二步用/status看上下文窗口/status重点看上下文占用是否降下来了。如果之前MEMORY.md占了几千 token清完之后占用应该明显下降。再用/context list确认列表里不再出现旧的记忆文件。第三步发一条新消息确认新记忆能正常写入。比如告诉它「记住测试代号是 TT-001」然后执行/compact触发一次压缩再去磁盘上看cat ~/.openclaw/memory/$(date %Y-%m-%d).md如果新写入的内容出现在当天的记忆文件里说明记忆系统工作正常而且写入的是新内容不是旧残留。这一步很关键它同时验证了「旧记忆已清」和「新记忆可写」。第四步用 API 直接验证模型侧。有时候 OpenClaw 本地清了但你调用的模型侧还有缓存。用 curl 发一条不带任何历史的消息curl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的TaoToken密钥 \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-5, messages: [{role: user, content: 我们之前聊过什么}] }如果返回的是「我们没有之前的对话记录」这类回答说明模型侧没有拿到历史上下文问题确实出在本地记忆加载。如果模型侧还能说出旧内容那要检查是不是请求里被自动注入了历史消息。成功的结果长这样/new后旧问题答不上来/status上下文占用下降/context list不再列出旧记忆文件当天memory/YYYY-MM-DD.md只包含新写入内容curl 直连返回无历史。五个信号都对上才算清干净。5. 本篇常见错排查401、local proxy failed、choices 为空、OAuth 报错清记忆过程中最容易混进来的其实是接入错误。下面按真实报错逐个拆。401 UnauthorizedKey 无效或没带上。检查Authorization: Bearer sk-xxx里的 Key 是不是 TaoToken 控制台新生成的有没有多余空格。如果 settings 里 Key 写对了但 curl 报 401检查是不是用了旧 Key。Key 在 https://taotoken.net/api-keys 生成。local proxy failedBase URL 写错。最常见的是把带 UTM 的推广链接当成了 API 地址。正确写法是纯https://taotoken.net/api不要带?utm_source...。另外检查有没有多写/v1导致路径重复比如https://taotoken.net/api/v1/v1/chat/completions。choices 为空或返回结构异常请求体格式不对。messages必须是数组role和content不能少。如果返回里choices是空数组先看error字段。还有一种情况是modelId写了一个不存在的模型名接口不报错但返回空。OAuth 相关报错如果你用的是 Claude Code 或类似工具OAuth 流程和 API Key 是两套认证。OAuth 报错通常和auth.json有关检查~/.claude/auth.json或对应工具的凭证文件。用 API Key 接入时不需要走 OAuth两者不要混用。如果同时配了 OAuth 和 API Key可能互相覆盖。改了 settings 但/status没变配置文件路径不对或者 JSON 语法错误。用python -m json.tool ~/.openclaw/settings.json验证 JSON 合法性。TOML 用python -c import tomllib; tomllib.load(open(config.toml,rb))验证。清了记忆但新会话还能说出旧内容检查是不是有多个记忆目录。旧版本可能把数据写在~/.clawdbot或~/.moltbot新版读的是~/.openclaw但旧目录没删某些加载逻辑可能扫到。用find ~ -name MEMORY.md 2/dev/null全局搜一遍。自动记忆刷新导致「清了又回来」autoFlush为 true 时会话接近压缩阈值会静默写盘。如果你在旧会话里聊到触发压缩旧内容可能被重新写进memory/YYYY-MM-DD.md。彻底清理时先把autoFlush设为 false清完再开。排障顺序建议先 curl 验证接入再/new验证会话再查磁盘文件最后看网关日志。接入文档在 https://taotoken.net/doc 模型对话调试可以用 https://taotoken.net/chat 。6. 长期编码与 Agent 场景把记忆管理纳入日常流程如果你只是偶尔用 OpenClaw 聊天清一次记忆就够了。但如果你把它当长期编码助手或 Agent 用记忆管理得变成日常动作否则每隔几天就要排查一次「记忆幽灵」。我的做法是分三层管理。第一层会话级每次切换任务用/new同一任务内用/reset重置话题接近上下文上限时用/compact瘦身。第二层文件级每周看一眼~/.openclaw/memory/下的日期文件把还有用的内容手动合并进MEMORY.md没用的删掉。第三层配置级autoFlush按需开关做实验性任务时关掉避免污染长期记忆。对于长期编码场景模型选择上可以用 Coding Plan地址是 https://taotoken.net/coding-plan 它更适合持续性的代码生成和 Agent 调用。接入方式还是那三件套Base URLhttps://taotoken.net/api、API Key、Model ID。配置片段和前面 §2 一致只是modelId换成你 Coding Plan 里对应的模型。如果你用 Claude Code 配合 OpenClaw注意auth.json和settings.json是两套配置。Claude Code 的凭证在~/.claude/auth.jsonOpenClaw 的接入在~/.openclaw/settings.json。两边都配 TaoToken 时Base URL 都写https://taotoken.net/apiKey 可以用同一个但不要互相覆盖文件。一个实用技巧把清理动作写成脚本每次切换大任务前跑一遍。比如#!/bin/bash openclaw gateway stop rm -f ~/.openclaw/memory/$(date -d yesterday %Y-%m-%d).md openclaw gateway start echo 记忆已清理网关已重启这个脚本只删昨天的记忆文件保留更早的归档适合日常维护。彻底清理还是手动rm -rf ~/.openclaw更稳妥。最后提醒一点清记忆不是目的让记忆可控才是。改 settings 到 TaoToken 只是换了模型来源记忆的读写路径没变。把「接入配置」和「记忆存储」分开管理每次改完接入后按三步验证走一遍就不会再被旧记忆干扰。控制台在 https://taotoken.net/console API Keys 在 https://taotoken.net/api-keys 需要时去对应页面操作即可。