---
title: Claude Code 省钱三件套：模型、effort、缓存
description: 账单由三个乘数决定，调一个不如三个一起调。含各档的适用面、effort 怎么设、Claude Code 里缓存寿命订阅是 1 小时而 API key 只有 5 分钟，以及长会话为什么会安静地烧钱。
published: 2026-07-24
updated: 2026-07-24
keywords:
  - Claude Code 省钱
  - Claude Code 成本
  - effort 设置
  - MAX_THINKING_TOKENS
  - 缓存寿命
  - usage 命令
  - agent teams 成本
---

# Claude Code 省钱三件套：模型、effort、缓存

> 账单不是被某一个开关决定的，是三个乘数相乘：**用哪个模型 × 思考多深 × 缓存命中多少**。我把官方文档里散在三处的口径接到一起，顺带补上「长会话为什么会安静地烧钱」那份清单。数字截至 2026 年 7 月。

先给个尺子。官方公布的企业部署均值：**约 $13 / 开发者 / 活跃日**，**$150–250 / 开发者 / 月**，90% 的人活跃日花费低于 $30。你的数比这个高一截，多半能在下面三件套里找到原因。

---

## 一、模型：默认别停在 Opus

官方的话很直接：**Sonnet 应付大多数编码任务，成本低于 Opus；Opus 留给复杂的架构决策和多步推理。**

- `/model` 会话中途切
- `/config` 设默认
- 子代理单独指定：配置里写 `model: haiku`

API 或云厂商账单异常高，官方点名两个最常见的原因，第二个就是**把 Opus 当默认放着没动**。

顺带一个容易误解的：订阅计划下的会话/周限额是**跨模型共享**的，`/model` 换个模型不会让额度回来。只有撞到「你已达到 Opus 限额」这条模型专属的消息时，换模型才能接着干活。

---

## 二、effort：思考深度是可以调的

扩展思考默认开着——它对复杂规划和推理确实有明显帮助，但**思考 token 按输出计费**，默认预算可能是每次请求几万 token。

简单任务上调低它：

- **`/effort`**，或者在 `/model` 里设
- **`/config`** 里可以整个关掉思考
- **固定思考预算的模型**上，用环境变量 `MAX_THINKING_TOKENS`（比如 `MAX_THINKING_TOKENS=8000`）

三个坑：

- **自适应推理的模型会忽略非零预算**——在那些模型上设 `MAX_THINKING_TOKENS` 是无效操作，要用 effort 档位。
- **Fable 5 关不掉思考**，它永远用扩展思考。
- 反过来也成立：难活儿上把 effort 压太低，会换来更多轮返工，总账更贵。

档位怎么选：`high` 是大多数场景的默认；编码和 agentic 任务里最难的那部分值得上 `xhigh`；例行活儿 `medium` 甚至 `low` 就够。**这不是单调关系**——高 effort 常常因为一次做对而减少轮次，反而更便宜。

---

## 三、缓存：Claude Code 里的寿命跟你怎么登录有关

缓存读取按输入价的 **0.1 倍**计，写入 **1.25 倍**（5 分钟档）或 **2 倍**（1 小时档）。这层机制[单独一篇写了](/guides/prompt-cache)。这里只补 Claude Code 特有的那条：

**缓存寿命取决于你用什么在跑：**

| 怎么登的 | 缓存寿命 |
|---|---|
| 订阅（Pro / Max / Team / Enterprise） | **1 小时** |
| 订阅但已经在用 usage credits | **掉到 5 分钟** |
| API key 或云厂商 | 默认 **5 分钟** |

这解释了一个很常见的困惑：同样是「离开一会儿再回来问一句」，在订阅上几乎无感，在 API key 上就是一次全量重算——**你的整个会话上下文重新按全价过一遍**。

`/usage` 会在最近用量里标出占比 ≥10% 的行为，缓存未命中是它会点名的一项。看到它就说明这笔钱是真的在漏。

---

## 长会话为什么会安静地烧钱

