Skip to content

成本优化策略 ​

同一件事,花钱可以差十倍。这一页从最能省钱的做法讲起。

成本从哪来 ​

一次请求的花费:

钱是输入、输出、缓存命中三部分加起来,再乘令牌分组的折扣。输出通常比输入贵。模型广场上的价格已经算好,不用按内部倍率自己乘。

三个可优化的变量:输入多长、输出多长、用什么模型。

编码 Agent 的钱主要花在输入上

这和聊天场景直觉相反。Agent 每一轮都会把「系统提示 + CLAUDE.md + MCP 工具定义 + 全部历史对话 + 读过的文件」重发一遍。

一个跑了 30 轮的会话,输入 token 通常是输出的 20–50 倍。 所以最该省的,是别让上下文越积越长。


1. 换任务就 /clear(收益最大) ​

上下文是累积的。一个开了一整天的会话,第 50 轮的输入可能是第 1 轮的 40 倍。

# 做完一件事,立刻
/clear

判断标准:新的问题和刚才那件事没关系了,就清掉。

还是同一件事,只是太长了,就用 /compact,留下结论,丢掉过程。

在 控制台日志 里看 prompt_tokens 列,如果一路往上涨到几十万,说明你该清了。

2. Prompt Cache ​

Claude 系模型的缓存倍率是 0.1——命中的部分按十分之一计费。

什么会被缓存 ​

会话里前缀稳定不变的部分:系统提示、CLAUDE.md、MCP 工具定义、早期的对话历史。

快米兔会把 cache_control 和用量字段原样交上去,命中率和直连官方一样。

怎么提高命中率 ​

做法效果
CLAUDE.md 写好就别天天改改一次,整段缓存作废,得重新写入
MCP server 配置固定下来增删 server,工具定义一变,缓存就失效
同一任务连续问,别开新会话新开会话,缓存要从头来
把不变的内容放前面,变化的放后面缓存按前缀匹配

怎么验证命中了 ​

Claude Code 里 /cost,或者看 API 返回的 usage:

json
{
  "usage": {
    "input_tokens": 1200,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 45000,
    "output_tokens": 800
  }
}

cache_read_input_tokens 占比越高越好。理想状态下长会话里它能占到输入的 80%+。

缓存写入是要花钱的

第一次建立缓存时按 cache_creation 计价(通常高于普通输入价)。所以: 只有会被反复复用的内容才值得缓存。 一次性的东西不要打 cache_control。

3. 模型分档 ​

不要用一个模型干所有事。

任务模型相对成本
搜索、定位、改 typoclaude-haiku-4-5-202510011×
日常写功能、写测试claude-sonnet-4-63×
重构、疑难 bug、架构claude-opus-55×

具体倍率见 模型与分组。

实操方式:

别把 Haiku 档改成 Opus

Claude Code 的后台任务(会话命名、todo 摘要、文件检索)走 Haiku 档。 把 ANTHROPIC_DEFAULT_HAIKU_MODEL 指到 Opus,会话成本会翻 5–10 倍,而这些任务根本不需要那么强的模型。

4. 按场景选分组 ​

专用分组常常比 default 的七折(0.7)更便宜:Codex 一折(0.1)、Claude 高性价比三折(0.3)、Gemini 四折(0.4)。国产专线和「视频模型」是 1.0,也就是不打折,比 default 更贵。

详见 模型与分组。

5. 控制输出长度 ​

输出的单价是输入的 2–8 倍,推理模型的思考过程也算输出。

做法说明
明确要求简洁「只给改动的那几行,不要重复整个文件」
限制 max_tokensAPI 调用时设一个合理上限
降低推理强度Codex 的 model_reasoning_effort,简单任务用 low
控制 thinking 预算Anthropic 协议的 thinking.budget_tokens
不要它写多余的东西「不要写 README、不要加示例、不要总结」

6. 精简常驻上下文 ​

每一轮都要重发的东西,长度直接乘以轮数:

常驻内容优化
CLAUDE.md控制在 100–300 行;细节拆成 Skill 按需加载
MCP 工具定义只装当前需要的
@ 引用的文档只引用每次都要的;偶尔用的写一行「需要时自己读」
粘贴的代码改成让模型自己读文件

7. 用 Subagent 隔离"过程垃圾" ​

大范围搜索会带出很多中间内容。留在主会话里,这些内容会一直占着位置。交给 子任务,回来的只有一句结论。

用子代理去搜索所有调用了 v1 API 的地方,只告诉我文件和行号

8. 关掉不用的功能 ​

功能影响
Web 搜索每次搜索都会把网页内容塞进上下文
自动 Git 集成diff 内容进上下文
冗余的 MCP server工具定义常驻

排查"钱花哪了" ​

客户端侧 ​

/cost

看当前会话的累计消耗和缓存命中情况。

服务端侧(更准) ​

控制台日志 里:

  1. 按令牌名称筛选,定位是哪台机器/哪个项目
  2. 看 模型 列——是不是有大量本该走 Haiku 的请求走了 Opus
  3. 看 提示 token 列——如果单次请求就几十万,说明上下文失控了
  4. 展开详情看缓存命中——cache_read 为 0 说明缓存没生效

典型的三种"烧钱模式" ​

症状原因解法
每次请求输入都 20 万+ token一个会话开太久没清/clear
缓存命中一直是 0CLAUDE.md 或 MCP 配置一直在变稳定下来别改
日志里全是 Opus没做模型分档日常切 Sonnet,搜索交给 Haiku

一份可执行的清单 ​

□ 换任务就 /clear
□ CLAUDE.md 控制在 300 行以内,写好后别频繁改
□ 日常用 claude-sonnet-4-6,不是 opus
□ 搜索/定位类任务交给 subagent + haiku
□ 按场景选分组(Claude 高性价比 / Codex),不要默认以为 default 最便宜
□ MCP 只装当前项目需要的
□ 明确告诉模型"不要写多余的东西"
□ 每周去日志页看一次 token 趋势

配套阅读 ​

文档持续更新 · 以 模型广场 公示为准