Token Optimization

如何降低 Claude Code Token 消耗:削减 75% 使用量实战指南

### 快速答案:如何让 Claude 使用更少的 Token

要在 Claude Code 中将 Token 消耗降低多达 75%,需实施四项核心优化:配置严格的 .claudeignore 剔除构建产物与 Lock 依赖文件;利用 Anthropic 的 90% Prompt Caching 静态缓存读取折扣;通过独立的 Scout 侦察子代理隔离子任务以防上下文退化;在执行常规 AST 与文件检索时优先选用输出紧凑的 claude-3-7-sonnet 或轻量级 claude-3-5-haiku,而非盲目启用 Opus。


1. 引言:终端智能体 Token 预算的隐形流失

Anthropic 的 Claude Code 等自主终端编码智能体彻底重塑了软件工程的工作流程。与传统的 IDE 补全工具不同,Claude Code 运行在高度自主的循环中:分析目录树结构、读取数千行的源文件、执行 Shell 脚本、解析编译器诊断日志,并通过精确补丁修改代码。

然而,这种自主性伴随着高昂的 API 成本。若缺乏前置的工程化约束,一个简单的指令(例如 “重构认证中间件以支持 JWT 轮换”)可能在单次会话中迅速烧掉 150 万至 350 万个 Token。这种 Token 暴增主要源于以下四个关键因素:

  1. 上下文累积与污染(Context Rot):每一次 Bash 命令输出、Grep 匹配结果、编译栈追踪以及完整文件 Dump 都会持续堆积在活动上下文窗口中。
  2. 非缓存上下文重复摄入:意外修改早期对话历史会破坏 Anthropic 的 5 分钟临时 Prompt Caching 缓存边界。
  3. 冗余构建文件扫描:Claude Code 在进行全局正则搜索时,会反复抓取编译目录(dist/target/.next/)、体积巨大的 Lockfile(package-lock.jsonpnpm-lock.yaml)以及数据库转储文件。
  4. 模型规格过度配置(Overspecification):对普通的文件检索或目录遍历调用顶级推理模型(claude-3-opus 或开启最大 Thinking 的 Sonnet)。

通过部署系统性的架构约束——.claudeignore 规范、Prompt Caching 缓存机制、子代理上下文隔离与 CLI 精细调优——工程团队通常能将 Claude Code 的日常 Token 消耗降低 70% 至 80%,同时显著提高任务成功率。


2. Token 经济学:计费架构与缓存机制

深入理解 Anthropic API 的 Token 计费与缓存层级(2026 年基准):

Claude 模型版本 基础输入 ($/1M) 缓存写入 ($/1M) 缓存读取 ($/1M) 输出 ($/1M) SWE-bench Verified 理想终端定位
Claude 3.5 / 3.7 Haiku $0.80 $1.00 $0.08 $4.00 41.2% 符号检索、正则过滤、Commit 说明生成
Claude 3.7 Sonnet (Standard) $3.00 $3.75 $0.30 $15.00 70.3% 核心重构、多文件协同修改、测试修复
Claude 3.7 Sonnet (Extended Thinking) $3.00 (输入) $3.75 (写入) $0.30 $15.00 (思维+输出) 72.8% 复杂架构缺陷修复、并发竞态排查
Claude 3 Opus / Opus 4.6 $15.00 $18.75 $1.50 $75.00 74.1% 高危安全审计、全局系统级重构

削减 75% 成本与 Token 的测算模型

在包含 15 万行代码的 TypeScript 仓库中重构单个 REST API 接口(典型 15 轮会话):

[未优化的原始会话]
第 1 轮:加载项目架构图 + package-lock.json + 数据模型 (180,000 Token)
第 2-5 轮:Grep 原始输出、全量编译日志、整文件读取 (累计 240,000 Token/轮)
缓存未命中率:45% (动态工具注入与环境头频繁打破缓存)
累计处理输入 Token:3,250,000
Sonnet 实际成本:~$9.75

[优化后会话:.claudeignore + Prompt Cache + 子代理]
第 1 轮:纯净 AST 紧凑摘要 (18,000 Token) -> 成功建立缓存检查点
第 2-5 轮:增量 Diff,Scout 侦察子代理返回压缩报告 (22,000 Token/轮)
缓存命中率:92% (按 $0.30/1M 优惠费率读取)
累计处理输入 Token:410,000 (物理 Token 降低 87.3%)
Sonnet 实际成本:~$0.82 (整体支出降低 91.5%)

