OpenClaw在使用过程中,最容易遇到的三个问题:①Token消耗高;②会话记忆经常断片;③执行任务,经常没有反馈。本文将通过Skills优化这些问题。
这三个问题是相互影响的,大部分情况都是memory的问题。解决了一个,可能也提高了另一个的能力,比如QMD解决了Token消耗高的问题的同时,也增强了记忆。因此,这边也只是大致分了下每个问题的主要方案。
01
—
Token消耗高
在OpenClaw-目录结构,我们介绍了会话加载需要上传一些内容,主要包括两个方面:身份类文件(AGENTS.md、SOUL.md、USER.md等文件)、记忆类文件(MEMORY.md、memory/YYYY-MM-DD.md(今天和昨天的)、当前会话的一些未过期的上下文)。
身份类文件,最多只能精简,例如删除不必要的废话等,但也压缩不了多少。此外,随着使用时间的累积,龙虾会越来越懂你,相应的【灵魂三件套】文件大小也会变大。
记忆类文件,在OpenClaw-Skills中介绍了QMD的方式,通过用户输入,去memory中查询相关信息,替代发送整个记忆文件,以此来减少Token的消耗。除了QMD之外,还有LanceDB、memOS等能优化记忆,节省Token。这一部分才是Token减耗的关键。
02
—
记忆断片
这边列举几种可能,并尽量给出一些Skills。
1、未检索Session
不管是QMD,还是默认的检索方式,基本上都是只会检索MEMORY.md、memory/YYYY-MM-DD.md等文件,对于session中的内容,基本不会去检索。
OpenClaw自带了一个解决方案,那就是将sessionMemory设置为true,即可同时包含memory和sessions作为数据来源。
openclaw config set memorySearch.experimental.sessionMemory true2、记忆存储优化/备份
Session不会主动保存到memory/YYYY-MM-DD.md中,OpenClaw中有两个地方能设置:
1、memoryFlush
将其设置为true,那么当会话的上下文接近限制时,就会触发更新。
openclaw config set compaction.memoryFlush.enabled true{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.",},},},},}
当前会话Token估算值 > (contextWindow - reserveTokensFloor - softThresholdTokens),将触发刷新(Flush)操作,写入memory/YYYY-MM-DD.md。

3、Skills
ClawHub上有很多关于记忆优化、备份的Skills。例如:
将session实时保存session-memory。
优化记忆类别memory-manager。
优化搜索方法。
记忆备份elite-longterm-memory。
自我提升self-improving-agent。
等等等等,建议按需使用。

3、Session持久化
经常会遇到一个问题,昨天你问了Agent一件事,第二天,再来问他,他却失忆了。这种主要是Session的Lifecycle问题。在OpenClaw中,关于这块是这样描述的(截至2026.3.4):
Reset policy: sessions are reused until they expire, and expiry is evaluated on the next inbound message.
重置策略:会话会被复用直至过期,而过期判定会在收到下一条传入消息时进行。
https://docs.openclaw.ai/concepts/session#lifecycle
Session会被过期重置,默认的重置规则是,每天凌晨4点。
Daily reset: defaults to 4:00 AM local time on the gateway host. A session is stale once its last update is earlier than the most recent daily reset time.
每日重置:默认为网关主机本地时间的凌晨 4:00。如果会话的最后更新时间早于最近一次的每日重置时间,则该会话被视为陈旧。
https://docs.openclaw.ai/concepts/session#lifecycle
如果你在凌晨 3:50 发了一条消息,然后在 8:00又发了一条,由于8:00的消息,触发检查时,发现本次消息的时间(8:00)晚于今日的重置点(4:00),系统会开启一个新会话。并将8:00发的消息,作为新会话的第一条输入处理。
Idle reset (optional): idleMinutes adds a sliding idle window. When both daily and idle resets are configured, whichever expires first forces a new session.
空闲重置(可选):idleMinutes 会添加一个滑动的空闲时间窗口。当同时配置了每日重置和空闲重置时, whichever expires first( whichever 先达到过期条件)将强制开启新会话。
https://docs.openclaw.ai/concepts/session#lifecycle
系统默认配置:
{session: {scope: "per-sender", // keep group keys separatedmScope: "main", // DM continuity (set per-channel-peer/per-account-channel-peer for shared inboxes)reset: {// Defaults: mode=daily, atHour=4 (gateway host local time).// If you also set idleMinutes, whichever expires first wins.mode: "daily",atHour: 4,idleMinutes: 120,},resetTriggers: ["/new", "/reset"],store: "~/.openclaw/agents/{agentId}/sessions/sessions.json",mainKey: "main",},}
如果启用了hook里的session-memory,那么Session被过期重置时,也会触发这个哦。但有个问题,不是所有的Session内容都会保留,只会保留重要的信息到memory。
比如你第一天8点问他【1+1等于多少】,第二天8点再问他【在此基础上,再加1等于多少】,他就不会了。


因此,有个邪修的办法,删掉每日重置策略,延长空闲重置时间窗口为1年。
"session": {"reset": {"idleMinutes": 525600,"mode": "idle"},},

再加上,我们①勾选了session-memory,②设置了memoryFlush,③启用了sessionMemory。就不太会出现断片的情况。
但这样真的就万能了吗?NO,现在或许有效,但下一次版本更新,增加了新的功能,可能就无效了。所以建议按需使用。
03
—
任务中断
在执行一个复杂任务时,执行着、执行着,龙虾就没有反应了。基本上都是上下文的问题。一般的解决方案是:①把复杂的任务,拆成多项,类似todolist;②分发给不同的Agent,或者就同一个Agent;③做完一项,勾选一项,直到最后完成;④建立心跳等机制,定时检查进度。
Task Decomposition & Orchestration(任务拆解与编排)
这套逻辑(拆解->分发->执行/勾选->监控)是目前AI Agent编排(Agent Orchestration)和多智能体系统(Multi-Agent Systems, MAS)的核心工作流。
在ClawHub上也有相关的Skills。
agent-orchestrator:将宏任务分解为子任务,生成带有动态生成 SKILL.md文件的专用子代理,协调基于文件的通信,整合结果,并在完成后解散代理。
planning-with-files:实现Manus风格的文件规划以应对复杂任务。用于启动复杂的多步骤任务、研究项目或任何需要调用>5 个工具的任务。
task-decomposer:将复杂的用户请求分解为可执行子任务,识别所需能力,搜索skills.sh现有技能,并在无解决方案时创建新技能。
automation-workflows:设计并实施自动化工作流。把多个Skills串起来做复杂的事。
但再多,也不如定制,可以让大模型为你量身定制一个编排的Skill。通过自带skill-creator技能,就能实现。
以上内容,截至OpenClaw2026.3.2版本。======END=======
夜雨聆风