Claude 的能力毋庸置疑,但一个不得不面对的现实是:token 在燃烧,账单在咆哮。有开发者发现,一句"Hello"就可能消耗掉 13% 的配额,在代码大项目中改一个函数,几万 token 就没了。本文将从计费机制到实战工具,系统梳理如何把 Claude 的使用成本降下来,同时保持输出质量不下降。
一、先搞懂你在为什么付钱
在谈省钱之前,有必要先把计费机制搞清楚。Token 是 Claude 处理文字的基本单位------大约 1 个 token 对应 0.75 个英文单词,或 0.5 个中文字符。这意味着,同样字数下,中文消耗的 token 数量是英文的近两倍,实际上中文对话"更贵"。
Claude 采用输入 token + 输出 token 双向计费。以下是 2026 年 Anthropic 的最新定价:
| 模型 | 输入价格(每百万 Token) | 输出价格(每百万 Token) | 适用场景 |
|---|---|---|---|
| Claude Opus 4.6 | $5.00 | $25.00 | 复杂架构分析、深层调试 |
| Claude Sonnet 4.6 | $3.00 | $15.00 | 日常编码、测试编写 |
| Claude Haiku 4.5 | $1.00 | $5.00 | 快速查询、格式整理 |
以 Opus 为例,输出单价每百万 token 高达 25 美元。一次深度推理任务消耗数十万输出 token,单次调用的成本确实相当可观。省钱的第一步就是:能选低版本就选低版本,没必要事事都用 Opus。
二、输入侧降本:让 Claude 少读没用的东西
1. 使用 codebase-memory-mcp 避免反复解释上下文
Claude Code 有一个致命问题:每次新会话,Agent 都不知道你昨天做了什么、修了什么 bug、定了什么规范。于是你不得不在每轮对话里重新解释一遍------这每一轮解释都在燃烧 token。
codebase-memory-mcp 就是解决这个问题的方案。它在 Supabase 中存储架构决策、任务状态、警告和偏好,让 Claude 在跨会话时能够"记住"你们之前的工作成果。
安装步骤:
- 在项目目录下配置
.claude/settings.json,添加以下内容:
javascript
{
"mcpServers": {
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"],
"env": {
"MEMORY_FILE_PATH": "/你的路径/.claude/agent-memory.json"
}
}
}
}
保存后重启 Claude Code,memory 工具就会出现在工具列表中。
使用方式:
在 CLAUDE.md 中添加记忆协议说明,告诉 Claude 在每个会话结束时保存摘要,在新会话开始时加载上下文:
Puppet
At the end of each session:
1. Call memory:save with a summary of what we worked on
2. Include: decisions made, patterns established, things to avoid
Start future sessions by calling memory:load to get context
2. 使用 token-enhancer 清洗网页内容
AI Agent 经常需要抓取网页,但原始 HTML 里满是导航栏、广告、脚本等垃圾内容------这些都会原封不动地被 Claude 读取,每次抓取都浪费大量 token。
token-enhancer 充当本地代理,获取网页后剥离所有噪音,只返回干净的纯文本,token 缩减率可以超过 99%,且不需要调用 LLM、GPU 或 API key。
安装方法:
bash
# 在虚拟环境中安装
pip3 install token-enhancer
安装后可直接集成到 MCP 兼容环境中(如 Claude Desktop、Cursor),Agent 会自动发现并使用这个工具来获取干净的网页数据。
3. 具体化 Prompt------少说一句废话,省下一笔钱
模糊的 Prompt 会让 Claude 在错误的路径上多走很多步。对比下面两种写法:
-
模糊版:
Fix the bug(Claude 需要先读代码、定位 bug、分析原因------完全无法预判你要修哪个 bug) -
具体版:
Fix bug in test.js line 45(直接聚焦目标,省去了大量探索性消耗)
4. 精简 CLAUDE.md------你的"常识"每轮都在烧钱
CLAUDE.md 在每个会话中都会全程加载,无论你发了多少条消息,它始终存在于上下文中。这意味着,一个 5000 token 的 CLAUDE.md,会在这轮对话的每一轮交互中都烧掉 5000 token。
最佳实践是:把稳定的项目规则放在 CLAUDE.md 里(如测试运行方式、包管理器、格式化规则、架构约束),但不要把会议记录、设计文档、长篇实现指南塞进去。使用 Compression Rule: Keep only core rules, no long prose 这样的指令来强制精简,尽可能把 CLAUDE.md 控制在 100 行以内。
5. 使用 TokenZero 预压缩输入
TokenZero 是一个本地 CLI 工具,在把上下文发送给 Claude Code 之前,就能帮你剔除文件中的空白符、重复行、冗余 JSON 等 token"垃圾"。
安装方式:
bash
npm install -g tokenzero
安装后可以在 Claude Code 中通过 @.tokenzero/context.md 引入压缩后的上下文。它的特别之处在于完全本地运行,不需要任何 API key,数据不会离开你的机器。
三、输出侧降本:让 Claude 少说废话
1. Caveman Skill------让 Claude 像"山顶洞人"一样说话
Caveman 是目前 Claude Code 生态中最受欢迎的省 token 工具。开发者 Julius Brussee 花 10 分钟写完这个项目后,上线 3 天就狂揽 4.1k GitHub Star,最终突破 2 万星。
它的核心原理极其简单:只靠一条 prompt------删掉冠词、客套话和一切废话,在不牺牲技术准确性的前提下把输出压缩到极致。初步测试显示,它可以在保持完全技术准确性的同时,将输出 token 减少约 75%。
直观对比:
-
正常 Claude 输出(69 个 token):"你的 React 组件之所以会重新渲染,很可能是因为你在每次渲染周期中都创建了一个新的对象引用。当你将一个内联对象作为 prop 传递时,React 的浅层比较会认为它每次都是一个不同的对象,从而触发重新渲染。我建议你使用 useMemo 来缓存该对象。"
-
Caveman 输出(19 个 token):"每次渲染都会创建新的对象引用。内联对象作为 prop 传递=新引用=触发重新渲染。用 useMemo 包裹即可。"
安装方式(一行命令):
bash
npx skills add JuliusBrussee/caveman
安装后在对话中输入 /caveman 或直接说"use caveman"即可激活压缩模式。
三档压缩强度可选:
| 模式 | 效果 | 适用场景 |
|---|---|---|
| Lite | 去掉填充词和犹豫表达,保留完整句子结构 | 专业场景需要保持书面感 |
| Full | 省略虚词,允许碎片句,典型 caveman 风格 | 日常编码,默认推荐 |
| Ultra | DB、auth、config 全部缩写,极致省 token | 极致省 token 场景 |
在 10 个真实任务的 API 测试中,Caveman 节省的 token 范围从 22% 到 87%,平均高达 65%。
注意:Caveman 只影响输出 token,思考/推理 token 不受影响。"它不会让大脑变小,只会让嘴巴变小"。
2. RTK(Rust Token Killer)------CLI 输出压缩神器
在日常开发中,git diff、npm test、docker logs 等命令的输出动辄上万 token。RTK 专门解决这个问题------它在命令输出到达 LLM 上下文之前进行智能过滤、压缩、去重和截断,可降低 token 消耗 60%--90%,且性能开销不足 10ms。
工作原理 :RTK 充当 Claude 与 Shell 之间的透明代理。传统流程中 AI 工具直接读取原始 Shell 输出;RTK 介入后,命令被透明改写为 rtk git diff 形式,AI 看到的只有精简后的核心信息。
安装方式:
-
macOS 用户:
brew install rtk -
Linux/macOS 快速安装:
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/main/install.sh | sh -
Windows:推荐搭配 WSL 使用
安装完成后,执行 rtk --version 验证是否安装成功。
使用方式 :在需要压缩输出的命令前加上 rtk 前缀,例如 rtk git diff、rtk npm test。也可以通过 AI 工具的 Hook 机制自动拦截------支持 Claude Code、Cursor、GitHub Copilot 等 10 多款主流 AI 编程工具。
实测效果(30 分钟会话):
| 命令 | 原始 Token | RTK 后 | 节省 |
|---|---|---|---|
| git status | 3,000 | 600 | -80% |
| git diff | 10,000 | 2,500 | -75% |
| npm test | 25,000 | 2,500 | -90% |
| grep / rg | 16,000 | 3,200 | -80% |
总计从 118,000 token 降至 23,900 token------减少约 80%。
四、Context 与 Cache 控制与管理
1. Prompt Caching------90% 折扣的关键功能
在 Claude Code 场景中,单次请求的输入 token 远大于输出 token------输入/输出比往往接近 36:1。而 Prompt Caching 是 Anthropic 提供的官方省 token 神器:缓存命中的部分只收基础输入价的 10%,即 90% 的折扣。
理解它的工作原理很关键:Anthropic 服务端会保存你最近发送的 prompt 前缀,下次请求时,只要前缀(从第一个 token 开始)完全一致,就从缓存读取。这意味着"前缀完全匹配"是命中的唯一条件------前缀任何一处变化,后面所有内容的缓存都会全部失效。
实践中需要注意的陷阱:
-
动态时间戳:prompt 中嵌入动态内容(如当前时间)→ 前缀每次都变 → 永远不命中
-
模型切换:在不同模型之间切换 → 缓存前缀不匹配
-
会话清理 :使用
/clear清理会话 → 之前的缓存前缀被清除
优化策略 :把稳定不变的部分(system prompt、工具定义、固定项目指令)放在前缀前段,并加上 cache_control 标记;把每次变化的用户消息放在后段,避免污染缓存前缀。有实践报告显示,统一提示词模板、稳定模型配置与会话管理后,可以实现 84% 的缓存命中率和 76% 的成本降低。
2. /clear 与 /compact------会话清理两大利器
长会话会导致历史消息无限累积,每一轮都在重新加载全部对话记录,token 成本持续攀升。
-
/clear:完全清空当前会话,以全新状态开始,适合任务边界明确的场景 -
/compact:生成结构化摘要替代全量历史,在保留关键信息的同时大幅压缩上下文长度
建议按任务边界重开会话,每 N 轮对话生成一次结构化摘要而非全量带历史。对于需要长期运行的 Agent,可以配置自动压缩阈值,当输入 token 超过预设值时触发压缩。
3. Disable Auto-Update
Claude Code 的背景自动更新可能会在会话中途修改 prompt,导致已经建立的 cache 前缀被打乱、缓存失效。通过配置禁用自动更新可以保护已建立的 cache,维持稳定的缓存命中率。设置方法可以设置环境变量:DISABLE_AUTOUPDATE=1。
五、选择适合的模型------不要所有任务都用 Opus
这是最简单、最容易被忽视的省 token 技巧。在不同任务上切换不同模型:
-
Haiku:关键词查找、格式整理、内容重命名等机械性任务
-
Sonnet:日常编码、测试编写、代码解释、简单重构(绝大多数场景的默认选项)
-
Opus:多文件架构决策、深度排错、复杂跨系统问题分析
Opus 每 token 价格是 Sonnet 的 5 倍(输出端相差更大),日常用 Sonnet 起步,真正需要时再换 Opus,能让你的 API 账单有质的差别。
在 Claude Code 中切换模型的命令:/model haiku、/model sonnet、/model opus。还可以配合 /effort 指令来控制模型的思考预算------对于简单任务降低 effort 级别,能直接节省输出 token。
六、监控与持续优化
成本管理不是"月底解释"而是"当场定位"。建议关注这几个指标:单次有效任务平均 token、单位有效产出成本、异常调用占比。
两类最容易被忽视的 token 漏损:
-
重复调用:同一任务在多个 Agent 窗口并行执行,结果没变成本先翻倍→应对策略:增加任务幂等键,设置短窗口去重策略
-
上下文膨胀:长会话不截断、历史无限累积→应对策略:会话分段,定期生成摘要替代全量历史。
日常使用建议(快速总结版):
| 场景 | 推荐做法 |
|---|---|
| 日常编码 | Sonnet + /effort low + Caveman Skill |
| 网页抓取 | token-enhancer 做预处理 |
| CLI 命令输出 | RTK 做输出压缩 |
| 跨会话工作 | codebase-memory-mcp 做记忆存储 |
| 长会话管理 | 定期 /compact,按任务 /clear |
| Prompt 复用 | 配置好 cache_control,不要随意改 CLAUDE.md |
用 Claude 时节省 token,本质上不是"少用 AI",而是让每一次调用都用在真正需要的地方。以上方法覆盖了从模型选择、输入压缩、输出精简、缓存优化到会话管理的全方位路径,希望对你有所帮助。