Token 到底花在哪了

很多人以为 token 消耗就是"你说的话 + AI 回的话",其实远不止。每次对话背后有一堆隐藏成本:

  • System Prompt(约 3000-5000 tokens):OpenClaw 核心指令,动不了
  • 上下文文件注入(约 3000-14000 tokens):AGENTS.md、SOUL.md、MEMORY.md 这些文件,每次对话都会带上——这才是最大的隐形开销
  • 历史消息:越聊越长,越聊越贵
  • 你的输入 + AI 输出:这只是你以为的"全部"

随便问一句"今天天气怎么样",实际消耗 8000-15000 个 input tokens。用 Opus 算,光上下文就要花 $0.12-0.22。

Cron 更狠。每次触发等于一次全新对话,重新注入全部上下文。一个每 15 分钟跑一次的 cron,一天触发 96 次,Opus 跑下来一天 $10-20。Heartbeat 同理,本质也是对话调用,间隔越短越烧钱。

没算过这笔账之前我也没概念,算完吓一跳。

模型分层:日常 Sonnet,关键时刻再上 Opus

这是省钱效果最猛的一招。Sonnet 定价大概是 Opus 的 1/5,80% 的日常任务完全够用。

怎么分:

  • Opus 场景:长文写作、复杂代码、多步推理、创意任务
  • Sonnet 场景:日常闲聊、简单问答、cron 检查、heartbeat、文件操作、翻译

实测切换后月成本降了 65%,体验几乎没差。说实话 Sonnet 4 已经很强了,日常用基本感觉不到区别,真正需要 Opus 的时候切过去就行。

上下文瘦身:砍掉隐形 Token 大户

每次调用的"底噪"可能有 3000-14000 tokens,精简注入文件是性价比最高的优化。

一个经验法则:每减少 1000 tokens 注入,按每天 100 次调用 Opus 算,月省大约 $45。这个数字还挺可观的,值得花时间整理一下那些注入文件,把不必要的内容砍掉。

Cron 优化:最容易被忽略的成本杀手

核心原则:不是越频繁越好,大多数"实时"需求其实是假需求。

一个很实用的做法是把 5 个独立检查合并成 1 次调用,光上下文注入成本就省了 75%。想想看,5 次调用意味着 5 次完整的上下文注入,合并成 1 次就只注入 1 次,省的全是隐形开销。

Heartbeat 也一样,拉长间隔、开启静默期,都能省不少。

用 qmd 做精准检索,省 90% Input Token

这个发现让我挺惊喜的。Agent 查资料时默认行为是"读全文"——一个 500 行的文件要 3000-5000 tokens,但它可能只需要其中 10 行。也就是说 90% 的 input token 被白白浪费了。

qmd 是一个本地语义检索工具,原理是建立全文 + 向量索引,让 Agent 精准定位到需要的段落,而不是把整个文件都读进去。全部本地计算,零 API 成本。

配合 mq(Mini Query)使用效果更好:预览目录结构、精准段落提取、关键词搜索——每次只读需要的 10-30 行。

实测效果:每次查资料从 15000 tokens 降到 1500 tokens,减少 90%。这个优化幅度是真的大。

要注意的是 qmd 和 memorySearch 不是一回事:memorySearch 管"回忆"(MEMORY.md 里的内容),qmd 管"查资料"(自定义知识库),两者互不影响,各管各的。

Memory Search 怎么选

简单结论:记忆文件少的话用本地嵌入就行,零成本;如果多语言需求高或者文件量大,可以用 Voyage AI,每个账号有 2 亿 token 的免费额度,够用很久。

总结一下实操清单

配置一次,长期受益:

  1. 模型分层 — Sonnet 跑日常,Opus 跑关键任务,省 60-80%
  2. 上下文瘦身 — 精简注入文件 + qmd 精准检索,省 30-90% input token
  3. 减少调用频次 — 合并 cron、拉长 heartbeat 间隔、开启静默期

说实话这些优化里没有什么特别难的操作,大部分就是配置层面的调整。但不做的话,跑 Opus 的账单真的会让人肉疼。先把模型分层做了,这一步效果最立竿见影,剩下的慢慢优化就行。