一个开了一整天的会话，用掉的额度会远超你的活动量。官方列了五个原因，每个都不显眼：

- **全量重发。** 每条消息都带着整个对话过去。开了一天的会话里问一句话，付的是整段历史的钱，不是那一句的钱。
- **缓存过期。** 休息时间超过缓存寿命，回来第一条消息就是全量重算（见上表）。
- **定时任务。** 挂着的 scheduled task 到点就跑，哪怕会话空闲，照样发一整份上下文。
- **agent 队友。** 每个活着的 teammate 都在持续烧 token，直到它退出或会话结束。
- **`/compact` 本身是个大请求。** 它要读完那段对话才能总结——压缩一个大上下文，这个动作本身就很贵。

最后一条推出一个反直觉的结论：**`/clear` 不花钱，`/compact` 花钱。** 要的是接着干就 compact，要的是重新开始就 clear，别习惯性 compact。

---

## 其余几个杠杆

**`/clear` 分隔不相关的任务。** 陈旧上下文在之后每一条消息上都收一次费。想回头找，先 `/rename` 再 clear，之后 `/resume`。

**MCP 开销。** 工具定义默认是延迟加载的，只有工具名进上下文。但 **`gh`、`aws`、`gcloud` 这类 CLI 更省**——它们连工具名都不占。`/mcp` 看有哪些开着，不用的关掉；`/context` 看谁在占地方。

**用 hook 预处理。** Claude 读一个一万行的日志找报错，不如一个 `PreToolUse` hook 先 grep 出 `ERROR` 再给它——几万 token 变几百。官方给的例子是把 `npm test` 改写成只输出失败部分。

**把 CLAUDE.md 里的长流程搬进 skill。** CLAUDE.md 每次会话都全量加载，哪怕你今天干的是完全无关的活。skill 只在被调用时加载。

**大输出交给子代理。** 跑测试、抓文档、处理日志，让冗长的输出留在子代理的上下文里，主对话只收一份摘要。

**agent teams 很贵。** 队友在 plan mode 下跑时，token 用量约是普通会话的 **7 倍**——每个队友是独立的 Claude 实例，各带一份上下文。队友用 Sonnet、队伍开小、活干完就关掉。（默认是关的，要 `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` 才开。）

**把话说具体。** 「改进一下这个代码库」会触发大范围扫描；「给 `auth.ts` 的 login 函数加输入校验」让它直接干活。这条最便宜也最有效。

**复杂活先走 plan mode。** Shift+Tab 切过去，让它先探再提方案给你批——方向错了才返工，是最贵的一种浪费。走岔了按 Esc 立刻停，`/rewind` 或双击 Esc 回到之前的检查点。

---

## 怎么看自己花了多少

`/usage` 的 Session 区块：

```
Total cost:            $0.55
Total duration (API):  6m 20s
Usage by model:
   claude-sonnet-4-6:  1.2k input, 5.3k output, 940.0k cache read, 50.0k cache write ($0.55)
```

注意那行数字的构成——**940k 缓存读 vs 1.2k 全价输入**，这就是缓存在实际会话里的占比。金额是本地按 token 估算的，跟真实账单会有出入，权威数字看 Console 的 Usage 页。

订阅用户看的是额度条和用量分解，会把用量归给 skill、子代理、插件、各个 MCP server，各占百分之多少。按 `d` / `w` 在 24 小时和 7 天之间切。`/clear` 之后这些计数归零。

后台还有一小笔固定开销（会话摘要、状态查询之类），通常每个会话低于 $0.04。

---

## 参考

- [Claude Code 官方文档：Manage costs effectively](https://code.claude.com/docs/en/costs)
- [Claude Code 官方文档：Prompt caching](https://code.claude.com/docs/en/prompt-caching)
- [Anthropic：Prompt caching（API 侧）](https://platform.claude.com/docs/en/build-with-claude/prompt-caching)
- [缓存命中率为什么重要](/guides/prompt-cache)
- [上下文窗口怎么管](/guides/context-window)
