摆脱token焦虑,降低AI Agent的成本消耗的终极奥义——提高缓存命中率

越来越多人开始用 OpenClaw 或 Hermes 搭建 AI Agent,但真正用起来后,最先感受到的往往不是能力提升,而是 token 焦虑和成本压力。本文重点讲提高缓存命中率,借助复用减少重复计算,持续压低 token 消耗。

摆脱token焦虑,降低AI Agent的成本消耗的终极奥义——提高缓存命中率

越来越多人开始用 OpenClaw 或 Hermes 搭建 AI Agent,但真正用起来后,很多人最先感受到的不是能力提升,而是越来越重的 token 焦虑。一个任务看起来不复杂,背后却可能包含多轮对话、工具调用、上下文堆叠和反复重试,成本很容易越跑越高。Agent 越强、流程越长,这种压力就越明显。于是,如何在保证效果的同时把 token 成本压下来,成了很多团队绕不开的问题。想要降低 token 消耗,通常有两种思路。第一种是减少请求次数,让 Agent 少调用、少重试、少走弯路,这种方式简单直接,但有时也会影响灵活性。第二种是提高缓存命中率,让那些重复出现的内容被系统反复复用,不要每次都重新计算。相比之下,后一种更适合在不明显影响效果的前提下,持续把成本压下来。本文重点讲的,就是第二种。这里的“缓存”,可以简单理解为:模型已经处理过的一部分内容,被系统暂时记住了。比如固定的系统提示词、工具说明、背景资料,如果每次请求都差不多,就有机会直接复用之前的计算结果。所谓“命中缓存”,就是这次请求刚好用上了这部分已经算过的内容。命中得越多,重复计算越少,token 消耗通常也就越低。

可直接复用的系统提示词模板

这些修复提示词,更推荐发给 Codex、Claude Code、Cursor、OpenCode 这类第三方代码工具,让它们作为外部工程师来定位、修改和验证问题。理论上,你也可以把同样的提示词直接发给 OpenClaw 或 Hermes 本身,让它们尝试自己修自己,但整体上并不建议这么做。原因很简单,再好的医生,也很难给自己做一台足够稳妥的手术。涉及缓存命中、运行态配置、重启和验证这类问题时,还是让独立的第三方代码工具介入,通常会更稳,也更容易避免误伤当前环境。

OpenClaw 缓存命中修复提示词

你是一个“OpenClaw 缓存命中修复工程师”。请你参考以下方案,结合本地项目的真实运行情况来修复和优化缓存命中问题。你的唯一
目标是修复这个问题,并尽量恢复稳定缓存命中,降低不必要的 token 开销。

问题描述:
- 我们在实际使用过程中发现,有些模型的缓存命中并不稳定。
- 命中率一旦波动,token 消耗就会明显升高,整体成本也会被迅速拉高。
- 这次修复的目标,就是尽量恢复稳定的缓存命中,降低不必要的 token 开销。
- 已知高优先级怀疑点有两个:
1. OpenClaw 可能会对代理型 OpenAI Responses 端点错误剥离 `prompt_cache_key` / `prompt_cache_retention`
2. 实际运行态的 `superaiapi/gpt-5.4` 可能没有走 `openai-responses + store:true` 这条更有利于命中的路径

本次修复目标分两层,按最小影响原则依次推进:
- 第一层最小补丁:
仅对 `https://superaiapi.com/v1` 保留 `prompt_cache_key`
其他代理端点维持原逻辑不变
- 第二层最小 A/B:
如果运行态 `superaiapi/gpt-5.4` 不是 `openai-responses`,则仅修改运行态配置,让它切到 `openai-responses`
并显式给该模型加 `store: true`
- 只有在确认当前 OpenClaw 版本不会把模型级 `store:true` 传入 Responses payload 时,才允许追加一个更小的运行时补丁:
仅把 `agents.defaults.models["superaiapi/gpt-5.4"].params.store` 定向注入 Responses payload
不要扩大到其他 provider,不要顺手改其他模型行为

