OpenClaw 成本与上下文优化方案-复盘(2026-03-26)
目标:基于当前 OpenClaw 实际配置,输出一份“先审计、后变更、可回滚”的优化方案,重点解决上下文膨胀、模型成本偏高、会话噪音累积与运行时数据卫生问题。
本文档当前为 方案版,不直接改配置;如确认执行,再按本文补丁逐项落地。
1. 执行摘要
当前系统已经做对了几件事:
已关闭 heartbeat 已开启 context pruning 已启用 compaction / memory flush 当前会话缓存命中率较高
但核心高成本问题仍然存在:
默认模型仍统一使用 openai-codex/gpt-5.4main / code / writer 未做 agent 级模型分层 context pruning 仍偏保守 QMD session memory 仍可能把历史会话带回检索面 启动上下文文件存在重复职责 本地 logs / browser / session 数据堆积明显
结论
如果只做最小收益最大的动作,建议按以下顺序推进:
模型分层:给 main / code / writer / cron / 轻任务配置不同默认模型 上下文修剪增强:把 pruning 和 compaction 再收紧一档 QMD session recall 降噪:缩短 retention,必要时关闭 sessions recall 启动文件去重:收敛 SOUL / IDENTITY / TEAM / AGENTS / CONTEXT 的重复内容 运行时数据卫生:清理 logs / browser / 旧 sessions / 冗余备份
2. 当前观测(基于现场配置)
2.1 当前关键配置
默认模型: openai-codex/gpt-5.4Agent 数量:3(main / code / writer) heartbeat:全部关闭 contextPruning:已启用 mode: cache-ttlttl: 1hkeepLastAssistants: 6softTrim.maxChars: 12000hardClear.enabled: truecompaction.memoryFlush:已启用 softThresholdTokens: 90000forceFlushTranscriptBytes: 2mbQMD memory:已启用 includeDefaultMemory: truesessions.enabled: trueretentionDays: 14
2.2 当前运行状态
新 direct 会话基线大约仍在 13k tokens旧主会话可累积到 89k tokens当前会话缓存命中已较高,但默认模型成本仍高
2.3 本地数据规模
~/.openclaw/logs:约 3.0G~/.openclaw/browser:约 710M~/.openclaw/agents:约 38Msession 文件数量:约 59 各 agent sessions: main: ~15M writer: ~8.2M code: ~4.1M
2.4 结构层面的额外信号
工作区内存在大量其他工具/兼容层的 skills/ 镜像目录,例如:
.claude/skills/*.cursor/skills/*.roo/skills/*.continue/skills/*.qwen/skills/*.windsurf/skills/*等
这些不一定直接进入 OpenClaw 主上下文,但会增加工作区复杂度、扫描负担和后续维护噪音。
3. 问题分解与根因
3.1 默认模型未分层
根因
当前所有 agent 默认共用 openai-codex/gpt-5.4。
影响
简单问答也使用高价模型 cron / 检查 / 轻分析没有降级通道 “角色拆分”已做,但“成本拆分”未做
现象
即使已经有较好的缓存命中,单次请求的成本上限仍高。
3.2 上下文修剪有,但力度还不够
根因
当前 pruning / compaction 已启用,但阈值偏保守:
keepLastAssistants 偏多 softTrim 仍保留较多字符 compaction 启动较晚
影响
新会话基线仍偏高 老会话仍容易累计到较大上下文 缓存虽然有帮助,但上下文体积本身仍偏大
3.3 QMD session memory 可能引入历史噪音
根因
memory.qmd.sessions.enabled = true 且保留 14 天。
影响
历史会话中的工具输出、失败记录、重复讨论可能进入检索候选 recall 面变宽,质量不一定更高 容易把“短期会话痕迹”误当成“长期有价值记忆”
3.4 启动注入文件有重复职责
当前文件角色存在重叠
SOUL.md与IDENTITY.md:人格/身份信息重叠AGENTS.md与TEAM.md:团队分工/调度规则重叠MEMORY.md与CONTEXT.md:启动入口与热记忆职责重叠
影响
启动 prompt 存在重复信息 指令层冗余增加 维护成本高,未来更容易出现冲突
3.5 运行时数据卫生不足
根因
logs / browser / sessions / 旧备份持续累积。
影响
本地磁盘占用高 排障噪音大 归档与备份成本增加 会话/检索治理更难做精细化
4. 优化目标
本次优化目标拆成四类:
4.1 成本目标
让简单任务不再默认走顶配模型 让轻任务、定时任务、后台检查优先走小模型
4.2 上下文目标
降低新会话基线 token 降低老会话累积速度 避免 session recall 把短期垃圾带回 prompt
4.3 可靠性目标
保留重要 persona / 规则 / 记忆能力 避免为了省钱把关键行为搞坏
4.4 运维目标
让工作区结构更清晰 降低 logs / browser / sessions 的维护成本
5. 方案设计:A / B / C 三档
方案 A:最小改动版(推荐先做)
目标
只做最高 ROI、风险最低的调整。
包含项
给 agent 做默认模型分层 收紧 context pruning 一档 缩短 QMD sessions retention 清理运行时大文件(logs / browser / 旧 session)
预期收益
成本下降明显 行为风险较低 不需要大规模改工作区结构
风险
个别轻任务如果路由到过小模型,回答质量可能下降 pruning 更 aggressive 后,超长对话回溯能力会下降一些
方案 B:平衡优化版(推荐作为主方案)
目标
在方案 A 基础上,把启动文件和记忆结构一起收敛。
包含项
方案 A 全部内容 精简 IDENTITY.md将 CONTEXT.md缩成跳转说明,弱化其启动地位合并 TEAM.md与AGENTS.md的重复规则段复查 workspace 中镜像 skills 目录是否需要迁移归档
预期收益
成本与上下文双下降 规则层更干净 后续维护明显更轻松
风险
改动面比方案 A 略大 如果收敛文档不谨慎,可能影响既有工作流
方案 C:激进省钱版
目标
把“省钱”放第一优先级。
包含项
方案 B 全部内容 关闭 QMD sessions recall 进一步降低 compaction / pruning 阈值 将更多任务默认降到小模型 更积极清理旧 sessions / browser 数据
预期收益
成本下降最大 上下文明显更轻
风险
记忆召回能力可能明显下降 某些复杂任务需要更频繁手动切回大模型
6. 推荐方案
推荐:先执行 方案 B(平衡优化版)
理由:
比方案 A 更完整,能真正解决“上下文结构重复”问题 比方案 C 风险低,不会一刀切砍掉 session recall 对当前这套 main / code / writer 多 agent 结构最匹配
7. 具体改动提案(不直接执行)
7.1 提案一:模型分层
建议目标
按“任务性质 + agent 角色”双维度做分层。
建议原则
main:默认中档;复杂分析再升级 code:默认中高档;重构/复杂调试再升级 writer:默认中档;成稿润色/高要求表达再升级 cron / 检查 / 心跳 / 简单通知:默认小模型
推荐落地方式
最小版
先至少实现:
main 默认不再是最高价模型 code / writer 单独指定模型,而不是继承同一个默认
预期收益
这是最大单项收益来源 实际总成本有机会下降 40%~70%(取决于任务结构)
回滚
保留当前 openclaw.json备份任一 agent 效果不佳,可单独切回 gpt-5.4
7.2 提案二:收紧 context pruning
当前
ttl: 1hkeepLastAssistants: 6softTrim.maxChars: 12000softThresholdTokens: 90000
建议方向
建议值(平衡版)
keepLastAssistants:6 -> 4softTrim.maxChars:12000 -> 8000~10000softThresholdTokens:90000 -> 60000~70000ttl: 视会话体验,评估是否从1h收到30m~45m
预期收益
降低上下文累积速度 降低老会话在 70k~100k token 区间长期停留的概率
风险
超长对话中,早期细节更容易被裁掉
回滚
恢复原阈值即可
7.3 提案三:QMD session recall 降噪
当前
sessions.enabled: trueretentionDays: 14
建议分两步
第一步(推荐)
保留 sessions.enabled: true将 retentionDays: 14 -> 5~7
第二步(可选)
如果发现 recall 噪音仍高:
关闭 sessions.enabled只保留 memory 文件体系的长期记忆
预期收益
降低历史会话干扰 提高 recall 质量稳定性 降低检索噪音
风险
某些“前几天聊过但没写 memory 文件”的内容更难召回
回滚
把 retention 恢复到 14 天,或重新启用 sessions recall
7.4 提案四:启动文件去重收敛
当前重复点
SOUL.mdvsIDENTITY.mdAGENTS.mdvsTEAM.mdMEMORY.mdvsCONTEXT.md
建议收敛方式
处理建议
IDENTITY.md:缩成最小身份标签,或并入SOUL.mdCONTEXT.md:保留为兼容文件,但正文改成“去 MEMORY.md / memory/core.md”,不再承载太多活跃状态TEAM.md:只保留团队协作总览;具体调度规则归AGENTS.md
预期收益
减少重复注入 降低规则冲突概率 后续维护简单很多
风险
如果删得过快,某些旧工作流可能临时不适配
回滚
所有文件先备份再改;必要时恢复原版
7.5 提案五:运行时数据卫生
当前重点对象
~/.openclaw/logs≈ 3.0G~/.openclaw/browser≈ 710Magent sessions 若干 大量历史备份文件
建议动作
建议清理优先级
清理过旧 logs 评估 browser profile 是否可瘦身/重建 清理久未使用的 session 文件 归档或删除冗余 openclaw.json.bak*
预期收益
磁盘占用下降 维护负担减轻 运行环境更干净
风险
删除 logs 后,旧问题排障证据会减少 重建 browser profile 可能会丢失一些登录状态
回滚
删除前先打包归档到压缩包或 quarantine 目录
7.6 提案六:工作区镜像 skills 目录归档
当前情况
workspace 里有大量非 OpenClaw 主技能目录的镜像 skills 目录。
建议
建立一个明确的归档区,如 workspace/_archives/tool-skill-mirrors/将不参与主系统运行的外部兼容层技能迁入归档 保持 workspace/skills/只放真正要给 OpenClaw 用的技能
预期收益
降低目录噪音 降低后续排查时的误判成本 结构更清晰
风险
某些外部工具若依赖这些目录,迁移后需要同步调整它们自己的配置
回滚
原路径恢复即可
8. 推荐实施顺序
第一阶段:只做高 ROI、低风险
agent 模型分层 pruning / compaction 收紧一档 QMD sessions retention 从 14 天降到 7 天
第二阶段:做结构收敛
精简 IDENTITY.md缩减 CONTEXT.md合并 TEAM.md/AGENTS.md重复内容
第三阶段:做运行时清理
清理 logs 清理旧 sessions 评估 browser profile 瘦身 归档镜像 skills 目录
9. 验证方案
每完成一阶段,都建议用 新会话 验证,而不是在旧会话里凭感觉判断。
核心验证指标
新会话基线 token 是否下降 简单问题是否仍能稳定回答 复杂问题是否仍能维持质量 记忆召回是否出现明显退化 是否出现规则丢失/人格异常/调度异常
建议观察项
prompt tokens cached tokens / cache hit 响应速度 recall 质量 main / code / writer 各 agent 体验差异
10. 回滚原则
所有优化按以下原则执行:
一次只改一类配置 每次变更前先备份 每次变更后用新 session 验证 任意异常,先回滚再分析
最小回滚单元
模型分层:可逐 agent 回滚 pruning:可逐参数回滚 memory recall:可逐项恢复 retention / sessions.enabled 文件收敛:可直接恢复旧版 md 文件 数据清理:先归档、后删除
11. 最终建议
如果只给一句执行建议:
先做“模型分层 + pruning 收紧 + QMD session recall 降噪”,再做“启动文件去重”,最后做“logs/browser/session 清理”。
这是当前这套 OpenClaw 配置下,收益最大、风险可控、回滚也最简单的路线。
12. 已执行变更:模型分层(2026-03-25)
已按当前决策完成第一轮模型分层落地。
已应用的 agent 分层
main→openai/gpt-5-minicode→openai-codex/gpt-5.4writer→openai/gpt-5.4-mini
已加入 allowlist / models 的模型
openai/gpt-5-miniopenai-codex/gpt-5.4openai/gpt-5.4-miniopenai/gpt-4o-mini
当前全局默认
agents.defaults.model.primary已改为openai/gpt-5-mini
说明
本轮已经把三类主 agent 的默认模型拆开。
其中:
main的默认模型已经降到日常档code继续保留工程稳定档writer使用较轻但质量仍较高的写作档
“轻任务 / 后台 → openai/gpt-4o-mini” 目前已加入可用模型池,但还没有单独做自动路由规则。 也就是说:
现在它已经可以作为后续轻任务路由目标使用 但是否自动用于 cron / 后台 / heartbeat,仍需下一轮再补具体路由策略
备份与校验
备份文件: ~/.openclaw/openclaw.json.bak-model-layering-20260325-1129配置校验:已通过 openclaw config validate
已执行变更:pruning 收紧 + QMD session recall 降噪
已完成一轮最小可回滚的上下文治理 patch:
context pruning
ttl:1h -> 45mkeepLastAssistants:6 -> 4softTrim.maxChars:12000 -> 9000
compaction / memory flush
softThresholdTokens:90000 -> 65000
QMD sessions recall
retentionDays:14 -> 7
本轮意图
让旧上下文更早进入修剪窗口 降低长会话继续膨胀的速度 收窄 QMD sessions recall 的时间面,减少历史噪音带回 prompt 的概率
本轮备份
~/.openclaw/openclaw.json.bak-pruning-qmd-tune-20260325-1423
后续建议
下一步建议继续做两件事:
为轻任务 / 后台任务补单独路由策略,使 openai/gpt-4o-mini真正自动吃到轻任务观察一到两个新 session,确认: main是否已稳定走gpt-5-miniwriter是否已稳定走gpt-5.4-minicode是否仍保持预期质量
轻任务路由结论(当前版本)
本轮检查后,**未发现一个明确、稳定、官方推荐的“全局轻任务模型开关”**可直接把后台/轻任务统一切到某个模型。
因此更稳的落地方式是:
方案 1:保守版
保持当前 main / code / writer三 agent 分层不变轻任务由 main继续承接在未来的 cron / 自动化任务定义中,显式指定轻任务走单独 agent 或单独模型
方案 2:推荐版
新增一个专门处理轻任务/后台任务的 agent,例如:
light→openai/gpt-4o-mini
由它承接:
cron 后台检查 简短通知 简单总结 低风险自动化动作
这样做的好处:
路由清晰 成本边界清晰 不会污染 main的默认模型策略后续如果要把 cron、watch、heartbeat、后台 worker 切过去,也更容易
当前建议:如果要真正把 openai/gpt-4o-mini 用起来,最稳方案是新增一个 light agent,而不是硬找一个不存在的“轻任务全局路由键”。
已执行变更:新增 light agent
已完成以下落地:
新增 agent: light模型: openai/gpt-4o-miniworkspace: /Users/xulanzhong/.openclaw/workspace-light
当前四类 agent 分层
main→openai/gpt-5-minicode→openai-codex/gpt-5.4writer→openai/gpt-5.4-minilight→openai/gpt-4o-mini
本次新增的备份
~/.openclaw/openclaw.json.bak-add-light-agent-20260325-1139
下一步
后续要想让这次分层真正完整生效,需要把以下任务逐步路由到 light:
cron 后台检查 简短通知 短摘要 低风险自动化任务
当前这一步已经把基础结构搭好,但“具体哪些任务交给 light”还需要在后续 cron / 自动化定义里继续接入。
已执行变更:cron 重构
已将原先单条、偏重、易超时的 daily-memory-hygiene 重构为两条:
1) 每日轻检查
名称: daily-memory-checkagent: light模型: openai/gpt-4o-mini时间:每天 04:00特征: 只读 MEMORY.md、memory/topics/cron-jobs.md、最近 1 天 daily memory只做增量检查 不做大规模合并 不改 OpenClaw / QMD 配置 输出控制为极简摘要
2) 每周深整理
名称: weekly-memory-hygieneagent: code模型: openai-codex/gpt-5.4时间:每周日 04:30特征: 读取最近 7 天 daily memory + topics 承担长期信息合并、去重、专题沉淀 保留原来的深整理职责,但降低执行频率
这样拆分后的收益
每日任务更轻,显著降低超时风险 lightagent 真正开始承接轻任务深整理仍保留在 code,避免能力不足带来记忆误治理后台任务分层开始真正落地,而不只是停留在 agent 配置层
13. 收官验收
本节记录本轮“成本 + 上下文 + 后台治理”优化的最终落地状态与可验证指标。
13.1 模型分层(Codex OAuth 口径)
由于当前鉴权方式为 OpenAI Codex OAuth,生产可用模型以
openai-codex/*为准。
全局默认( agents.defaults.model.primary):openai-codex/gpt-5.2main:openai-codex/gpt-5.2code:openai-codex/gpt-5.4writer:openai-codex/gpt-5.4-minilight:openai-codex/gpt-5.4-mini
13.2 上下文修剪(pruning/compaction)
contextPruning.ttl:45mcontextPruning.keepLastAssistants:4contextPruning.softTrim.maxChars:9000compaction.memoryFlush.softThresholdTokens:65000
13.3 QMD session recall 降噪
memory.qmd.sessions.enabled:truememory.qmd.sessions.retentionDays:7
13.4 cron 重构(轻/重拆分)
当前 cron 共 2 条:
daily-memory-check
agent: lightmodel: openai-codex/gpt-5.4-minitimeoutSeconds: 480最近一次手动验证:成功(约 33 秒)
weekly-memory-hygiene
agent: codemodel: openai-codex/gpt-5.4timeoutSeconds: 1200已收敛为“每周增量整理版”(最近 3 天真正 daily + topics)
13.5 启动文件去重(最小改动版)
已精简:
IDENTITY.mdCONTEXT.md(降级为兼容占位,指向分层记忆入口)TEAM.md(精简为结构 + 最小调度规则) 并已生成对应.bak-dedupe-*备份。
13.6 运行时数据清理(保守版)
logs: ~/.openclaw/logs约3.0G → 263M(归档压缩 + 截断)browser: ~/.openclaw/browser/openclaw/user-data约710M → 152M(清缓存)sessions:清理 >14 天旧文件,session 文件数 59 → 35配置备份:归档到 ~/.openclaw/config-archive/
14. 下一步建议(可选)
14.1 新会话验收
建议新开一个 session,观察:
基线 token 是否下降 pruning 是否更早触发 recall 是否更干净(尤其是 sessions retention 缩短后的效果)
14.2 可选修复:tools.profile allowlist 警告
网关日志提示 tools.profile (coding) allowlist contains unknown entries (...)。 这不影响当前优化主线,但可以作为后续一次性清理项(对齐工具配置)。
附:本次方案聚焦的优化点清单
[x] 默认模型未分层 [x] agent 级模型未拆分 [x] pruning 收紧 [x] QMD session recall 降噪 [x] cron 轻/重拆分并落地到 light [x] 启动文件去重 [x] logs/browser/sessions 清理
夜雨聆风