Claude Code Token 消耗的核心策略:从上下文管理到模型分层
Claude Code 的 Token 消耗中,输入 Token 通常占总量的 70%–85%,而输入的大头是上下文文件读取——不是你的 prompt。 省 Token 的主战场是上下文管理,而非逐条润色 prompt。本文列出四种策略方向,每种有独立的适用场景,可叠加使用。
适用场景
所有技巧基于 Claude Code v2.x 版本(2026-06)验证。
一、上下文管理:减少重复输入
每一条新消息,Claude Code 都会将完整的对话历史重新提交给模型。控制上下文的体积和重复次数,是降低消耗的最直接手段。
1.1 合并消息
将多个独立需求合并为一条指令,避免分开发送造成对话历史反复重传。
> 帮我把这篇内容总结一下> 列出要点> 起一个标题> 帮我把这篇内容总结一下,列出要点,并起一个标题1.2 定期压缩上下文
/compact 将对话历史压缩为摘要,保留关键决策和代码片段,丢弃中间讨论过程。在上下文到达 50% 左右时手动触发效果最好——越早做越便宜,留下的有效信息也越多。
/context/compact"CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "50"1.3 用 Rewind 回退替代纠错消息
Claude 执行结果不对时,发一条"不对,应该这样..."会让旧对话历史再次提交。用 Rewind(双击 Esc)回退到出错前的节点,重新发指令——错误分支不占用后续 Token。
Rewind 与 /clear 的区别
Rewind:回到对话历史的某个具体节点,之前的信息保留,之后的丢弃。适合"这次执行错了,回到上一步重来"。
/clear:清空整个对话,从头开始。适合"这个任务做完了,开始新任务"。
两者不互斥——Rewind 用于同一任务内的纠错,/clear 用于任务切换。
Rewind 不会影响手动编辑的文件,也不会影响通过 bash 命令修改的文件内容。
1.4 按任务拆分会话
一个长会话做多个不相关任务 = 持续为已完成的对话付费。每个独立任务开新会话,任务完成后 /clear 释放上下文。如果确实需要延续,用 /compact 保留摘要、新建会话继续。
二、配置减重:降低每次启动的固定开销
Claude Code 每次会话启动时会读取项目级配置文件。这些文件的体积直接影响每轮对话的基础 Token 成本。
2.1 精简 CLAUDE.md
CLAUDE.md 全部内容在每次会话启动时加载。超过 3000 Token 的 CLAUDE.md 会持续占用上下文空间。只保留 Claude 做决策时需要的信息:项目简介、技术栈、编码规范、关键注意事项。不要放详细教程、API 参考手册、或每个文件的描述。
哪些内容不该放 CLAUDE.md
- 冗长的安装教程 → 放 README.md
- API 参考手册 → 放独立文档,让 Claude 需要时去读
- 每个文件的用途清单 → Claude 启动时自动扫描项目结构
- 通用编程规范(如"用 TypeScript 严格模式")→ 用 .claude/rules/ 按文件类型拆分
2.2 用 Skills 替代大块指令
Skills 采用渐进式加载——启动时只读名称和描述(约 100 Token),Claude 判断当前任务需要时才加载完整内容。相比全量加载的 CLAUDE.md,Skills 不消耗固定开销。
---description: 审查代码变更,检查安全、性能和规范---- 安全:SQL 注入、XSS、敏感信息泄露- 性能:N+1 查询、不必要重渲染- 规范:命名一致性、TypeScript 严格模式2.3 配置 .claudeignore
阻止 Claude 读取无关文件——每次文件读取都消耗 Token。排除 node_modules、dist、.git、大型二进制文件。
node_modules/dist/build/.git/*.min.js*.lockpackage-lock.jsonpnpm-lock.yamlcoverage/.next/*.log2.4 拆分项目规则
用 .claude/rules/ 目录按文件路径拆分规则——Claude 在修改特定文件时才加载对应规则,而不是一次性读完所有规则。这比 CLI 用户的 CLAUDE.md 更省上下文。
2.5 限制 Bash 输出
settings.json 中设置 BASH_MAX_OUTPUT_LENGTH 限制命令输出长度,避免测试日志、构建输出等大量文本占用 Token。
{ "env": { "BASH_MAX_OUTPUT_LENGTH": "2000" }}三、模型与推理分层:按任务复杂度选模型
不是所有任务都需要 Opus 级别的推理。根据任务复杂度选择模型,在不影响产出的前提下降低单次调用的 Token 成本。
| 任务类型 | 推荐模型 | 原因 |
|---|---|---|
| 架构设计、重构、复杂调试 | Opus | 需要最强行推理 |
| 日常编码、代码审查 | Sonnet | 能力足够、成本更低 |
| 简单修改、格式调整、注释补全 | Haiku | 任务简单、高性价比 |
| 子代理(并行轻量任务) | Haiku / Flash | 高度并行、需要控制总成本 |
模型切换方式
用 /model 切换当前模型,或通过 CC Switch 的配置路由自动分发不同任务到不同模型。
3.1 限制推理 Token
CLAUDE_CODE_MAX_THINKING_TOKENS 限制 Claude 在回复前的内部推理时间。复杂任务(架构设计)需要更多推理,日常任务(改函数名)不需要。
"CLAUDE_CODE_MAX_THINKING_TOKENS": "4000"四、会话习惯:每次交互的边际优化
4.1 用 /cost 和 /context 了解消耗
优化前先了解当前的消耗结构。/cost 显示本次会话的费用估算,/context 显示上下文用量分布。如果发现上下文长时间在 80% 以上,说明压缩策略需要调整。
4.2 避免让 Claude 读无关文件
明确指令范围——"分析这个项目的架构"比"看看这个项目"更能避免 Claude 逐文件扫描。发现 Claude 开始读无关文件时按 Ctrl+C 中断,修正指令后继续。
4.3 交互式确认前让 Claude 先讲计划
复杂任务(如跨文件重构)执行前先让 Claude 解释计划,确认方向正确后再让执行。避免"执行了一大圈全错了,重来",旧对话全部浪费。
> 我想重构 src/utils 的工具函数,你先说明一下你的方案和涉及的文件,不要直接动手。> 方案可以,开始。4.4 Skill 使用前确认标准
使用 Skill 做多轮迭代时,先和 Claude 确认评分标准、迭代轮数和边界条件,减少"不对,重来"的反复消耗。
4.5 禁用不必要的权限
settings.json 中用 permissions.deny 阻止 Claude 读取不会被需要的目录,从源头减少文件读取。
{ "permissions": { "deny": [ "Read(./node_modules/**)", "Read(./.git/**)", "Read(./dist/**)" ] }}策略对比
| 策略 | 生效时机 | 适用人群 | 改造成本 |
|---|---|---|---|
| 上下文管理 | 每次会话 | 所有用户 | 行为习惯,一次配置 |
| 配置减重 | 每次启动 | 有项目配置的用户 | 一次性配置 |
| 模型分层 | 每次调用 | API Key 用户(直接感知价格差异) | 每次切换 |
| 会话习惯 | 每次交互 | 所有用户 | 行为习惯 |
备注与相关阅读
以上技巧基于 Claude Code v2.x 版本(2026-06)验证。命令和配置项可能随版本更新变化,请以官方文档和 claude --help 为准。价格数据以 Anthropic 官方定价页和 DeepSeek 开放平台公告为准。
相关阅读:《AI 编程的上下文管理》讨论了不同上下文引用方式的 Token 消耗对比;《让 AI 停止生成过期代码》介绍了 CLAUDE.md 和 .cursor/rules 的配置方法。