
月底打开 API 控制台那一刻我盯着账单愣了几秒400 多块就这么被 Claude Code 一个月烧完了。第一反应是怀疑自己是不是把某个生产 Key 泄露了第二反应才是——这工具用得太顺手顺手到忘了它每一轮对话都在按 token 计费。这一个月我做了不少调整从换模型后端、管理上下文、改会话习惯到给整个工作流上了预算护栏把账单从 400 压到了 80。这篇就把我踩过的坑、算过的账、改掉的坏习惯全部摊开给同样在用 Claude Code 写代码、做自动化的朋友一个可复现的成本优化参考。账单数字因人而异但省钱思路是通用的。1. 账单翻车现场400 块到底是怎么烧出来的1.1 Claude Code 的按量计费逻辑先搞清楚一件事Claude Code 本身是一个跑在终端里的 AI 编程代理它并不仅仅是一个对话窗口而是一个会自己读文件、执行命令、写代码、反复试错的智能体。这个过程不像网页聊天那样聊一句算一句而是每次它会先去读你的项目文件、然后把思考过程和工具调用结果全部塞进上下文再往下走下一步。每一步都在消耗输入 token而输入 token 并不便宜。按照 Anthropic API 的参考定价Claude Sonnet 大约是输入每百万 token 3 美元、输出每百万 token 15 美元如果用的是 Opus 系列输入直接翻到 15 美元、输出 75 美元。算成人民币虽然会因为汇率波动但大致量级就摆在那一次普通会话动辄几万 token一天跑下来就是几美元一个月累计到 400 元人民币一点也不奇怪。我当时使用的是官方 API 按量付费没有开订阅制也没有做任何用量限制所以月底一看到账单就明白了不是被薅了羊毛是自己根本没给这头羊装栅栏。1.2 一个常规会话的真实消耗拆解我挑一个典型场景来说让 Claude Code 帮我修一个 Python 项目的 bug。它拿到指令之后会先读取项目目录结构、打开相关源码文件、确认报错信息这些操作每一轮都会在上下文里累积。粗略估算一次读文件 - 定位 - 改代码 - 自测跑一遍的完整流程输入往往要消耗两万到三万 token输出大概三千到五千 token。按 Sonnet 的价格算一次这样的会话成本大约 0.1 到 0.15 美元也就是不到 1 块钱人民币。听起来不多对吧但我那阵子几乎把 Claude Code 当主力编辑器用一天轻松跑二三十次一天就是二三十块钱一个月下来不就四百了。这还没算那些我觉得聊着聊着就失控的会话比如让它连续改同一份文件改了七八轮还没对这种场景下的历史上下文会越滚越大输入 token 每轮都在暴涨成本比普通对话高得多。1.3 三个加速烧钱的隐形推手第一个推手是模型选得太贵。Claude Code 如果不手动指定默认行为会倾向于调用能力较强的模型追求一步到位而不是够用就行。对大部分写接口、调格式、查文档的任务来说这个选择是过度的。第二个推手是长会话不清理。有些人习惯一个会话开一天从一开始聊需求到最后部署全部揉在同一个上下文里。上下文越长每轮重新发送给模型的输入就越大成本是指数级上升。最典型的就是我后面会讲到的 1048576 token 超限报错那已经不只是多花钱的问题而是直接没法继续干活。第三个推手是失败重试。Claude Code 在遇到 API 报错、工具执行失败时会尝试重试而每一次重试都要重新把上下文发给模型。如果 Key 配错了、代码环境炸了你看着它在终端里反复横跳其实每一跳都在烧 token。我自己就有一段因为 401 报错反复折腾白白多烧了几十块钱的经历。2. 成本压降第一刀换后端模型把日常任务从官方 API 迁走2.1 Claude Code 只是一个壳真正定价的是模型我真正省钱的第一步不是少用而是换个更便宜的大脑。Claude Code 本质上是一个 Agent 框架它对模型的要求是能理解工具调用、能输出规范格式而不是必须是 Anthropic 官方模型。这一点很多人都没意识到。Claude Code 支持通过环境变量指定 API 端点和认证方式。只要你的服务商提供 Anthropic 兼容接口或者通过中间网关做一次格式转换Claude Code 就能跑在第三方的模型上。现在很多模型厂商和开源网关都在做 Anthropic 协议兼容DeepSeek、通义千问、智谱 GLM、Kimi 这些都能接进来。我的做法很简单日常的代码修改、文档整理、批量脚本生成这些对模型推理能力要求没那么极端的任务全部迁到第三方模型只有像复杂架构重构、跨模块问题定位、需要长链路逻辑推理的时候才切回 Claude 官方模型。2.2 用 cc switch 管理多模型接入要频繁切换模型最方便的工具就是开源的 cc switch。它相当于给 Claude Code 做了一个模型路由器可以在同一个界面里维护多套 API 配置一键切换不用每次改环境变量再重启终端。我项目的实际操作流程是这样的先在电脑上装好 Node.js 18 以上的运行环境然后全局安装 Claude Codenpm install -g anthropic-ai/claude-code安装完在项目目录执行claude就能启动命令行交互。然后把 cc switch 也装上在它的配置界面里维护三套配置官方 Anthropic 的 Key、DeepSeek 的 API 地址和 Key、通义千问的 API 地址和 Key。如果不想用 cc switch手动改环境变量也完全可行。Claude Code 读取的当前版本环境变量大致长这样export ANTHROPIC_BASE_URLhttps://your-gateway.example.com/anthropic export ANTHROPIC_AUTH_TOKENsk-your-third-party-key export ANTHROPIC_MODELdeepseek-chat设置完成后在同一终端里启动claude它就会走第三方模型不再消耗官方 API 额度。cc switch 的好处在于它会在不同配置之间做快速切换不用反复去翻环境变量配置文件。2.3 成本对比第三方模型比 Claude 便宜一个量级我整理了一张对比表用的是当时各家公开报价的大致量级具体价格会因为时间和活动变动大家以官方页面为准模型输入价格约输出价格约适用场景Claude Sonnet3 美元 / 百万 token15 美元 / 百万 token复杂推理、架构重构Claude Opus15 美元 / 百万 token75 美元 / 百万 token极难任务、长链路分析DeepSeek 主力模型约 0.3 美元 / 百万 token约 1 美元 / 百万 token代码编写、文本处理通义千问 Max约 2 美元 / 百万 token约 8 美元 / 百万 token中文理解、结构化输出GLM 系列约 1 美元 / 百万 token约 2 美元 / 百万 token通用任务可以明显看到第三方模型的价格差距不是百分之几十而是十倍甚至几十倍。同样一次会话在 Claude Sonnet 上花 1 块钱在 DeepSeek 上可能只需要 1 毛钱甚至几分钱。而且对于大部分改个函数、写个测试、格式化一段代码的活儿第三方模型的表现完全够用。2.4 该省省该花花官方模型留给复杂场景换模型不是无脑全换。我在实战中摸索出来的分配比例大概是这样的八成日常任务走 DeepSeek 或通义千问比如修 bug、写单元测试、整理日志、批量生成模板代码两成高难度任务切回 Claude 官方模型比如设计数据库表结构、重构模块边界、分析性能瓶颈、跨文件追踪状态流转。为什么要留这两成给官方因为 Claude 在长上下文理解和复杂规划上的优势仍然明显尤其是那种需要绕好几个弯才能定位问题的场景它一步到位的概率更高。如果硬用第三方模型去跑表面上省了钱实际上可能多翻几轮来回折腾的成本有可能追平而且体验会让人崩溃。所以我的核心原则是成本优化不等于降级而是让每类任务都找到性价比最高的模型。这一刀切下去我的月中账单就已经从 400 的节奏降到了 150 左右的节奏。3. 让 Claude Code 管住上下文从 1M 窗口里抢回成本3.1 上下文窗口越大钱包越瘪Claude Code 和支持的模型都支持超大上下文窗口尤其是 1M token 这个噱头出来之后很多人以为反正能装那么多那我就把所有内容全部塞进去。但这里有个残酷的计费事实你塞进去的每一个 token在下一次请求时都要重新作为输入发送一遍而且 Claude Code 每完成一个动作都要发起一次新的请求上下文越长每一轮的输入费用就越高。我自己就犯过这个错。有一次做一个跨模块的代码梳理把一个项目里十几个文件的内容全部读进了会话上下文堆到接近 80 万 token然后让它在上面继续改代码。结果每一轮请求的输入费用高得吓人而且经常要等很久才能得到响应最后还直接触发了我后来会讲到的 1048576 token 超限报错。3.2 会话管理三板斧/clear、/compact 与独立任务第一个工具是/clear。每个任务做完哪怕感觉聊得意犹未尽也要果断清理会话让上下文归零。我开始不习惯总觉得刚才聊的还有用但后来发现绝大多数历史信息要么已经写进了文件里要么本身就不重要留在会话里只是给账单加码。第二个工具是/compact。如果任务还没做完但上下文已经很长先用 compact 把历史压缩成一个摘要再继续往下走。这样能把几十万 token 的历史压到几千 token输入成本瞬间降到可以忽略的程度。第三个习惯是为每个独立任务开会话。比如修登录接口的 bug和给订单服务写测试这俩任务哪怕在同一项目目录我也建议分开两个会话跑。这样每个会话的上下文都保持在可控范围内不会因为任务 A 的历史拖累任务 B 的成本。3.3 子代理拆分让过程不回流到主线程Claude Code 这类 Agent 框架里有一个很实用的机制子代理。你可以让主线程把一个大任务拆成若干个子任务交给子代理去独立执行子代理最终只把简明结论交回给主线程而不是把执行过程中的每一步中间结果都灌进主上下文。这个机制简直就是为省 token 设计的。我以前的做法是让 Claude Code 一路读文件、一路自言自语式分析然后得出结果。现在我会明确告诉它先搜索相关代码把结论总结成要点再回到主线方案。这样主上下文里增加的只有子代理的结论而不是原始文件内容。在实践里这一步配合第三方模型使用效果特别好。因为第三方模型便宜你甚至可以放心让多个子代理并行探索不同的方向最后汇总到主线程再交给 Claude 做最终决策整体成本依然很低。3.4 CLAUDE.md 的精简与全局指令优化Claude Code 会读取项目里的 CLAUDE.md 作为全局指令。这个文件写得越精简每一轮请求的固定输入开销就越低。我曾经见过有人把整个团队规范、编码风格、部署流程全塞进去写了两千多字结果每次请求都要背着这两千多字跑来跑去一天几十次请求累计费用相当可观。我的建议是CLAUDE.md 只保留项目结构说明、常用命令、关键约束这三类内容每条尽量控制在两三句话。像请始终使用 TypeScript这种一句话约束就够了不需要展开成一篇论文。让项目上下文通过实际文件读取来获取而不是靠全局指令里预埋一堆描述。我还顺手检查了一下settings.json里的配置。Claude Code 的 VS Code 插件以及 CLI 都会读取这个配置文件如果你在里面写了太多自定义指令、权限规则或正则拦截它们同样会成为每次请求的固定上下文。精简之后单一会话的固定开销大概降了三分之一。4. 80 块的再优化缓存、配额与免费额度4.1 Prompt Caching 究竟给你省了多少当我们把上下文控制住了接下来就该研究缓存机制。Anthropic 官方 API 的 Prompt Caching 会把重复使用的输入前缀缓存一段时间命中缓存的输入价格远低于正常输入价格。我当时的印象是缓存命中的输入价格大约只有正常输入的一成也就是说如果你的系统提示、项目说明这些内容每轮都重复发送缓存能把这块开销几乎抹掉。问题是 Claude Code 的默认行为里缓存并不是对所有内容都生效它主要针对稳定前缀。如果我频繁在同一个长会话里往返缓存命中率会很高但如果每个任务都开新会话那前面那些重复的项目描述就享受不到缓存。这就是为什么我用第三方模型跑日常任务后反而没有太多缓存可占因为第三方模型走的是自己的计费规则很多也提供类似缓存逻辑但接口和价格各不相同。我的实操建议是把官方模型的用量集中在少数几个长任务会话里让 Prompt Caching 有命中的机会日常短任务交给第三方模型不去惦记那点缓存折扣。这样两边的便宜都能占到。4.2 预算限制与每日用量监控账单能压下来更重要的是给整个工作流装上限速阀。Anthropic 官方后台提供了成本提醒功能可以设置一个数字比如单日消耗超过 10 美元就发邮件提醒。第三方模型的平台也大多有余额阈值告警我把这些提醒全部开了。我之前没开提醒的时候经常是一周不看后台等到周日一看发现已经跑飞了。开了提醒之后情况完全不同星期三亚太账单却已经超过预期的三分之一我当天就会收敛使用频率找到底是哪个任务在疯狂消耗。更细一点的做法是用 cc switch 或网关侧的控制台看每个配置消耗了多少 token 和金额。我后来买了一个特别小的习惯每晚睡觉前瞄一眼当天的用量超过一个阈值就把第二天的使用节奏放慢。看起来有点小题大做但真的能避免月底惊吓。4.3 本地模型兜底什么时候值得开 LM Studio有一个热词叫claude code 调用 lmstudio 的本地模型我也试过这条路。把 ANTHROPIC_BASE_URL 指向本地模型服务之后Claude Code 确实能跑在本地模型上而且 token 费用为零。但别高兴太早。本地模型意味着你的电脑要烧显卡、烧电量而且能力上限和云端头部模型有明显差距。我实测下来本地模型适合这种场景批量格式化代码、给注释加翻译、打印日志提取关键行、做简单的正则生成。这些任务本身不依赖高深推理跑本地足够而且可以不限次数地跑。我最后的配置里加了一条规则只有一次性、小体量、机械性的任务才切到本地模型。一旦发现任务需要深入理解业务逻辑我会立刻切回云端模型。本地模型不是省钱的银弹但在正确的场景里确实能把每月的边际账单再推下去一截。4.4 别忽视第三方平台的新用户免费额度我刚开始换到 DeepSeek 和通义千问这些平台的时候顺手研究了一下各家新用户活动发现不少模型服务商对新用户都有免费额度有的甚至是几十块钱或几百万 token 的量级。反正注册成本不高这些免费额度用来自动化测试、跑一些探索性任务非常划算。我见过有人同时开了好几家平台的账号每个都领取免费额度然后把非核心任务按渠道轮着跑变相把成本压到几乎为零。不过这里要提醒一句别为了贪免费额度把生产环境的稳定性搭进去免费档往往有并发限制和速率限制适合跑那些晚几分钟出结果也无所谓的批量任务不适合做在线服务底座。5. 实战中反复出现的报错与排查5.1 401 Unauthorized被 API Key 骗了一个下午第一个让我账单多烧了不少钱的坑是一个下午都在跟unexpected status 401 unauthorized: incorrect api key provided搏斗。我当时的配置里同时存在环境变量、settings.json、cc switch 三套配置它们都有机会写入 API Key而某些配置的优先级会覆盖我的预期。后来发现一个细节以sk-svcac开头的那类 Key是服务账号 Key和普通 API Key 使用场景并不一样我一度拿着服务账号 Key 去用普通 API 的鉴权路径自然一直报 401。排查的思路很简单先清空所有环境变量和配置只留一个明确的 Key跑一次最简单的对话确认能通然后逐步把其他配置加回来每加一步都重启claude验证。这样很快就定位到了是哪个配置在捣乱。现在我会刻意把 Key 的配置只放在一个地方其他入口全部留空从源头避免覆盖。5.2 400 Context Length为什么 1M 也会超限api error: 400 this models maximum context length is 1048576 tokens这个报错看着像是个笑话我都还没用满 1M token怎么就超限了实际上这个数字是模型的理论窗口上限但 Claude Code 每次请求除了业务上下文还会塞入系统提示、工具定义、历史消息结构等额外 token而且有些中间步骤会产生隐藏的累积。我那次把项目十几份文件连同历史对话全部堆进一个会话很快就撞上了这个上限。解决方法是前面提到的/compact先把上下文缩小再用/clear开新会话同时把读取文件的范围限制到真正相关的模块而不是整个项目目录。如果你用的第三方模型上下文窗口本来就只有 128K 或 64K那更要小心Claude Code 默认的长领取样式可能直接把窗口撑爆。5.3 组织被禁用subscription access 问题有一次在另一台机器上配置 Claude Code运行时报your organization has disabled claude subscription access for claude code。这个报错跟 Key 无关而是组织管理员在后台把 Claude Code 的订阅访问关掉了或者组织根本没有开通相应权限。遇到这个报错不要反复改 Key那是白费功夫。正确做法是如果你所在的组织是管理员去 Anthropic 控制台的 Organization Settings 里检查 Claude Code 的访问开关如果你是个人用户确认你的账号类型是否包含 Claude Code 的访问权限。我自己当时误以为是不是网络问题折腾了半天才发现是组织权限属于标准的先检查权限开关再看网络的教训。5.4 事故源头Key 进仓库的教训还有个让我后背发凉的教训有一次我把 API Key 直接写在了项目环境的配置里然后差点提交到公开仓库。如果当时真的推上去了密钥被别人拿去调用账单就不是 400 的问题了。这件事给我养成了一个习惯全项目的敏感配置一律走环境变量文件并且把.env这类文件写进.gitignore。启动 Claude Code 之前先检查一遍配置里有没有明文 Key。因为这类密钥一旦被盗用成本优化做得再好也会一夜回到解放前。6. 一个月后的账单复盘80 块花在哪、能不能持续6.1 精确到项目的金额拆分压到 80 块的那一个月我拉了一下账单明细大致构成是这样的支出项金额约占比用途官方 Claude API25 元31%复杂重构、架构设计、少数高难度定位DeepSeek API30 元38%日常修 bug、写测试、生成模板通义千问 API10 元12%中文文档整理、结构化输出本地 LM Studio0 元走电费0%批量格式化、机械性任务免费额度与缓存折扣15 元抵扣—新用户额度、官方缓存命中可以看到真正压成本的核心不是某一个动作而是整套组合拳80% 的任务走了便宜的模型官方模型只留在高难度场景上下文被严格看管缓存和免费额度成了额外折扣。最终账单大约 80 元比月初那 400 多的节奏降了 80% 左右。6.2 从 400 到 80哪些代价需要接受成本降下来是有代价的这一点必须说实话。首先是要多花半天到一天时间做配置和路由规则包括搭 cc switch、配好各家 Key、写清楚什么任务走什么模型。这些一次性投入确实占时间但摊到一个月以后太划算了。另一个代价是体验波动。第三方模型偶尔会在某些复杂工具调用上犯迷糊我要么多给一轮提示要么直接切回官方模型重试。比起一开始什么都让 Claude Code 一条龙处理现在需要稍微多一点人工判断。但这个代价是可控的因为我只把高确定性的任务交给便宜模型高不确定性的任务本来就值得多花钱。第三个代价是要养成看账单的习惯。以前我可以不管成本埋头干活现在每天要瞄一眼用量。与其说这是负担不如说这是一个高效开发者应该有的成本意识毕竟 API 费用是随着用量线性增长的你不盯着它不会自己停下来。6.3 这个成本结构能持续多久这种成本结构能维持多久关键看两个变量。第一个变量是模型服务商的价格战DeepSeek、通义千问这些平台隔段时间就会有价格调整而且总体趋势是越来越便宜。这意味着第三方模型 官方模型混合路由的省钱空间大概率还会变大而不是变小。第二个变量是我自己的工作习惯。只要我继续坚持按场景分模型、控制上下文长度、限制单日预算就算 API 价格不变账单也很难再冲回 400。最后一个关键的保障是我现在给所有配置都设了预算提醒无论用哪家模型一旦有异常的用量波动我都能第一时间知道。这一轮从 400 到 80 的实践让我学会了不要试图用一个模型解决所有问题。工具是为人服务的给人打工之前先把账算明白用起来才踏实。