OpenClaw 性能调优指南:定位 AI 助手响应慢并压降内存占用
【免费下载链接】openclawYour own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞项目地址: https://gitcode.com/GitHub_Trending/cl/openclaw
OpenClaw 作为跨平台的个人 AI 助手,Gateway 长期运行后常见的卡顿来自三个地方:事件循环被占满、内存持续上涨、会话库无限膨胀。调优前先分诊,再动手。
先跑一次诊断:确认瓶颈在 CPU、内存还是会话库 🩺
用项目自带的诊断命令确认问题类型,全程只读、不改状态。
openclaw status --all:本地全量诊断,看 Gateway 可达性、会话数与最近活动;openclaw health --verbose:强制向运行中的 Gateway 取实时健康快照;openclaw doctor --lint --severity-min warning:结构化体检,不写任何配置;openclaw gateway stability:查看稳定性记录器,事件循环延迟、CPU 核占用比、活跃/排队会话数都在这里。
对号入座三种典型表现:
- CPU/事件循环瓶颈:日志反复出现
diagnostic.liveness.warning,事件循环延迟高,每条回复都慢而不是某一轮慢。 - 内存瓶颈:
gateway stability里能看到内存压力事件(RSS/heap 越过阈值),进程占用只涨不回落。 - 会话与 I/O 瓶颈:
~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite及其 WAL 文件越来越大,新会话启动、压缩都变慢。
命令语义详见 docs/gateway/health.md 与 docs/gateway/doctor.md。
零配置快速调优:一条命令就生效 ⚡
改什么 → 怎么改 → 预期效果,两句话讲完。
- 清掉陈旧会话行:先
openclaw sessions cleanup --dry-run预览,再openclaw sessions cleanup --enforce执行。效果是会话行数与磁盘占用回到session.maintenance设定的水位线。 - 修掉遗留状态:运行
openclaw doctor --fix。效果是旧版 JSON 会话文件、过期锁文件、残留插件状态被一次性迁入当前结构,启动读取不再走慢路径。
深度调优:改配置文件和插件布局 🛠️
以下改动都在~/.openclaw/openclaw.json,改前先cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak。
裁剪技能列表:砍掉启动时不可用的模块
改这里:skills.entries里禁用不满足依赖的技能,或直接用openclaw skills check找出缺二进制、缺环境变量、缺配置的项,doctor --fix可自动禁用不可用项。效果是每轮 prompt 不再携带无用的技能快照。注意别把当前正在用的技能一起禁掉,先openclaw skills list确认清单(见 docs/cli/skills.md)。
收紧上下文注入上限:避免每轮都携带臃肿上下文
改这里:agents.defaults.bootstrapMaxChars(单文件默认 20000 字符)与agents.defaults.bootstrapTotalMaxChars(总默认 60000)。
{ agents: { defaults: { bootstrapMaxChars: 12000, bootstrapTotalMaxChars: 30000 } } }效果是工作区文件被截断前送入模型的字符数明显变小。坑:AGENTS.md 被截断会丢指令,改小前先/context看每个文件的原始/注入体积。
压缩会话维护参数:控制会话库磁盘与行数增长
改这里:session.maintenance块,按需调低pruneAfter(默认30d)、maxEntries(默认 500)或maxDiskBytes(默认 10gb)。
{ session: { maintenance: { mode: "enforce", pruneAfter: "14d", maxEntries: 300, maxDiskBytes: "2gb" } } }效果是超过水位的陈旧会话按最老优先归档删除(见 docs/reference/session-management-compaction.md)。坑:归档和置顶的会话永不自动淘汰,先处理它们再谈水位线。
调低压缩保留窗口:压住长会话的重复摘要
改这里:agents.defaults.compaction.keepRecentTokens(默认 20000)。调低后自动压缩更快触发、单次摘要输入更小,长对话不再因为一次压缩卡很久。坑:窗口太小会丢近期细节,按你实际对话长度取值。
改完之后怎么确认:验证指标与回滚
用可量化指标确认效果,而不是感觉:
- 内存:改前记录
openclaw gateway stability --json里的内存读数,压测一轮后对比,内存压力事件(RSS/heap 越限)不应再出现; - 会话库:
openclaw sessions cleanup --dry-run输出的行数应稳定在你设的maxEntries水位线附近,openclaw status的会话摘要不再持续上涨; - 事件循环:
openclaw gateway stability里事件循环延迟回到个位数毫秒量级。
任何一项改出异常,回滚一行命令:cp ~/.openclaw/openclaw.json.bak ~/.openclaw/openclaw.json,再跑openclaw doctor --fix让状态与配置对齐。下次升级 OpenClaw 之后,建议重跑一次openclaw doctor --lint和上面的稳定性检查。
【免费下载链接】openclawYour own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞项目地址: https://gitcode.com/GitHub_Trending/cl/openclaw
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考