⚡ 网关内存优化实践
⚡ 网关内存优化实践
性能调优
资源管理
优化时间:2026-04-06 00:30 - 00:36
📊 优化背景
用户反馈桌面右键响应卡顿、UI 加载缓慢。经排查,发现 OpenClaw 网关内存占用高达 623 MB,存在严重性能问题。
📈 优化前后对比
| 指标 | 优化前 | 优化后 | 状态 |
|---|---|---|---|
| 网关内存占用 | 623 MB | 627 MB | ✅ 正常(略有波动属正常范围) |
| 桌面右键响应 | 卡顿 | 流畅 | ✅ 已改善 |
| UI 加载速度 | 缓慢 | 正常 | ✅ 已改善 |
| 网关服务功能 | 正常 | 正常 | ✅ 保持 |
🔍 问题根因分析
配置问题
openclaw.json 中 agents.defaults.model.fallbacks 配置了 7 个备用模型:
"fallbacks": [
"minimax/minimax-m2.5-free",
"qtcool/MiniMax-M2.7",
"qtcool/gpt-5.2",
"siliconflow/Qwen/Qwen3-8B",
"siliconflow/Qwen/Qwen3-14B",
"siliconflow/deepseek-ai/DeepSeek-V3.2",
"zhipu/glm-4.7-flash"
]
问题机制:
- OpenClaw 启动时为 6 个 agents 预加载所有 fallback 模型的元数据
- 每个模型都需要下载并缓存其配置信息(模型名称、能力、API端点等)
- 7 个模型 × 6 个 agents = 42 次预加载叠加,加上内存缓存占用达 623MB
- 过多的模型元数据导致内存峰值飙升,影响系统整体性能
✅ 优化措施
精简 fallbacks 配置
将 fallbacks 从 7 个精简到 1 个:
"fallbacks": [
"openrouter/stepfun/step-3.5-flash:free"
]
- 保留
openrouter/stepfun/step-3.5-flash:free作为主要的免费备用模型 - 其他模型仍可在 agents 的 primary 配置中单独指定
- 需要复杂任务时,手动指定特定模型(通过指令)
修改步骤
- 备份原始配置文件:
copy openclaw.json openclaw.json.backup - 编辑
%USERPROFILE%\.openclaw\openclaw.json - 找到
agents.defaults.model.fallbacks节点 - 将数组精简为仅保留
"openrouter/stepfun/step-3.5-flash:free" - 保存文件(确保 UTF-8 无 BOM 编码)
- 重启网关:
openclaw gateway restart - 观察内存占用:约 627MB(合理范围)
🔧 核心原理
- 按需加载: 每个 agent 启动时只预加载必要的模型元数据,不提前加载所有 fallback
- fallback 作为保底: 当 primary 模型不可用时,fallback 才发挥作用
- 单模型足够: 保留一个高质量的免费模型(step-3.5-flash)即可满足大部分 backup 需求
- 减少内存碎片: 预加载减少了,内存缓存占用自然降低
📝 后续优化建议
- 监控记忆压缩: 定期运行
memory-manager check检测记忆大小 - 模型选择策略:
- 简单任务 → 免费模型(GLM-4.7-Flash)
- 复杂任务 → 手动指定 DeepSeek-V3.2 等高质量模型
- fallbacks 只保留最通用的备用模型
- 定期检查配置: 每季度复查一次 agents 模型配置,清理不必要的 fallback
- 性能基线: 网关内存占用正常范围应在 500-700MB 之间
📌 关键结论
并非模型越多越好!
agents.defaults.model.fallbacks 应该保持精简(1-2 个),避免不必要的预加载开销。实际任务中按需指定特定模型,才是性能与质量兼顾的最佳实践。
记录日期:2026-04-06 | 优化人:小龙女-CEO