3. 核心支柱 1:构建精准 .claudeignore 消除无效上下文

在任何代码仓库中,ROI 最高的操作就是建立一个严格、面向生产环境的 .claudeignore 文件。

Claude Code 默认遵循 .gitignore 规则,但标准 .gitignore 往往允许大量无用文件进入版本控制,严重污染大语言模型的上下文窗口。依赖锁文件、文档资产、构建产物与压缩文件绝不应被读入智能体上下文。

生产级 .claudeignore 配置模板

将该文件保存至项目根目录:

# ==============================================================================
# .claudeignore - 生产级 Token 过滤规则矩阵
# 防止 Claude Code 在执行 Glob 与 Grep 扫描时摄入无效垃圾文件
# ==============================================================================

# 包依赖锁文件(体积巨大且对代码 AST 毫无价值的 JSON/YAML)
package-lock.json
pnpm-lock.yaml
yarn.lock
bun.lockb
composer.lock
Gemfile.lock
Cargo.lock
poetry.lock

# 自动生成的构建产物与打包文件
dist/
build/
out/
.next/
.nuxt/
.astro/
.svelte-kit/
storybook-static/
target/
*.min.js
*.min.css
*.map

# 测试覆盖率报告、运行日志与性能分析
coverage/
.nyc_output/
*.lcov
*.log
npm-debug.log*
yarn-debug.log*
pnpm-debug.log*
*.heapsnapshot
*.cpuprofile

# 媒体素材、图片与二进制二进制文件
public/assets/
public/images/
*.png
*.jpg
*.jpeg
*.gif
*.svg
*.webp
*.avif
*.ico
*.pdf
*.zip
*.tar.gz
*.wasm

# 项目文档与外部接口规范
docs/
*.mdx
specs/swagger/
*.postman_collection.json

# 本地环境变量与证书密钥
.env*
!.env.example
*.pem
*.key
*.cert

# 数据库迁移文件与 SQL 转储
*.sql
*.dump
prisma/migrations/

部署 .claudeignore 的实际成效

当 Claude Code 执行目录遍历或符号追踪时,一个未被忽略的 package-lock.json(通常包含 25,000 至 80,000 行代码)单次读取就会瞬间消耗超过 120,000 个 Token。将 Lockfile 和构建目录列入黑名单后,首次会话上下文快照将从约 180,000 Token 骤降至不足 15,000 Token。


4. 核心支柱 2:Prompt Caching 架构与 90% 读取折扣最大化

Anthropic 的 Prompt Caching 机制允许输入 Token 在服务器端保留长达 5 分钟(每次缓存命中时刷新计时器)。缓存读取的成本仅为基准输入费用的 10%(Sonnet 上仅需 $0.30/1M,原价为 $3.00/1M)。

+-------------------------------------------------------------------------+
|                    Anthropic Prompt Caching 缓存生命周期                |
+-------------------------------------------------------------------------+
                                     |
                                     v
+-------------------------------------------------------------------------+
| [系统提示词与系统工具定义] (静态前缀 - 始终长效缓存)                   |
+-------------------------------------------------------------------------+
                                     |
                                     v
+-------------------------------------------------------------------------+
| [项目仓库架构图谱与编码规范] (已缓存的检查点 Checkpoint)                |
+-------------------------------------------------------------------------+
                                     |
                                     v (缓存失效断点!)
+-------------------------------------------------------------------------+
| [动态用户指令与多轮工具调用] (未缓存的动态尾部)                         |
+-------------------------------------------------------------------------+

维护 Prompt Cache 完整性的三项铁律

  1. 严禁在系统上下文中注入动态时间戳:不要在 CLAUDE.md 中添加动态日期或会话 ID。前缀中任何一个字符的变化都会导致后续所有缓存 Token 全部失效。
  2. 在 5 分钟时间窗口内组织连续调用:缓存 TTL 为 300 秒。若在审查代码时停留超过 6 分钟,下一步交互将重新支付完整的缓存写入费用($3.75/1M)。建议在交互时保持节奏,或提前规划好批处理任务。
  3. 保持系统指令自上而下由静态到动态排序:Claude Code 内部运行时会将静态指令与工具定义置于 API 请求前缀,确保 CLAUDE.md 中的规范保持确定性。

5. 核心支柱 3:子代理调用与子任务上下文隔离

