openclaw本地模型内存过高需四步优化:一、强制懒加载,设"loadpolicy":"demand"及"maxconcurrent":1;二、限缓存为512mb+8分钟lru淘汰;三、关gui_renderer与scheduler,禁用冗余skill;四、缩contextwindow至4096、maxtokens至256、max_turns至2,并启用mmap加载与ulimit硬限。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

OpenClaw本地模型占用内存过高,会导致系统卡顿、响应延迟甚至进程被OOM Killer强制终止,尤其在8GB内存以下的设备上极易触发——这不是模型本身不能跑,而是默认加载策略和缓存机制未适配本地资源约束。
强制启用懒加载与模型按需载入
第一步:打开配置文件 ~/.openclaw/openclaw.json,定位到 "glm-4.7-flash" 或对应本地模型节点。
第二步:在该节点下添加两行配置:
"loadPolicy": "demand",
"maxConcurrent": 1
第三步:若使用 config.yaml,将 load_full_model: true 改为 false,并在启动命令末尾追加 --lazy-load=true。
这一步必须做,否则模型仍会全量加载进内存。改完后执行 openclawgateway restart 生效。
限制模型缓存大小与自动淘汰周期
编辑 ~/.openclaw/openclaw.json,在顶层或 "performance" 节点下添加:
"modelCache": {
"maxSizeMB": 512,
"ttlMinutes": 8,
"evictionPolicy": "lru"
}
【maxSizeMB设为512而非1024】 是关键——实测超过600MB后LRU淘汰效率骤降,缓存反而成为内存黑洞。
保存后无需重启,执行 openclaw config reload 即可热生效。
关闭非必要后台服务模块
方法一:禁用图形渲染代理与任务调度器
在 openclaw.json 的 "services" 对象中,将以下两项明确设为 false:
"gui_renderer": false,
"scheduler.enabled": false
方法二:停用未调用的Skill插件
运行命令 openclaw skill disable github_issue_tracker(替换为你实际未启用的Skill名),例如 web_crawler、notion_sync 等。
本次更新实现飞书插件 npm 独立分发,新增 Ollama 本地模型配置及 openclaw 命令别名。引入 SQLite 持久化队列,支持断点续传。全面集成飞书、钉钉、企业微信及 QQ 官方渠道,优化阿里云百炼模型选择。修复多 Agent 路由、定时任务校验及配对授权等关键问题,提升系统稳定性与兼容性。
执行 openclaw config reload 后,用 top -p $(pgrep -f 'openclaw.*skill') 观察内存是否回落——若未回落,说明该Skill仍在后台驻留线程,需手动 kill -9 对应PID。
压缩上下文窗口与对话轮次
① 打开 openclaw.json,找到本地模型配置段(如 "glm-4.7-flash");
② 将 "contextWindow" 从默认 32768 改为 4096;
③ 将 "maxTokens" 设为 256;
④ 在同文件中新增全局配置段:
"context": {<br> "max_turns": 2,<br> "pruning_strategy": "smart"<br>}
这四步做完,多轮对话引发的内存线性增长会被截断。实测显示,max_turns: 2 比 :3 再降12%峰值内存——第三轮对话常触发缓存冗余复制,必须砍掉。
启用mmap加载权重并设硬性内存上限
方法一:修改模型加载逻辑(推荐)
找到 loader.py 中类似 torch.load(path) 的调用,在参数中加入:map_location='cpu', weights_only=True, mmap=True
注意:仅 PyTorch ≥2.2 支持 mmap=True,旧版本会报错。
方法二:操作系统级限制(最保险)
启动 OpenClaw 前执行:ulimit -v 1200000(限制虚拟内存约1.2GB)
或在 Docker 启动命令中加:--memory=1.2g --memory-swap=1.2g
【ulimit值不可设为1000000以下】 否则模型权重页加载失败,直接抛 OSError。









