1. 账单从400到80我到底动了哪些地方先交代一下背景。我自己平时写代码、做小工具、偶尔接点外包属于那种“一个人当三个人用”的独立开发者。大概一个多月前开始把 Claude Code 当成主力编码助手写业务逻辑、改 bug、写测试、重构老代码基本都靠它。第一个月账单出来的时候我人是懵的——400 块出头。不是说付不起而是我清楚自己大部分时间干的都是些“改个字段名”“补个类型注解”这种小活凭什么烧这么多。于是第二个月我花了整整一周时间专门研究钱到底花在哪了。结论很直接不是 Claude Code 贵是我用得太糙。模型选型一刀切、上下文无限膨胀、缓存完全没利用、会话该断不断这四个问题叠加起来账单翻个三四倍一点不奇怪。调整完之后第二个月账单压到了 80 块出头功能体验几乎没打折。这篇就把我这一个月踩过的坑、试过的方案、最后稳定下来的配置原原本本写出来。适合谁看适合所有把 Claude Code 当日常工具、但看到账单会心疼的人也适合刚上手、还没形成使用习惯的新手。我会把每一步“为什么这么改”讲清楚你照着抄作业就行不用自己再摸索一遍。核心思路其实就一句话把贵的算力用在真正需要它的地方把便宜的算力用在重复劳动上。听起来像废话但真落到配置层面大部分人根本没做到。2. 先搞清楚钱是怎么烧掉的2.1 计费逻辑输入、输出、缓存三笔账要省钱先得知道账单的构成。Claude 的 API 计费本质上是三块输入 token、输出 token、缓存读写。这三块的价格差异非常大尤其是不同模型之间。我拿自己实际用到的几个模型做个对比价格按公开的每百万 token 计单位是美元具体数字会随官方调整这里只讲量级关系模型档位输入价格量级输出价格量级适用场景旗舰档Opus 类最高最高复杂架构设计、疑难 bug均衡档Sonnet 类中等中等日常编码、重构、写测试轻量档Haiku 类最低最低改字段、补注释、格式化关键点在于旗舰档和轻量档的输入价格可能差十几倍甚至更多。我第一个月的问题就是不管干什么都用旗舰档等于开着卡车去菜市场买两根葱。还有一个容易被忽略的点输出 token 通常比输入 token 贵好几倍。这意味着让模型“少说废话、直接给代码”本身就是省钱。我后来在 CLAUDE.md 里明确要求它不要解释、不要复述我的需求、不要写“好的我来帮你”光这一条每个月就能省下不少。2.2 上下文膨胀最隐蔽的烧钱黑洞比模型选型更隐蔽的是上下文膨胀。Claude Code 的工作方式是把你的项目文件、对话历史、工具调用结果都塞进上下文里。你聊得越久、读的文件越多每一轮请求携带的输入 token 就越多。我做过一个实测一个中等规模的会话刚开始每轮输入大概 8000 token聊了 40 轮之后每轮输入涨到了 6 万多 token。也就是说同样一句“帮我改下这个函数”第 40 轮的成本是第 1 轮的七八倍。这就是为什么很多人觉得“我也没干多少活怎么账单这么高”。更坑的是很多人习惯一个会话从早开到晚中间啥都聊。上下文里堆满了已经无关的旧代码、失败的尝试、跑偏的讨论每一轮都在为这些垃圾付费。2.3 缓存被90%的人浪费掉的折扣Claude 的 prompt caching 是个实打实的省钱利器但前提是你得让它命中。原理很简单如果你每次请求的前缀部分比如系统提示、CLAUDE.md、固定的项目说明完全一致这部分内容会被缓存后续读取缓存的价格远低于重新输入。问题在于很多人根本没意识到自己的请求前缀一直在变。比如 CLAUDE.md 里写了当前时间、写了“今天要做的任务”或者每次会话开头都手动粘贴一段不同的说明缓存就永远命不中。我第一个月基本没吃到缓存的红利因为我的 CLAUDE.md 写得太“动态”了。2.4 会话管理该断不断反受其乱最后一个大头是会话管理。一个会话就是一个持续累积的上下文。任务做完了不关继续在里面聊新任务等于让新任务背着旧任务的包袱跑。我后来养成的习惯是一个独立任务一个会话做完就关。听起来麻烦但省下来的钱和提升的响应速度完全值得。3. 我的省钱配置从模型到CLAUDE.md3.1 模型分级什么活用什么档这是省钱的第一刀也是最有效的一刀。我现在的策略是三级分工轻量档改字段名、补类型注解、写简单注释、格式化、生成样板代码。这类任务占我日常工作的六成以上全部走轻量档。均衡档写业务逻辑、重构函数、写单元测试、排查一般 bug。这是主力档位占三成左右。旗舰档只在两种情况下用——复杂架构设计、以及均衡档连续两次没搞定的疑难问题。占比不到一成。怎么切换Claude Code 支持在会话中切换模型我一般开新会话时就根据任务类型选好档位不中途乱切。这里有个经验不要为了省几毛钱在简单任务上纠结用哪个档直接上轻量档就对了真正要抠的是别在简单任务上用旗舰档。我算过一笔账把六成的轻量任务从旗舰档降到轻量档光这一项就能砍掉一半以上的成本。因为轻量档的单价可能只有旗舰档的十分之一到二十分之一。3.2 CLAUDE.md 怎么写才省钱CLAUDE.md 是 Claude Code 的项目级配置文件放在项目根目录每次会话都会自动读取。它既是提升效果的关键也是省钱的关键——因为它直接影响缓存命中率和输出长度。我踩过的坑是第一版 CLAUDE.md 写得太啰嗦塞了一堆项目背景、历史决策、注意事项结果每次请求都要把这坨东西当输入传一遍。后来我把它精简成了“固定不变 高度结构化”的版本。我的 CLAUDE.md 现在长这样示意# 项目约定 ## 技术栈 - 语言TypeScript 5.x - 框架React 18 Vite - 测试Vitest ## 代码规范 - 使用函数式组件不用 class - 类型定义放 types/ 目录 - 禁止 any用 unknown 类型守卫 ## 输出要求 - 只给代码不要解释 - 不要复述我的需求 - 改动超过3个文件时先列清单关键点有三个第一内容必须固定。不要写“当前正在做的任务”“今天的日期”这种每次都变的东西否则缓存永远命不中。第二输出要求要明确。我加了“只给代码不要解释”之后模型输出 token 直接降了大概四成。很多人不知道模型默认会写一堆“好的我来帮你实现这个功能首先我们需要……”这种废话全是钱。第三规范要具体。与其写“代码要规范”不如写“禁止 any”。具体的规则能让模型一次做对减少来回返工返工才是最贵的。3.3 缓存命中的实操细节光把 CLAUDE.md 写固定还不够还要注意请求前缀的稳定性。我的做法是CLAUDE.md 一旦定稿一个月内基本不动。要改就集中改一次改完接受一次缓存失效。会话开头不要手动粘贴大段说明。需要补充的上下文放到对话中间说别放在最前面破坏前缀。项目级的固定说明比如 API 文档摘要如果很长考虑放进 CLAUDE.md 而不是每次粘贴。实测下来缓存命中之后那部分输入的单价能降到原来的十分之一左右。对于我这种 CLAUDE.md 加项目文件动辄上万 token 的场景这一项省下来的钱非常可观。3.4 会话粒度一个任务一个会话这条听起来最简单但执行起来最需要自律。我现在的规矩是开始一个新任务先想清楚它是不是独立任务。是就开新会话。会话里如果发现跑偏了比如连续几轮都没解决问题果断关掉重开别硬撑。硬撑的代价是上下文越来越脏每轮都在为错误尝试付费。长任务比如重构一个大模块可以保留会话但每完成一个子阶段我会让它总结一下当前状态然后开新会话带着总结继续。这样既保留了进度又清空了垃圾上下文。我做过对比同一个重构任务一个会话硬扛到底花了大概 12 块拆成三个会话花了 5 块出头。差距就是这么直接。4. 实操流程一次典型的省钱编码4.1 任务分类与档位选择假设我现在要做一个功能给用户列表加一个搜索框支持按名字和邮箱过滤。我拿到需求的第一件事不是打开 Claude Code而是先分类。这个任务包含改 UI 组件、加过滤逻辑、写测试。属于中等复杂度我选均衡档。如果只是“把 UserList 组件的 props 类型从 any 改成具体类型”那就是轻量档。分类的标准我总结成一句话需要理解业务逻辑的用均衡档纯机械改动的用轻量档需要设计决策的用旗舰档。搜索框这个任务需要理解数据流所以均衡档。4.2 会话初始化与上下文控制开新会话第一句话我通常是这样说的读一下 src/components/UserList.tsx 和 src/hooks/useUsers.ts我要加搜索过滤功能。注意我明确指定了要读哪两个文件而不是让它自己满项目乱翻。让模型自己找文件是上下文膨胀的重灾区它可能读十几个不相关的文件全是钱。我一般会先自己定位好相关文件再告诉它读哪些。如果项目结构复杂我会在 CLAUDE.md 里写清楚目录约定这样它找文件更准减少无效读取。4.3 分步执行与验证我不会一次性把整个需求丢给它。我的做法是拆成三步先让它改 useUsers.ts加过滤逻辑我验证逻辑对不对。逻辑对了再让它改 UserList.tsx加搜索框 UI。最后让它写测试。每步做完我立刻验证有问题当场修。这样做的好处是如果第一步就错了不会带着错误上下文继续往下走。一次性丢整个需求模型很可能在错误的方向上狂奔等你发现时已经烧了一堆 token。这里有个细节验证的时候我会把报错信息精简后再贴回去。完整的堆栈信息可能几百行其中大部分是无关的框架内部调用。我只贴关键的那几行能省不少输入 token。4.4 收尾与账单复盘任务做完关会话。然后我会在每周固定时间看一眼账单按项目、按模型档位拆一下看看钱花在哪。这个习惯帮我发现了不少问题比如有一次发现某个项目的成本异常高查下来是 CLAUDE.md 里不小心写了一段会变的内容导致缓存一直不命中。复盘不用很复杂我一般就看三个数本周总花费、各档位占比、缓存命中率。如果轻量档占比低于五成说明我模型选型太保守了如果缓存命中率低说明前缀不稳定。5. 常见问题与排查技巧5.1 账单突然变高怎么查这是最常遇到的问题。我的排查顺序是排查项怎么查常见原因模型档位看会话记录用了哪个档简单任务误用旗舰档上下文长度看单轮输入 token 数会话太长、读了太多文件缓存命中看缓存读写比例CLAUDE.md 内容不固定输出长度看输出 token 占比没要求“只给代码”会话数量数一下开了多少会话一个任务反复重开按这个顺序查基本能定位到问题。我遇到最多的是前两个要么是偷懒用了旗舰档要么是一个会话拖太久。5.2 缓存不命中的几个坑缓存不命中特别隐蔽因为你看不到它只能从账单上感觉“怎么没便宜”。我踩过的坑有CLAUDE.md 里写了“当前任务xxx”每次改任务就失效。会话开头习惯性粘贴一段项目说明每次内容略有不同。用了某些插件或工具自动在请求前面加了时间戳之类的东西。排查方法很简单连续发两次完全相同的请求看第二次的缓存读取量是不是明显上升。如果不是说明前缀不稳定。5.3 省钱和效果的平衡有人会担心都用轻量档效果会不会变差我的经验是轻量档在机械任务上效果和旗舰档几乎没差别因为这类任务不需要推理能力。真正需要旗舰档的是那些“需要想清楚才能做”的任务。我的判断标准是如果这个任务我自己做需要思考超过五分钟就用均衡档以上如果只是手速问题用轻量档。按这个标准我大概只有不到一成的任务需要旗舰档。5.4 几个容易忽略的省钱细节最后分享几个零碎但有用的技巧别让模型读整个文件。如果只需要改一个函数告诉它函数名让它只读那部分。报错信息精简后再贴。只贴关键行别贴整个堆栈。让它先列计划再动手。对于多文件改动先让它列个清单你确认后再执行避免它改错方向白烧钱。定期清理不用的项目配置。有些 CLAUDE.md 是临时写的项目做完了还留着下次误开就白读一遍。输出格式要求写死。比如“用 diff 格式给改动”比让它重写整个文件省得多。6. 我最后稳定下来的日常配置折腾了一个月我现在的配置基本定型了这里完整列一下你可以直接参考模型策略轻量档打底均衡档主力旗舰档救火。比例大概是 6:3:1。CLAUDE.md固定不变只写技术栈、代码规范、输出要求三块控制在 50 行以内。会话习惯一个任务一个会话跑偏就重开长任务分阶段。输出要求只给代码、不复述需求、改动多先列清单、用 diff 格式。复盘频率每周看一次账单重点看档位占比和缓存命中。这套配置跑下来我的月账单稳定在 80 到 100 块之间比最初的 400 块降了大概八成。功能上没有任何妥协该用旗舰档的时候照样用只是不再无脑用了。说句实在话省钱的本质不是抠门而是把资源用在刀刃上。Claude Code 是个好工具但好工具用糙了照样烧钱。我踩过的这些坑希望你能绕过去。如果你也在用类似的工具不妨先花半小时看看自己的账单构成大概率能发现一两个立竿见影的优化点。
阅读完成 · 觉得有帮助?