终端智能体开发中最容易陷入的误区是单体长会话陷阱(Monolithic Session Trap)。在同一个会话中,开发者往往让 Claude 依次完成复现缺陷、编写测试、重构模块、运行集成测试和编写文档。

进入第 12 轮交互时,上下文窗口已被数千行失败测试日志、编译器警告及旧版文件内容填满。此后的每一次提问都会重复提交这团臃肿的历史数据。

两级智能体架构:侦察员(Scout)与执行者(Worker)

通过解耦“代码探索”与“代码修改”,彻底切断 Token 冗余:

[用户任务请求]
       |
       v
+---------------------------------------------+
|  第 1 级:只读侦察子代理 (Scout Subagent)   |
|  - 基于 claude-3-5-haiku 或轻量模型运行     |
|  - 使用 Glob、Grep 及指定行范围读取         |
|  - 将 500,000 Token 数据提炼为 2KB 结构化摘要|
+---------------------------------------------+
       |
       v (精简上下文交接)
+---------------------------------------------+
|  第 2 级:核心执行智能体 (Primary Worker)   |
|  - 基于 claude-3-7-sonnet 运行              |
|  - 仅接收目标文件路径与关键 AST 符号        |
|  - 执行行锚定(Line-Anchored)精确补丁修改  |
+---------------------------------------------+

在 Claude Code 中落地子任务隔离

面对大型功能开发时,建议将其拆分为独立的终端会话或专用执行步骤:

# 错误做法:单个长会话导致上下文严重膨胀
claude "查找所有使用旧版鉴权的接口,迁移至 OAuth2,修复测试用例并更新文档"

# 正确做法:隔离侦察 -> 靶向执行
# 第 1 步:低 Token 成本侦察
claude --model claude-3-5-haiku -p "列出所有使用旧版 auth 中间件的文件路径和对应行号,输出为 JSON 列表。" > auth-audit.json

# 第 2 步:纯净上下文中进行高精度修改
claude --model claude-3-7-sonnet "重构 auth-audit.json 中列出的接口以接入 OAuth2 中间件。不要修改任何其他无关文件。"

6. 核心支柱 4:模型精细化选型——哪个 Claude 模型消耗更少 Token?

许多开发者误以为所有 Claude 模型完成同一任务消耗的 Token 总量完全相同。事实上,由于推理逻辑与行为差异,不同模型的 Token 消耗差距巨大:

  • Thinking 思考预算:具备扩展思考能力的模型会产生数千个思维链 Token,这些 Token 均按输出标准计费(Sonnet 为 $15.00/1M)。
  • 工具调用冗余度:部分模型在调用工具前会输出冗长的前置解释,徒增生成 Token。
  • 检索效率差异:更聪明的模型通常能通过 1-2 次精准的 Grep 定位符号,而较弱的模型往往会反复盲读整个大文件。

各任务场景下的 Token 消耗实测数据

任务类型 Claude 3.5 Haiku Claude 3.7 Sonnet (常规) Claude 3.7 Sonnet (8k Thinking) Claude 3 Opus
仓库符号检索 12k Token / $0.01 14k Token / $0.04 24k Token / $0.18 18k Token / $0.27
单函数缺陷修复 28k Token / $0.03 22k Token / $0.07 35k Token / $0.24 30k Token / $0.45
多文件重构 (5个文件) 失败率较高 140k Token / $0.48 190k Token / $1.25 220k Token / $3.30
高难度并发竞态分析 无法解决 320k Token (失败) 240k Token (成功) / $1.60 280k Token / $4.20

选型推荐矩阵

  • 默认主力模型:80% 的日常编码任务推荐使用 常规模式的 claude-3-7-sonnet
  • 侦察与脚本辅助:文件查找、正则提取、简单 Shell 脚本编写推荐使用 claude-3-5-haiku
  • 深度思考模式:仅在遇到复杂的并发 Bug、算法边界或首次修改失败的编译错误时,针对性启用 Thinking(设置 thinking: { budget_tokens: 4000 })。

7. Claude Code 高级配置深度优化

Claude Code 支持高度定制化。可通过 ~/.claude.json 配置全局默认项,或在项目根目录通过 .claude/config.json 覆盖工作区配置。

高效能 .claude/config.json 配置文件

