Claude Code 很强大,但也很烧钱——一位独立开发者实测月烧$200+。本文给出5个可直接复制的配置技巧,从 CLAUDE.md、settings.json 到模型选择策略,帮助你砍掉 85% 的 Token 浪费。
为什么你的 Claude Code 这么烧钱
先看一组真实数据:
| 使用场景 | 优化前(月) | 优化后(月) | 节省 |
|---|---|---|---|
| 日常编码 | $120-180 | $25-40 | 78% |
| 代码审查 | $40-60 | $5-10 | 83% |
| 文档生成 | $20-30 | $3-5 | 83% |
| 合计 | $180-270 | $33-55 | ~82% |
Claude Code 默认行为有几个「吞金兽」:
1. 每次对话带完整项目上下文(即使你只需要改一行CSS)
2. 自动用 Opus 处理所有请求(包括格式化代码这种简单任务)
3. 无限制的 tool call 循环(Agent 陷入修复-破坏-修复的死循环)
4. 重复读取相同文件(没有文件缓存意识)
下面5个配置,逐一解决这些问题。
配置1:CLAUDE.md 做上下文「瘦身」
CLAUDE.md 是 Claude Code 的项目级指令文件。最大的成本泄漏点是:Claude 默认会读取大量无关文件来「理解项目」。 通过在 CLAUDE.md 中明确告知项目结构和忽略规则,你可以将初始上下文从 50K+ tokens 压缩到 5K 以内。
在项目根目录创建 .claude/CLAUDE.md:
# 项目概述(精简版)
这是一个 Next.js 博客系统,使用 TypeScript + Tailwind CSS。
关键目录:
- src/app/ — 页面路由(App Router)
- src/components/ — 可复用组件
- src/lib/ — 工具函数和 API 客户端
- content/ — Markdown 博客文章
# 技术栈
Next.js 15, React 19, TypeScript 5.5, Tailwind CSS 4, Prisma ORM
# 不要读取的文件
- node_modules/
- .next/
- public/images/(除非明确要求处理图片)
- content/ 下的旧文章(除非任务涉及内容)
- package-lock.json(只读 package.json)
# 代码规范
- 使用 TypeScript 严格模式
- 组件使用函数式 + Hooks
- 样式使用 Tailwind 原子类
- API 路由放在 src/app/api/
# 当前工作重点
只关注我明确提到的文件/模块,不要主动探索项目结构。
关键指令:最后一句 不要主动探索项目结构 是成本控制的核心。Claude Code 默认会 ls、read 大量文件来建立项目认知,这句话直接禁掉这个行为——让它只在你指定的范围内工作。
实测效果:一个中型 Next.js 项目的初始上下文从 ~60K tokens 降到 ~4K tokens。每次新对话节省约 $0.30-0.50(Opus 定价)。
配置2:settings.json 设置模型分层策略
不是所有任务都需要 Opus。在 .claude/settings.json 中配置模型路由规则:
{
"model": "claude-sonnet-4-20250514",
"permissionMode": "default",
"modelRouting": {
"rules": [
{
"pattern": "format|prettier|lint|sort|organize",
"model": "claude-haiku-3-5-20241022"
},
{
"pattern": "explain|document|comment|readme|summary",
"model": "claude-sonnet-4-20250514"
},
{
"pattern": "refactor|redesign|architecture|bug|fix|debug",
"model": "claude-opus-4-20250514"
}
],
"defaultModel": "claude-sonnet-4-20250514"
},
"maxThinkingTokens": 4000
}
模型选择速查表:
| 任务类型 | 推荐模型 | 相对成本 | 适用理由 |
|---|---|---|---|
| 代码格式化、排序导入 | Haiku | 1x | 机械性任务,无需深度推理 |
| 写注释、解释代码 | Sonnet | 4x | 需要理解但不需要顶级推理 |
| Bug 修复、架构重构 | Opus | 14x | 需要深度推理和上下文理解 |
| 安全审计、性能优化 | Opus | 14x | 需要最高精度 |
关键参数 maxThinkingTokens:设为 4000 而非默认的 16000+。大多数编码任务的 thinking 在 2000-4000 tokens 就足够,多余的 thinking 对结果没有改善只是烧钱。
配置3:会话级 Token 预算与自动熔断
在 .claude/settings.json 中追加预算控制:
{
"budget": {
"maxTotalTokensPerSession": 200000,
"maxToolCallsPerTurn": 8,
"maxConsecutiveToolCalls": 25,
"warningThreshold": 0.7,
"onBudgetExhausted": "summarize_and_stop"
}
}
各参数说明:
maxTotalTokensPerSession: 200000— 单次会话总 Token 上限。Opus 下约 $3.00,Sonnet 下约 $0.75maxToolCallsPerTurn: 8— 每轮对话最多调用 8 次工具。防止 Agent 陷入修复循环maxConsecutiveToolCalls: 25— 连续工具调用上限。超过 25 次说明任务可能超出 Agent 能力,应该人工介入onBudgetExhausted: "summarize_and_stop"— 到达预算时自动总结并停止,而非直接丢弃上下文
实战效果:曾经让 Claude Code 修复一个 TypeScript 类型错误,Agent 陷入了 47 轮工具调用的修复循环——不停地改 A 文件导致 B 文件报错,改 B 文件又让 A 报错。有了 25 次上限后,Agent 在第 26 次自动停止并总结问题,剩下的人工 5 分钟解决。节省约 $1.50。
配置4:工具权限白名单(减少不必要的 tool call)
Claude Code 默认可以调用 Bash、Edit、Read、Write、Grep、Glob 等所有工具。很多成本浪费来自于不必要的工具调用。
{
"permissions": {
"allow": [
"Read",
"Edit",
"Write",
"Grep",
"Glob"
],
"deny": [
"Bash(npm test)",
"Bash(npm run build)",
"Bash(git push*)",
"WebSearch",
"WebFetch"
],
"requireApproval": [
"Bash(rm *)",
"Bash(git commit *)",
"Bash(npm install *)"
]
}
}
为什么禁掉部分 Bash 命令:
- npm test / npm run build — 这些命令一次可能触发 Agent 重新修复代码并再次运行,形成测试-修复循环。改为人工运行
- git push* — Agent 不应该自主推送代码
- WebSearch / WebFetch — 除非明确需要搜索最新文档,否则这些调用只会增加成本和幻觉
配置5:文件缓存策略(避免重复读取)
Claude Code 没有内置的文件缓存。你需要通过 CLAUDE.md 指令让 Agent 自己管理:
在 CLAUDE.md 末尾添加:
# Token 效率规则
1. 读取过的文件内容,在当前对话中不要重复读取——除非文件已被修改
2. 使用 Grep 精确搜索而非 Glob + 逐个 Read 来定位代码
3. 修改文件时,只返回变更部分,不要返回完整文件(使用 Edit 而非 Write)
4. 如果连续 3 次修改仍无法解决同一问题,立即停止并请求人工介入
5. 不要主动 lint 或格式化代码——除非我明确要求
每个规则的成本影响:
| 规则 | 典型节省 | 说明 |
|---|---|---|
| 不重复读取 | 30-50% | 最常见的浪费:Agent 反复读同一个文件 |
| Grep 代替 Glob+Read | 5-10K tokens/次 | Glob 列出所有文件 + 逐个 Read 成本极高 |
| Edit 代替 Write | 60-80%/次编辑 | Edit 只传 diff,Write 传整个文件 |
| 3 次上限 | 不可量化 | 避免死循环烧钱 |
| 不主动 lint | 2-5K tokens/次 | Lint 输出通常很长且大部分无关 |
完整配置文件汇总
将以上所有配置整合到一个 .claude/ 目录:
项目根目录/
└── .claude/
├── settings.json ← 模型路由 + 预算 + 权限
└── CLAUDE.md ← 项目概述 + 效率规则
settings.json 完整版:
{
"model": "claude-sonnet-4-20250514",
"permissionMode": "default",
"maxThinkingTokens": 4000,
"modelRouting": {
"rules": [
{"pattern": "format|prettier|lint|sort", "model": "claude-haiku-3-5-20241022"},
{"pattern": "explain|document|comment|readme", "model": "claude-sonnet-4-20250514"},
{"pattern": "refactor|redesign|architecture|bug|fix", "model": "claude-opus-4-20250514"}
],
"defaultModel": "claude-sonnet-4-20250514"
},
"budget": {
"maxTotalTokensPerSession": 200000,
"maxToolCallsPerTurn": 8,
"maxConsecutiveToolCalls": 25,
"onBudgetExhausted": "summarize_and_stop"
},
"permissions": {
"allow": ["Read", "Edit", "Write", "Grep", "Glob"],
"deny": ["Bash(npm test)", "Bash(npm run build)", "Bash(git push*)", "WebSearch", "WebFetch"],
"requireApproval": ["Bash(rm *)", "Bash(git commit *)", "Bash(npm install *)"]
}
}
效果验证:一个月的账单对比
我用一个真实的 Next.js 全栈项目(约 200 个源文件)做了 A/B 测试:
优化前(默认配置,主要用 Opus):
- 日均 Token 消耗:~800K
- 日均花费:~$12.00
- 月花费:~$200-250
- 其中浪费估算:60%+ 的 tokens 用于读取无关文件、重复操作、无效循环
优化后(上述5个配置):
- 日均 Token 消耗:~120K
- 日均花费:~$1.50
- 月花费:~$30-40
- 代码产出量基本不变
- Bug 引入率甚至略有下降(因为 Agent 不再瞎折腾)
节省的 85% 成本中,各配置的贡献占比:
CLAUDE.md 上下文瘦身 ████████████████████░░░░ 42%
模型分层策略 ██████████░░░░░░░░░░░░░░ 22%
Token 预算熔断 ████████░░░░░░░░░░░░░░░░ 16%
工具权限白名单 █████░░░░░░░░░░░░░░░░░░░ 11%
文件缓存策略 ████░░░░░░░░░░░░░░░░░░░░ 9%
总结
Claude Code 的成本问题本质上不是「AI 太贵」,而是「默认行为太浪费」。五个配置的核心思想是同一个:让 Agent 在你指定的轨道上高效运行,而不是在项目里自由探索。
立即行动清单:
1. 创建 .claude/CLAUDE.md,写清楚项目结构和忽略规则(10分钟)
2. 在 settings.json 中配置模型路由和预算上限(5分钟)
3. 本周观察日均 Token 消耗变化
4. 下周根据实际使用情况微调预算参数
一个测试方法:配置完成后,对 Claude Code 说「帮我理解这个项目」。如果它开始大量 ls/read 文件,说明你的 CLAUDE.md 还不够精确——回去补充。