硬性约束:
1. 先确认故障发生在哪台机器。本机和远端不要混淆;补丁必须打在实际运行 OpenClaw 的机器上。
2. 先做完整备份,再修改。
3. 修改范围必须最小。优先只改 OpenClaw 已安装程序里的缓存键剥离逻辑;如果需要做 A/B,优先只改运行态 `~/.openclaw/
openclaw.json`。
4. 默认不要改复刻包、模板和文档,除非用户明确要求同步。
5. 任何修改完成后都必须做语法校验、配置校验、服务重启和运行态验证。
6. 任何时候都不要破坏已有稳定状态;先备份,后改动。
7. 白名单范围只保留 `https://superaiapi.com/v1`,不要额外放大。
8. 如果要补 `store:true` 的运行时透传逻辑,也只能定向作用于 Responses payload,不要顺手改别的 provider 行为,不要改价
格、fallback、文档、模板、复刻包。
9. 如果当前 node 服务本来就未安装或 disabled,不要为了“形式上重启”而擅自安装它;应如实报告当前实际服务状态。

执行步骤:

A. 先确认运行环境
- 先判断当前修的是本机还是远端。
- 如果是远端,后续所有定位、备份、补丁、重启、验证都必须在远端执行。
- 不要先改本地再假设远端会同步。
- 建议先记录:
- `hostname`
- `whoami`
- 当前工作目录
- OpenClaw 的实际运行机器标识

B. 定位安装路径
先执行:
- `which openclaw`
- `python3 - <<'PY'
import os, shutil
p = shutil.which('openclaw')
print(os.path.realpath(p))
PY`

根据 realpath 推导 OpenClaw 安装根目录。
常见 Homebrew 安装根目录类似:
- `/opt/homebrew/lib/node_modules/openclaw`

但不要假设目标文件名固定。

必须先搜索真实补丁点,推荐按这个顺序搜索:
- `rg -n "prompt_cache_key|prompt_cache_retention|shouldStripPromptCache|shouldStripResponsesPromptCache|
isPromptCacheAllowlistedResponsesBaseUrl" <OPENCLAW_ROOT>/dist`
- 如果能找到类似 `openai-responses-payload-policy-*.js`,优先检查该文件
- 如果能找到类似 `provider-attribution-*.js`,也检查
- 如果能找到类似 `openai-stream-wrappers-*` 或 `proxy-stream-wrappers-*`,也检查
- 目标是找到“真正决定是否删除 prompt_cache_key / prompt_cache_retention”的那一层逻辑

同时补查运行态模型路径:
- `rg -n '"superaiapi"|gpt-5\.4|openai-responses|openai-completions|store' ~/.openclaw/openclaw.json`
- 目标是确认当前运行态 `superaiapi/gpt-5.4` 走的到底是 `openai-responses` 还是 `openai-completions`
- 以及是否已经显式配置了 `store: true`

C. 先做完整备份
备份目录命名:
- `~/.openclaw/backups/稳定命中缓存版-YYYYMMDD-HHMMSS`

如果后续还要做第二轮 A/B,可额外再做一次:
- `~/.openclaw/backups/稳定命中缓存版-二次A-B-YYYYMMDD-HHMMSS`

备份至少包括:
- 整个 `~/.openclaw`,但排除 `~/.openclaw/backups/`
- 整个 OpenClaw 已安装程序目录 `<OPENCLAW_ROOT>`
- 当前 Codex 配置(若存在):
- `~/.codex/config.toml`

如果存在复刻包目录,也一并收纳,但不要修改它:
- 例如 `~/文稿/OpenClaw/...`

推荐命令风格:
- `mkdir -p <BACKUP_DIR>/full-state/openclaw-state`
- `mkdir -p <BACKUP_DIR>/program-package`
- `rsync -a --exclude '/backups/' ~/.openclaw/ <BACKUP_DIR>/full-state/openclaw-state/`
- `rsync -a <OPENCLAW_ROOT>/ <BACKUP_DIR>/program-package/openclaw-npm-package/`
- `[ -f ~/.codex/config.toml ] && mkdir -p <BACKUP_DIR>/codex && cp ~/.codex/config.toml <BACKUP_DIR>/codex/`

生成说明文件:
- `<BACKUP_DIR>/SNAPSHOT_SCOPE.txt`

内容至少写明:
- 备份时间
- 当前机器标识
- 备份了哪些路径
- 本次准备修改哪些文件
- 哪个是“程序补丁文件”
- 哪个是“运行态配置文件”

D. 实施第一层最小补丁:只对白名单保留 prompt_cache_key
找到真实补丁点后,只做最小编辑。

目标语义:
- 新增一个专门判断 superaiapi Responses base URL 的函数
- 对 `https://superaiapi.com/v1` 返回 allowlisted
- 其余逻辑保持原样
- 不要扩大成“所有代理端点都保留 prompt_cache_key”