{
  "$schema": "https://json.schemastore.org/claude-code-config.json",
  "model": "claude-3-7-sonnet",
  "maxThinkingTokens": 2048,
  "autoCompactContext": true,
  "contextCompactionThreshold": 0.65,
  "allowedTools": [
    "Edit",
    "Bash",
    "Glob",
    "Grep",
    "Read"
  ],
  "toolLimits": {
    "bashOutputMaxLines": 150,
    "readFileMaxLines": 300
  },
  "enableTelemetry": false
}

核心参数详解

  1. maxThinkingTokens: 2048:为 Extended Thinking 设置上限。默认情况下无节制的思考过程可能在单轮中耗费 8k 至 16k 个 Token($0.12 - $0.24)。
  2. autoCompactContext: true:当上下文窗口达到 65% 阈值(contextCompactionThreshold: 0.65)时,自动触发历史摘要压缩,将历史工具输出替换为精简技术备忘。
  3. bashOutputMaxLines: 150:防止测试框架或包管理器安装日志将多达 5000 行的 stdout 输出直接倾倒进上下文。

8. 节省 Token 的终端提问实战模式

日常 Prompt 习惯直接影响多达 40% 的 Token 消耗。推荐遵循以下经过实战检验的模式:

模式 1:指定精确行号范围读取

避免让智能体直接读取全文件,显式限定目标代码区间:

# 错误:单次读取 1,800 行 (消耗 14,000 Token)
"读取 src/auth/session.ts 并排查为什么用户 Token 校验失败"

# 正确:仅读取 60 行 (仅消耗 450 Token)
"查看 src/auth/session.ts 第 120-180 行中 verifyJwt() 函数的实现逻辑"

模式 2:静默与截断终端输出

命令智能体运行测试或构建时,强制启用静默或错误过滤模式:

# 错误:向上下文倾倒上千行通过的测试日志
"运行 npm test 并修复报错"

# 正确:实施输出拦截
"运行 npm test -- --reporter=dot 或使用 grep 过滤失败信息。切勿输出通过测试的日志。"

模式 3:会话及时整理与重置(/compact/clear

充分利用 Claude Code 的内置命令:

  • /compact:手动触发立即压缩,将冗长的交互历史提炼为密集的上下文摘要。
  • /clear:在切换不同业务模块前清空上下文,防止上一个任务的垃圾信息干扰。

9. 综合对比:各项 Token 优化策略评估矩阵

下表系统化评估了各优化方案的节省效果、落地难度与代码质量风险:

优化策略 典型 Token 节省比例 实施难度 代码质量风险 核心实现机理
严格配置 .claudeignore 40% – 60% 低 (5 分钟) 零风险 彻底隔绝 Lockfile、静态媒体与编译目录
上下文压缩 (/compact) 30% – 50% 极低 (单一命令) 及时清理过期 Bash 日志与废弃代码版本
子代理协同侦察 (Scout) 35% – 55% 中等 (流程拆分) 极低 将只读检索与高成本修改彻底分离
限制 Thinking 预算上限 20% – 35% 低 (调整配置) 中-低 防止常规重构中陷入死循环过度推理
行锚定局部 Patch 补丁 15% – 25% 低 (Prompt 指引) 以局部差异化修改替代全文件重写
对齐 Prompt Caching 结构 10% – 20% (费用) 中等 零风险 固化静态系统前缀,享受 90% 读取优惠

10. 总结与行动实施清单

在 Claude Code 中削减 75% 的 Token 消耗并不以牺牲代码质量为代价。相反,更精简聚焦的上下文窗口能有效消除注意力漂移与幻觉,从而大幅提升模型的推理准确度。

5 步立即可落地的行动清单:

  1. [ ] 部署 .claudeignore:立即将生产级模板添加至项目根目录,过滤所有 Lockfile 与构建缓存。
  2. [ ] 优化 config.json:将 Thinking Tokens 限制在 2048,并开启 0.65 的自动上下文压缩。
  3. [ ] 合理匹配模型层级:日常编辑使用 claude-3-7-sonnet,检索扫描使用 claude-3-5-haiku,仅对疑难边界问题开启深度思考。
  4. [ ] 严格限制 Shell 输出:使用紧凑型测试参数(--reporter=min,配合管道流 grep 过滤),确保控制台单次输出低于 100 行。
  5. [ ] 定期重置清理上下文:在不同功能模块开发间隙执行 /compact/clear,彻底规避上下文退化。

将上述工程规范融入日常终端编码流程中,即可在尽享前沿 AI 智能体开发效能的同时,将每月的 API 账单降至极低水平。

← 返回所有文章
0 / 4