🟡 进阶

AI 编程的 token 到底花在哪,怎么省下来

先读懂账单,再改三个习惯——多数人的浪费不在配置,在你没看见的那部分上下文里

📅 更新于 2026-09-13

0.1×
缓存命中的读取价(输入价的十分之一)
$13
官方企业均值:每位开发者每个活跃日
512–4096
一段前缀至少要这么多 token 才能被缓存
7×
团队助手在计划模式下的 token 倍率

0030 秒速览:三句话,和一张"按你的处境查"的索引

读完这一篇,你能做到三件事:打开一个会话就能看懂它的账单、说清自己的钱到底花在哪一类请求上、并且能用三四个改动把每月的 token 花掉一大块——不需要换工具,也不需要写代码。

🔑 先记住三句话(后面全是细节)

① 你付的不是"答案"的钱,而是AI 每走一步都要把它记得的所有东西再读一遍的钱——所以最贵的从来不是你那句话,而是它背后拖着的历史;② 省钱的动作分三层,先改习惯(会话卫生、输入瘦身、提示词精确),再看缓存命中率,最后才调模型档位,反过来做通常白费;③ 缓存是你唯一能拿到的"数量级折扣"——命中时读取价只有原价的十分之一,而破坏它的方法出奇地多(换了模型、改了项目记忆、离开超过保鲜期)。

按你的处境,直接看这一节

你现在的处境直接跳到这里为什么是这一节
刚接触,连 token 是什么都说不清01 token 到底是什么先把"计费单位"这个词变成能算的东西,后面每一节都靠它
账单涨得莫名,但不知道钱花在哪04 最小例子 + 05 先记账先读懂一次会话的账单,再谈优化——不记账的"省"会省到不该省的地方
包月订阅,觉得"省 token 与我无关"06 你是哪种付费用户包月省的是额度不是钱包:额度撞墙照样让你干不完活
会话开着不关,一天干好几件不相关的事07 杠杆一 · 会话卫生这是多数人最大的一笔浪费,改一个习惯就见效
经常让它读整个文件、贴整段日志08 杠杆二 · 输入瘦身新喂进去的每一段都是全价输入,而且会一直躺在上下文里被重发
一件事反复返工,来回改好几轮09 杠杆三 · 提示词一次到位每一次返工都是一整串带全上下文的新请求
用量面板里"缓存命中率"很低10 杠杆四 · 吃透缓存命中率低不是运气问题,是前缀被你自己改坏了
想省钱,但怕省出质量事故16 什么时候别省先划出不该省的那几条线,剩下的随便省
只想拿一张能贴在桌上的清单14 一页纸速查清单把全文压成"开工前 / 进行中 / 收尾 / 每周"四组动作

一条能立刻执行的三步路径

1
今天:把用量显示打开,做一次账单体检(约 10 分钟)

在会话里敲 /usage 看本次会话,把 /context 当"谁在占地方"的 X 光片看一次(05)。目标不是精确到分,而是建立一个量级感:这个会话是五毛钱还是五块钱?

2
这周:只改三个习惯,不碰任何配置(免费)

① 不相关的活就 /clear 开新会话;② 要改文件先用搜索定位、只喂相关片段;③ 需求里写清文件、范围、验收标准(07–09)。这三条通常就覆盖了大头。

3
下周:再动缓存与档位(需要改项目文件)

把项目记忆文件压到核心规则、把长流程挪进按需加载的技能文件、确认默认档位不是最贵的那一档(10、12、11)。

📌 读完你应该能

用自己的话讲清"为什么一句小指令也贵";在 /usage 的输出里指出哪一行是历史重读、哪一行是缓存省下来的钱;说出至少三种会让缓存失效的操作;并且知道哪几种情形下"为了省 token 而省"反而是亏的。本文讲的是省钱这类做法,不是某个工具的完整使用手册。

01token 到底是什么,钱又按什么算

先把三个词钉死:token(令牌)、上下文窗口(context window)、计费单位。这三个词你在别处都见过,但九成的人第一次的理解是错的——而账单就是按它们算的。

token 不是"字",是模型切出来的小块

大语言模型不按"字"读文本。它在读之前,先把你给的内容切成一个个小块,每块给一个编号,然后按块处理——这一小块就叫一个 token(令牌)。它可能是一个完整单词、半个单词、一个标点、一个汉字,也可能只是几个字母。模型和计费都只认这些块,不认你眼里的"字"。

所以"这段文字值多少钱"这个问题,准确的说法是"这段文字会被切成多少个 token"。而切法由模型自己的一套规则决定(这套规则叫分词器,tokenizer),不同模型切法不同,同一句话切出来的块数就不一样。

这一点现在比过去更要紧:官方在定价页和 token 计数页都写明了,Claude 4.7 及之后的模型换用了更新的分词器,同样一段文字会比旧模型多产出大约 30% 的 token——所以你不能拿旧模型上量出来的数字去估新模型的账单。

为什么"1 个汉字 ≈ 几个 token"这个问题没有统一答案

"token 等于多少字"这类系数只在同一家厂商的同一代模型内部近似成立。三家的官方口径互相都不一样:

来源(官方口径)换算比例别当什么用
DeepSeek 官方 "Token & Token Usage" 页1 个英文字符 ≈ 0.3 token;1 个汉字 ≈ 0.6 token别拿它去估别家的账单——它标的是"约",而且官方明确说以 API 返回的用量为准
Anthropic 定价页脚注Claude 4.7 及之后模型的同一段文字,token 数比旧模型多约 30%别在换模型后沿用旧模型的估算,要重新数一遍
Anthropic token 计数页建议直接在目标模型上数,而不是把旧模型的计数换算过去别把"字数 × 系数"当预算依据,那只够建立量级感
旧教程常见的经验值("汉字 1~2 token")来源不明、随分词器变化它曾经大致对过,现在既不是官方口径也不跨模型成立,别再用它做决策
💡 你真正需要的精度

算预算时你只需要量级:一段 3000 行的代码文件是"几万 token",一份 10 万行日志是"几十万 token",两者差一个数量级,这个判断永远不会错。要精确数,就用各平台自带的计数命令或计数接口,别硬算。

上下文窗口:一次能"记得"多少,也决定上限

上下文窗口(context window)是单次请求里能装下的 token 总量上限——它装的是"这次要一起送进去的全部内容",包括系统提示、项目说明文件、历史对话、工具说明和你这句新指令。它不是"记忆容量",更不是"该塞满的地方":装得越满,每一轮都越贵。

当前官方口径(来自上下文窗口文档):

模型上下文窗口这对你的账单意味着什么
Claude Opus 5 / Opus 4.8 / Opus 4.7 / Opus 4.6、Sonnet 5、Sonnet 4.6、Fable 5(及 5.1)、Mythos 5(及 5.1)1M token(100 万),且是默认值、按标准价计费,不需要额外申请一次能装下整个仓库——也意味着一次能把整个仓库的钱花掉。窗口是天花板,不是目标
其余模型,例如 Claude Sonnet 4.5、Haiku 4.5200k token(20 万)更容易触发压缩;而压缩本身是一笔大请求

另外记住单次输出的上限:1M 窗口那批模型单次最多生成 128k token。它会约束你"让它一口气写完整本书"这类要求的可行性,也提醒你输出按 5 倍价计费。

一次请求的账单公式:三种价,不是一个价

当你按量付费(走 API 或云厂商)时,一笔请求的费用不是一个单价乘一个数量,而是四笔账相加:

费用 ≈ 新读入的 token × 输入单价
     + 从缓存读到的 token × 缓存读取单价(通常是输入单价的 0.1 倍)
     + 写进缓存的 token × 缓存写入单价(约输入单价的 1.25 或 2 倍,一次性)
     + 本轮新生成的 token × 输出单价(通常是输入单价的 5 倍)

这四行的相对倍数(0.1 倍、1.25 倍、5 倍)不是某一家厂商的独家规则:Anthropic 与 OpenAI 两家官方的定价页给的都是同一组倍数,差的是各家模型的绝对单价。这个事实直接决定了你的优化顺序——"少写"比"少读"值钱,而"让重复的部分命中缓存"比两者都值钱。

02为什么"就改一个标点"也能贵

先给一个公允的结论:不是工具在偷你的钱,是"AI 编程"这种任务形态天生就耗 token。普通聊天和编程助手的花钱方式不是程度差别,是形状差别——下面这张流程对比就是全部的根源。

普通聊天
你问 → 它答 → 结束
vs
编程助手
读文件 → 改代码 → 跑测试 → 看报错 → 再改
→
每一步
都是一笔新请求,且背着前面全部历史

原因一:每一轮都要重发整段上下文(占大头)

官方成本文档的原话是:Claude Code(一款在终端里跑的 AI 编程助手,本文以它为例给具体命令)"每次请求都会发送你的完整对话"(sends your full conversation with every request),并且每次它调用工具,都会再发一笔请求、把那批工具结果一起带上。放到第 50 步,这一条请求里就装着前 49 步的所有文件内容与命令输出——哪怕你这次只问了一个标点。

这里最容易产生的误解是"我没写多少字,怎么会贵"。因为你写的字根本不是主菜:你这次的指令往往是一笔请求里最小的一块。

原因二:工具结果是最肥的一块

让 AI 读一个 3000 行的文件、跑一次全量测试、贴一段 10 万行的日志——这些工具结果会原样进入上下文,一次就是几万到几十万 token,而且更糟的是它会一直躺在那里,在此后每一轮被重新发送一遍。这就是"读一次大文件"的代价远大于"读一次"的原因。

原因三:输出比输入贵约 5 倍

各档模型的输出单价约为输入单价的 5 倍(11 有当前单价表)。所以让 AI"多写"——大段解释、把整份文件重贴一遍、长篇试错——比让它"多读"更烧钱。这也解释了一个反直觉现象:让它"用大白话把这段代码再讲一遍"是很贵的要求,因为那整段都是输出。

原因四:思考也在花钱

新一代模型默认"先思考再动手",而官方明确:思考产生的 token 按输出价计费(因为性质上就是模型生成的内容),默认的思考预算可能达到每次请求数万 token。这不是玄学,是可以调的档位(11)。

6 万+一次小请求背后背着的历史 token 量级
$13 / 活跃日官方企业均值,月均 $150–250/人
90%的用户每个活跃日低于 $30
≤$0.04每个会话的后台开销(官方口径)

官方还给了一组让人清醒的企业数据:平均成本约为每位开发者每个活跃日 13 美元、每月 150–250 美元,而 90% 的用户每个活跃日低于 30 美元。这个数字的意义不是"你也该花这么多",而是给你一个量级参照:如果你一天花掉的是这个数的十倍,那不是"AI 太贵",是某几个习惯出了问题。

⚠️ 一个必须纠正的心态

"烧得快"不等于"有 bug 或乱收费"。先用 05 的命令把账看明白,再决定怎么省。多数人记账之后才发现:最大的开销是"开着不关的超长会话"和"反复让 AI 读大文件",而不是单次请求本身。

03一次请求的钱花在哪:输入、输出、缓存三种价

把"一笔请求"拆开看。你以为你给 AI 的输入只有最后那句话,实际发送过去的是下面五块拼起来的一大坨——理解这个拼法,后面所有省钱技巧才有落点。

① 工具定义
它能调用的函数清单(含外接工具服务器)
→
② 系统提示
工具人设与规则(基本恒定)
→
③ 项目记忆
CLAUDE.md 这类项目说明
→
④ 历史对话
之前的每一轮(越长越贵)
→
⑤ 你这次的话
唯一"新"的部分,往往最小

为什么这个顺序很重要

因为这五块是按顺序拼成一条前缀的,而缓存判断的正是"前缀是不是和上次逐字节相同"。顺序决定了失效范围:改了工具定义,后面的系统提示、项目记忆、历史对话全部重算;只改了历史里的一句话,就只影响那之后的部分(10 有完整表)。

三种价,各自对应哪一块

计费项对应上面哪一块什么时候它最要命
输入 token(全价)这次新读进去、又没命中缓存的部分基准价。最要命的时候是"新塞进一个大文件"——它不但这轮全价,还会留在上下文里被每轮重发
输出 token模型本轮新写出来的字(含思考 token)约为输入价的 5 倍。所以"让它整份重贴文件""让它长篇解释"都在按最贵的档收费
缓存写入 token首次把一段前缀写进缓存的那一次约输入价的 1.25 倍(5 分钟保鲜期)或 2 倍(1 小时保鲜期)。这是一次性投入,只有复用才回本
缓存读取 token命中缓存的那一大段历史 + 系统内容输入价的 0.1 倍,也就是一折。长会话能跑下去,全靠这一行

另外两个"隐性消耗":自动压缩与工具往返

自动压缩(auto-compact):会话逼近上下文窗口上限时,工具会把旧历史总结成一段摘要腾地方。这次总结本身就是一笔很大的请求(等于把整个会话读一遍、再写一遍),而且之后的每一轮都会带着这份摘要继续膨胀。它是救命机制,不是省钱机制。

工具往返放大:AI 每"读一次文件 / 跑一次命令 / 查一次网页",就要发一笔携带全上下文的新请求。一个看起来简单的重构,背后可能是 30–80 次工具调用,每次都是全量输入。

📌 看懂这一节,你就能解释 90% 的账单

为什么"大文件 + 长会话"是烧钱之王?因为文件全文和历史对话每轮都以全价输入被重读(没命中缓存的话)。为什么让它"重新解释一遍代码"很贵?因为那是输出,5 倍价。

04最小例子:读懂一次会话的账单

理论到此为止。这一节只做一件事:把一段真实的用量输出逐行翻译成人话,再手算一遍钱。看懂这一个例子,你就超过大多数只会埋头提问的用户了。

第一步:敲 /usage,看它到底打印了什么

各家的用量命令名字不同(Claude Code 是 /usage,也有工具用 /context 一类命令,插件多在状态栏显示)。下面这段是官方成本文档给出的示例输出,我原样抄下来——它已经把本文所有概念装进去了:

Total cost:            $0.55
Total duration (API):  6m 20s
Total duration (wall): 6h 33m 10s
Total code changes:    0 lines added, 0 lines removed
Usage by model:
    claude-sonnet-4-6:  1.2k input, 5.3k output, 940.0k cache read, 50.0k cache write ($0.55)
Prompt cache (main): 14 requests · 91% of input tokens from cache · warm (1h TTL, last activity 40s ago)

第二步:逐行翻译

这一行翻译成人话你该从它读出什么
Total duration (wall): 6h 33m这个会话从打开到现在挂了 6 个半小时,但真正在调模型的时间只有 6 分 20 秒挂机 ≠ 免费:你要为"它记得的历史"付钱,不是为"你盯着屏幕的时间"付钱
1.2k input这一整场里真正"新读入"的只有约 1200 token你看——新内容小到几乎可以忽略,钱不在这里
5.3k outputAI 一共写了约 5300 token输出是 5 倍价,这 0.55 美元里偏贵的部分就在这
940.0k cache read有 94 万 token 是从缓存读的——那就是系统提示 + 项目记忆 + 历史,被重复读了 14 次如果没有缓存,这 94 万要按全价输入算,账单会贵约 10 倍
50.0k cache write为了建立这份缓存,一次性写了 5 万 token 进去缓存不是免费的:第一次要多付 1.25 倍,复用才回本
91% of input tokens from cache整场会话的输入里有 91% 是命中缓存的这是比"总 token 数"更该盯的健康指标(10)
warm (1h TTL, last activity 40s ago)缓存现在还"热"着,保鲜期是 1 小时,上次活动在 40 秒前离开超过保鲜期再回来,第一条请求就会全价重建——这是"隔夜回来突然变贵"的原因

第三步:手算一遍,一次普通会话大概多少钱

用最简单的方法粗估:一次"改个小功能"的会话,输入总量常在 10 万~40 万 token(其中大部分是重复历史),输出在几千到几万 token。按 Claude Sonnet 5 当前单价(输入 $2/百万、输出 $10/百万、缓存读取 $0.20/百万、5 分钟缓存写入 $2.50/百万)毛估,假设其中 25 万 token 命中缓存:

输入(未命中部分)  5 万 token × $2/百万        ≈ $0.10
输入(命中缓存)   25 万 token × $0.20/百万     ≈ $0.05   ← 缓存把它几乎抹平
输出               2 万 token × $10/百万        ≈ $0.20
缓存写入           5 万 token × $2.50/百万      ≈ $0.13   ← 一次性,只在建缓存那轮交
──────────────────────────────────────────────────────
一次普通会话合计                              ≈ $0.48

这个量级意味着两件事:一个重度按量用户每天跑 20 个会话,月账单很容易到三位数美元(这正是"每人每月 150–250 美元"的来源);反过来,把"每个会话更短、更少反复、缓存命中率更高"做到位,省下来的钱是实打实的。你可以把上面四个数字换成你自己的会话量级,再乘一下——这就是你自己的账单模型。

第四步:现在就做,只看三个数字

打开你正在用的助手,运行它的用量命令,只看三件事:① input 里"新读"和"缓存读"的比例;② output 有多大;③ 会话已经多少 token。看懂这三项,你就已经知道该往哪个杠杆上使劲了。

⚠️ 注意两种"用量"的语义差别

在包月订阅计划里,/usage 里那个美元数字不等于你的账单——订阅是按额度 / 时间窗口计的;官方明确说订阅用户看到的会话费用数字"与计费无关",你该看的是同一屏上的套餐用量条。只有按量付费(API / 云厂商)用户,那个美元数字才等于真实花费。分不清就看 06。

05先记账:在不花钱的地方看钱

省钱的第二步永远是先度量,再优化。凭感觉"省"只会省到不该省的地方(比如为了少几毛钱,让 AI 少读一个必要文件,结果返工三轮)。下面几个动作,任何助手都该有,命令以 Claude Code 为例。

几个地方看用量,各有各的用处

命令 / 界面它回答什么问题什么时候看它
/usage本次会话的 token 用量、按模型的拆分、缓存命中率、缓存是冷是热;订阅用户还看到套餐额度条每个大任务收尾时看一次,养成成本手感。注意:/clear 会把它的统计一并归零
/context当前上下文里"什么在占地方"——哪些文件、哪些工具结果最大觉得会话"很重"却不知道重在哪时,用它找出元凶
/status当前配置、版本、以及各项设置的生效来源排查"为什么没按我预期跑"时
状态栏 / 面板把 token 用量或费用常驻显示在界面一角长期开着。成本看得见,你的手会自动收敛;这是性价比最高的一次设置
📌 关于 /cost 的一个口径变化

很多旧教程(包括本文的上一版)会让你敲 /cost 看会话累计费用。本文校对时翻了三份官方现行文档(成本页、交互模式页、CLI 参考),都没有收录 /cost;费用数字现在统一出现在 /usage 的 Session 块里(就是上一节那个 Total cost 行)。所以:以 /usage 为准;如果你的工具里 /cost 还能用,当作兼容保留即可。

用"行为指标"找病根,而不是只盯总额

账单里有些信号能直接指向病因。Claude Code 的用量面板还会主动标出占你近期用量 10% 以上的行为,并各给一条建议:

你看到的信号它在说什么去改哪一节
缓存命中率低 / 出现未命中(miss)你的会话"经常断片重来",或者你频繁改动了会影响前缀的东西(换了模型、改了项目记忆)10 吃透缓存
长上下文占比高会话太长太杂,历史里混了不相关任务的内容07 会话卫生
输出占比异常高要么它话太多,要么你的提示词逼它整份重写09 提示词、08 输入瘦身
某个技能 / 子代理 / 插件占了大头不是主线会话在烧钱,是挂在旁边的某个东西12 治理

用量算在谁头上:一个容易混淆的点

官方提醒过,这类统计是"本机视角":你在 A 电脑开的会话,在 B 电脑的面板里看不到。另外一些消耗发生在你根本没提问的时候(后台摘要任务、跨会话投递的消息、到点就响的定时任务、以及还没收工的团队助手),官方称这类后台开销通常每个会话低于 0.04 美元,但积少成多。所以看账单别只盯着主线会话那一个数字。

💡 记账的目标不是精确到分

你要的不是会计,是量级感:这个会话大概花了五毛还是五块?今天十个会话里哪个最费?心里有量级感之后再去优化,效果立竿见影——反过来,拿一个不准的数字去追小数点,只会让你把时间花在错误的地方。

06你是哪种付费用户——这决定你该"省什么"

同一个动作(比如"让它重跑一遍测试"),对不同付费方式的人含义完全不同。先把身份对号入座,否则你会用错力气:包月用户在省额度,按量用户才在省真金白银。

三种身份,三种"省"

身份怎么计费省 token 对你的意义
包月订阅(Claude Pro / Max / Team 等)每月固定费用,套餐内含"用量额度",按会话 / 每周滚动窗口计算不是省钱,是省额度:防止"做到一半提示额度用尽",也防止超出后走加购额度继续扣费
按量 API(官方控制台 / 各类中转 / 编辑器插件自带 key)输入 × 单价 + 输出 × 单价,每个 token 都换算成美元最直接的省钱场景,本文大部分技巧主要为你而写
云厂商账单(AWS Bedrock / Google Cloud / 微软 Foundry / 阿里云百炼等)token 计入你的云账户账单,走云平台自己的单价同样按量,但单价与官方可能不同;省钱逻辑完全一致

包月用户最容易踩的误区

❌ 误区:"我包月了,随便烧"

包月套餐对会话时长和每周窗口内的用量是有上限的。一个从早开到晚不关的超长会话,可能一个下午就吃掉你一整周的额度,接下来几天都在"撞墙"和"等恢复"中度过——你的产出损失远大于那点订阅费。

✅ 正解:"包月 = 额度预算,花得更聪明"

把套餐额度当成本月预算:同样一堆活,用更少 token 干完,你就能在额度内做更多事,或者留出余量应对突发的大任务。省 token 对包月用户同样是刚需。

额度用尽之后会发生什么

以 Claude 的 Pro / Max 为例:额度用尽会暂时被限流,等窗口重置后恢复;如果开启了"加购用量"(usage credits,也就是额外买一份按量的量),超出部分会按 token 继续计费——这通常是"这个月怎么突然多扣钱了"的原因。官方还允许订阅用户手动设置月度消费上限,避免彻底失控。

⚠️ 模型档位和订阅身份是两回事

常有人问"我包了 Max,是不是就能随便用最贵的 Opus(最强档模型)了"——能,但 Opus 会更快地消耗你的套餐额度(同一任务消耗的 token 更多、且该档的计费权重更高)。所以"包月 + 更贵的档位"≠"免费",只是把预算从钱包换成了额度。11 教你按任务分配档位。

07杠杆一:会话卫生——最被低估的省钱习惯

回到 03 那张拼图表:你的每一笔请求,都背着从开场到现在的全部历史。所以"一个会话聊得越久、越杂",每一轮的固定成本就越高——哪怕你只是问一句"现在几点了"。会话卫生,就是管理这条越滚越大的历史。

几种"清理动作",花费完全不同

动作它做了什么花费 / 什么时候用
/clear彻底开新会话,历史全丢零成本(最省)。任务做完、或切换到不相关任务时用。官方原话是"切换到无关任务时从头开始,陈旧上下文会在之后每条消息里浪费 token"
/compact把长历史总结成一段摘要,保留大意、释放空间本身是一笔较大的请求(等于把会话读一遍再写一遍)。任务没做完、会话已经很长、且你还需要连续性时才用
自动压缩接近上下文上限时工具替你压缩同上,而且不可控、时机由工具定——最被动,往往也最贵
/rewind把对话和代码回退到之前的检查点发现方向错了立刻回退,比"将错就错再推倒重来"便宜得多

/clear 和 /compact 到底怎么选

❌ 反面教材:一个会话从早开到晚

先写了个登录页,又查了个报错,再聊了会儿部署,最后切去改另一个项目的 bug……历史里混着五个不相关项目的代码,每一轮都全量重发。到第 80 轮时,上下文可能有十几万 token,其中九成跟当前任务无关。

✅ 正面做法:每个不相关任务都开新会话

要回头找旧任务?用 /rename 给会话起个名字再清,之后 /resume 一键续上。结果:每个会话的上下文都又小又聚焦,每轮都便宜,还不会互相污染。

一条判断口诀:下一句要问的事,需要它记得上一个任务吗?不需要,就 /clear。这个两秒的判断,是本文性价比最高的一个动作。

压缩前告诉它"该保什么"

/compact 可以带一句话指令,直接决定摘要里留下什么。别默认让它自己挑:

/compact 请保留:复现步骤、已排除的假设、涉及的文件清单、最近的测试命令与改动

更好的做法是把这条偏好固化到项目里,让整个项目每次压缩都生效。官方给的写法是在项目根目录的记忆文件里加一段:

# Compact instructions
When you are using compact, please focus on test output and code changes

会话卫生的三条进阶配方

08杠杆二:输入瘦身——少让 AI 读大文件

一段长上下文里,被缓存覆盖的部分是"相对便宜"的,而新塞进去的每一块内容都是全价输入,还会一直躺在那里被重发。输入瘦身管的正是"每次新喂进去的东西",这是日常使用中最直接、最频繁能见效的动作。

原则:先定位,再读取,一次只给够用的

❌ 喂太多
# 直接把整个大文件丢给 AI
请读一下 src/App.tsx(共 1800 行)帮我改
# 把整段报错日志原样贴进去(几百 KB)
这是完整日志,帮我找问题

1800 行文件全文 + 数百 KB 日志进入上下文 = 动辄几万 token,而且大半是无关噪音,之后每轮都要重发。

✅ 喂得刚好
# 先让 AI 自己用搜索定位(token 成本极低)
先 grep 找出 App.tsx 里处理提交的地方,
再只看那一小段并分析
# 只贴日志的关键片段
报错信息如下(截取自报错附近),帮我定位根因:

搜索命令的返回比文件全文小几个数量级,AI 看到的是"与任务相关"的一小块。

这里的 grep 是一个在文本里按关键词搜索的命令行工具——你不需要学它,只要知道"让 AI 先搜再读"这句话就够了。

用工具的"外科手术式"能力,别用蛮力

现在的主流助手都内置了精准读取的手段,刻意用它们能省下大量 token:

你想要的信息省 token 的姿势费 token 的姿势(以及为什么它贵)
某个函数定义在哪跳转定义 / 符号搜索(官方建议装对应语言的代码智能插件:一次"跳到定义"能替代"搜索一遍 + 读好几个候选文件")读整个文件甚至扫全目录
某个文件讲了什么只读前若干行或关键片段整份丢进去让它总结——摘要很便宜,但原文会永久留在历史里
日志里有没有 ERROR先挂一个 Hook(在命令执行前后自动改写命令的挂载点)过滤,只喂命中的行10 万行日志全文入库
测试过没过只看失败项(下面的过滤器 Hook 就是干这个的)全量测试输出全部进入上下文
一个陌生项目的结构让一个子代理去翻,只回收结论(12)让主会话把几十个文件逐个读进上下文

对付日志和测试输出的"过滤器 Hook"

如果你用 Claude Code,官方给了一个现成的例子:装一个极小的前置 Hook(Hook 就是"在某个动作发生前后自动执行你指定命令"的挂载点),每当 AI 要跑测试,就自动把命令改写成"只输出失败行"。核心思路一句话:别让 AI 看它不需要看的原始输出。官方称这能把上下文从几万 token 压到几百 token。

第一步,把下面这个文件存成 ~/.claude/hooks/filter-test-output.sh:

#!/bin/bash
input=$(cat)
cmd=$(echo "$input" | jq -r '.tool_input.command')
# 只让测试类命令保留失败行
if [[ "$cmd" =~ ^(npm test|pytest|go test) ]]; then
  filtered="$cmd 2>&1 | grep -A 5 -E '(FAIL|ERROR|error:)' | head -100"
  echo "$input" | jq --arg f "$filtered" \
    '{hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:(.tool_input + {command:$f})}}'
else
  echo "{}"
fi

第二步,在设置文件里把它挂到"每次执行命令之前"(PreToolUse 就是这个时机的名字,jq 是处理 JSON(一种通用的数据交换格式)的命令行工具,脚本里用它读改写命令):

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          { "type": "command", "command": "~/.claude/hooks/filter-test-output.sh" }
        ]
      }
    ]
  }
}

第三步,准备目录并给它执行权限:

mkdir -p ~/.claude/hooks
chmod +x ~/.claude/hooks/filter-test-output.sh
# 排查用:Hook 改写命令后,日志里会出现 modified tool input
claude --debug-file ./claude-debug.txt

同类逻辑通用于一切"大块输入":无论是大文件、长日志、网页正文、接口返回的数据还是项目说明书(README),规则都一条——进上下文之前先瘦身。宁可多花一次廉价的搜索命令,也别多塞一次昂贵的全量内容。

顺便让输出也"小口"一点

输入瘦身管的是"喂进去的",但输出是 5 倍价,所以顺手也要约束"吐出来的":明确要求它只给 diff(只显示改了哪几行,而不是重贴整份文件)或摘要、关键行。让 AI"少写废话"和"少读废话"同样重要。

⚠️ 别矫枉过正

瘦身 ≠ 什么都不给。信息太少,AI 只能靠猜;猜错再纠错,往返成本反而更高。原则是:给"够完成任务的最小子集",而不是"最少量的字"。

09杠杆三:提示词省钱法——让任务一次到位

省 token 不只靠"压缩输入",还靠减少往返轮数。AI 每次猜错方向、每次做完又返工,都会触发一整串带全上下文的新请求。把需求讲到位,是最被低估的"免费省钱"。官方成本文档把这条直接点了名:模糊的请求(比如"改进这个代码库")会触发大范围扫描;具体的请求能让它以最少的文件读取完成工作。

从"模糊差事"到"精确任务"

❌ 模糊:触发"广撒网"扫描

帮我优化一下这个项目

AI 无从下手,只能扫全仓库:读目录结构、读大量文件、猜哪里要优化,然后给你一版可能完全不是你要的改动。一轮下来 token 花掉不少,方向还未必对。

✅ 精确:锁定范围 + 给出验收标准
在 auth.ts 的 login 函数里加输入校验:
用户名 3-20 位、密码至少 8 位且含数字。
输入为空时返回 400。加完跑一下相关单测,只把失败项给我。

AI 知道改哪个文件、改什么、怎么验证,通常几次工具调用就完成,几乎不空转。

四条"一次到位"的纪律

1
给验收标准,别让它自己猜"好"

带上测试用例、预期输出、边界条件。当 AI 能自我验证时,它会先自查再交付,而不是交一版等你去挑错再返工。

2
复杂任务先计划、后施工

让它先只读关键文件、输出一份改动方案给你确认(Claude Code 里按 Shift+Tab 切到计划模式)。方向错了在"看方案"这一步就被拦下,避免在错误实现上烧十几轮。

3
小步提交、增量验证

让它"每改一个文件就跑一次相关测试",而不是一口气改十个文件再一次性跑全量。问题早暴露 = 少走回头路 = 少烧 token。

4
跑偏就立刻喊停

发现方向不对,立即按 Escape 打断、或用回退回到上一个检查点,然后重讲需求。放任它把错的方向做完再推倒重来,是最贵的一种浪费。

什么时候该"计划先行",什么时候不用

情形要不要先出计划为什么
会改很多文件、影响面大、或面对陌生代码库要。值得花一轮先换一份方案方案错了只损失"读文件 + 写方案"这一轮的 token;不先计划则要损失一整轮错误的实现
一目了然的小改动(改个文案、加个判断)不要"计划"本身也是一次往返;对两行改动来说,多一轮纯属浪费
你自己都说不清要什么要,但先让它提问让它反过来追着你问清楚,比它猜一版你再改便宜得多
💡 一条被反复验证的经验

花 2 分钟把提示词写清楚,通常比让 AI 多跑 20 分钟还便宜。写提示词的时间不花 token,AI 空转的每一轮都花。

10杠杆四:吃透缓存——把重复内容打到一折

前面反复提到缓存,现在一次性讲透。它是你唯一能拿到的"数量级折扣",也是账单里最容易出现十几倍差异的一行。

缓存是什么:逐字节相同的前缀,打一折

大模型接口对逐字节完全相同的前缀提供"缓存命中"优惠:只要这次请求的前缀(按 03 那个顺序:工具定义 → 系统提示 → 项目记忆 → 历史对话)和之前某一次一模一样,这一大段就按输入价的 0.1 倍结算,而不是全价重算。

把话说准:0.1 倍是一折(省 90%),不是"九折"。0.1 倍和九折差了 80 个百分点,旧教程经常写错这一句。同一组倍数在 OpenAI 的定价与缓存文档里也是"读取 0.1 倍 / 写入 1.25 倍",所以这不是某一家厂商的独家规则。

写入缓存则要加价——这是一次性投入。几个关键数字:

这一笔倍数(相对输入价)你该知道的
5 分钟保鲜期的缓存写入1.25 倍默认档。写一次、只读一次就已经比"完全不用缓存"便宜(见下面的算式)
1 小时保鲜期的缓存写入2 倍适合"每 5 分钟以上才用一次"的稳定前缀,例如系统提示;用它的代价是写入更贵
缓存读取(命中)0.1 倍长会话能跑下去全靠这一行。极少数新档模型(Fable 5.1 / Mythos 5.1)的命中价低到 0.025 倍
最短可缓存长度512 / 1024 / 2048 / 4096 token视模型而定:太短的前缀根本不进缓存。这是"我明明没改东西,为什么没命中"的最常见答案之一
最多几个断点4 个自动缓存会占用其中一个名额;想给"增长很长的会话"多留一层,就得显式打点(API 用户,见下)

为什么它值得算一遍:两个现成的算式

缓存不是"有折扣就赚"——写入本身要加价,所以要看复用次数。OpenAI 的缓存文档直接把平衡点算给你了:

写一次 + 完整复用一次:1.25(写) + 0.1(读) = 1.35 倍
不用缓存、处理两次:                           = 2.00 倍
复用到十次:1.25(写) + 9 × 0.1(读) = 2.15 倍
不用缓存、处理十次:                   = 10.0 倍

结论很清楚:一个前缀只要会被复用两次以上,缓存就是纯赚;复用越多越赚。这也顺带解释了为什么"稳定但冗长的系统提示与项目记忆"值得进缓存,而"每轮都在变的时间戳"永远不该放进可缓存前缀。

三段层级:改哪儿,失效到哪儿

缓存按层级组织:工具定义 → 系统提示 → 消息(历史)。改动某一层,会连带让这一层之后的所有层级失效:

你改了什么工具定义缓存系统提示缓存历史缓存实际后果
增删一个外接工具 / 改了工具说明失效失效失效整段前缀重建,下一批请求全部全价写一遍
改了系统提示 / 项目记忆文件 / 加载的技能保留失效失效工具那层还能省,但记忆与历史全价重来
继续追加一轮对话(没动前面任何内容)保留保留前面部分保留最理想情况:只有新加的那一小段是新的
会话中途换了模型或思考强度按"模型 + 思考配置"分别保存,等于从零重建切换后第一批请求全是全价。要换就在会话开头一次定好

四件事会"弄丢"缓存,让你按全价重付

⚠️ 缓存失效为什么可怕

长会话的上下文可能已经有几十万 token。一次失效 = 这几十万 token 全价重新计算。所以"缓存命中率"是比"总 token 数"更该盯的指标——前者是比率,后者只是规模。

API 用户:断点怎么打

如果你直接调接口,缓存有两种开法:自动缓存(在请求顶层放一个标记,系统自动缓存到最后一个可缓存块)和显式断点(你亲手标在哪里切)。断点要打在稳定内容的末尾,打在每轮都变的那一块上等于每轮都重新写、永远不命中。官方给的自动缓存写法:

{
  "model": "claude-sonnet-5",
  "max_tokens": 1024,
  "cache_control": { "type": "ephemeral" },
  "system": "你是一个长期稳定的项目助手……(前面这段越长越稳定,越值得缓存)",
  "messages": [{ "role": "user", "content": "这次的问题……" }]
}
// 想把保鲜期从默认 5 分钟拉到 1 小时(写入价变 2 倍):
"cache_control": { "type": "ephemeral", "ttl": "1h" }

还有一个容易被忽略的机制:系统会从断点往回找最多 20 个块的范围内、之前请求已经写过的缓存条目。所以如果会话长到把断点推得离上一次写入太远,就会找不到——这也是官方建议给"增长很长的会话"多留一个断点的原因。

把缓存用成省钱的四招

  1. 连续作战,别频繁中断。缓存命中会续期,趁热打铁,同一会话内连续做完,比断断续续强得多。
  2. 系统级内容保持稳定且精简。项目记忆、加载的技能文件是每次请求都在缓存前缀里的最重内容——让它短、让它少改(12 给方法)。
  3. 会话中途别换模型、别改思考强度。要换就在会话开头定好,一档到底。
  4. 别在可缓存前缀里放"每轮都变"的内容。时间戳、随机 ID、当前目录这些都放断点之后。
📌 "缓存让你变慢?"——不,它让你更便宜也更连贯

别把缓存理解成一个"优化开关"。对 AI 编程而言,缓存就是把"反复重读历史"的成本从十成降到一成,是长会话唯一经济可行的方案。理解它,你的会话设计和项目配置会自然跟着变好。

11按任务分级:选模型档位与思考强度

同一个任务,用贵的档位和用便宜的档位,单价能差几十倍;同一档位里"思考深度"不同,token 花费也能差出几倍。这一节教你做任务分级——把最贵的算力留给真正需要它的那一步。

当前各档单价(Anthropic 首方价,2026-09-13 校对)

档位输入 / 输出(每百万 token)缓存:5m 写入 / 1h 写入 / 命中读取适合什么
Claude Opus 5(最强)$5 / $25$6.25 / $10 / $0.50复杂架构决策、跨多文件的高难度推理、疑难 bug 定位
Claude Sonnet 5(平衡)$2 / $10$2.50 / $4 / $0.20绝大多数编码任务:日常增删改、写测试、重构
Claude Haiku 4.5(轻量)$1 / $5$1.25 / $2 / $0.10简单子任务:批量小改动、格式化、派给子代理跑单一操作
Claude Fable 5 / Mythos 5(更高一档,部分限量供应)$10 / $50$12.50 / $20 / $1最难的那一步。注意 Fable 5.1 / Mythos 5.1 的缓存命中价是 0.025 倍,比别的档更低

官方给的三条铁律很直接:① 大多数编码任务用 Sonnet,成本低于 Opus;② Opus 只留给复杂架构决策或多步推理;③ 简单的子代理任务用 Haiku。别让"最强档位"成为默认档位。

另外记住一条会改掉你估算的事实:官方定价页注明 Sonnet 5 发布时的 $2/$10 促销价现已转为标准价,原定调涨到 $3/$15 的安排不会发生。价格类数字以官方定价页为准,本文只保证校对日期当天的口径。

怎么切:会话内、默认档,以及给子代理单独指定

Claude Code 里 /model 可随时切换,/config 设置默认档位。而"跑腿的"可以单独配便宜档位——给子代理写一份配置文件,指定它用 Haiku:

# .claude/agents/log-scout.md
---
name: log-scout
description: 翻日志、跑测试、抓文档,只把结论带回来
model: haiku
---
你只做一件事:找到我描述的信号,然后返回不超过 200 字的结论 + 涉及文件清单。
不要把原始输出贴回来。

结合 10 要记住:换档位会让该模型的缓存失效。所以"先 Opus 调研、再切 Sonnet 施工"要付出一次全价重建——是否值得,取决于切换前后任务的差异是否足够大。

思考强度是把双刃剑

新一代模型默认会"先思考再动手",而思考产生的 token 按输出价计费(输出是输入 5 倍)。对复杂任务这钱花得值;但对简单机械活,思考深度可以降下来:

动作效果建议
降档推理强度(/effort,或在 /model 里选)思考 token 明显变少,简单任务仍能高质量完成简单 / 机械性任务时用低档;默认档通常已够用
拉高推理强度思考更深、结果更稳,但 token 显著变多只在真正的硬骨头(复杂重构、疑难 bug)上临时拉高
给"思考额度"设上限:MAX_THINKING_TOKENS=8000给采用固定思考预算的模型设顶需要精确实控时用;采用自适应推理的模型会忽略非零预算,那类模型请改用 effort 档位
在 /config 里关闭思考不再产生思考 token只对简单任务划算。注意 Fable 系列无法关闭思考(官方说明:它们始终使用扩展思考)
⚠️ 三句提醒

① 别为了省而全局关思考——那会明显掉质量,返工更贵;② 换思考档位同样会失效缓存(和换模型同理),进会话就先定好;③ 纯机械子任务(给几百行做同一种改写)确实是"Haiku + 低档思考"的典型场景。

12治理:别让主线之外的"帮手"偷烧 token

除了主线会话,还有几类"隐形的烧钱口子":外接工具服务器、子代理、团队助手、定时任务。它们单个看着不大,积少成多、又难以察觉。

外接工具服务器(MCP):能少则少

MCP 是一套让 AI 外接工具的协议——挂上一个服务器,AI 就多出一批可以调用的能力(查数据库、读工单、发消息)。代价是这些工具的说明可能进入你的上下文。

子代理:让"大嗓门"在隔音间里干活

子代理(subagent)是一个被派出去独立干活的小 AI:它有自己独立的上下文,干完只把一段摘要交回主会话。跑测试、抓文档、翻日志这类"输出又长又吵"的活,正好交给它——海量输出留在它自己的上下文里,主会话只收到一行结论。

❌ 主会话亲自动手

让主会话跑一次全量测试 + 读完整日志,几万行输出直接灌进主上下文,之后每一轮都要背着它们重发。

✅ 派子代理去"吵"

主会话派一个子代理执行"跑测试并总结失败项",回来只有一句"3 个失败,都在 auth_test"——干净又便宜。记得给它配 Haiku 档位(11 有配置文件写法)。

团队助手:人多,烧得也多

如果你的工具支持"多个 AI 同时协作",官方给的成本事实要记住:

后台与"挂机"也会走 token

有些消耗发生在你根本没提问的时候,官方成本文档列了几种:到点就响的定时 / 循环任务(每次触发都带着你的完整上下文跑一轮);跨会话消息(另一个会话发来的消息会在本会话空闲时作为新一轮触发,同样带上全量上下文,可以把入站消息设为挂起而不是直接送达);目标的空闲检查(后台任务等待期间,工具会主动去问一下进度,官方限制每个目标在你两次提问之间最多 3 次,也可设为 0 关闭);以及为支持"下次续聊"而做的后台摘要(官方称通常单会话低于 0.04 美元)。

系统级默认负载:把长流程从项目记忆里挪走

每次请求里,系统提示 + 项目记忆都在可缓存前缀里、也最常被自动重发。如果项目把一堆 README、历史备注、工作流全塞进记忆文件,等于给每一次请求都穿上一件沉重的棉袄。官方的建议很直接:项目记忆保持在 200 行以内,只放核心规则;把专项长指令移到按需加载的技能文件里(技能只有被用到时才进上下文)。

❌ 记忆文件"臃肿且易变"
# CLAUDE.md(越长越肥,经常追加)
- 项目说明(整段 README 复制)
- 数据库迁移注意事项 v2(已过期)
- 上个月临时加的构建 workaround
- 最近 20 条会议备注
- ……每次改动,缓存前缀就变一次

肥大 → 每轮都背着重壳;频繁改 → 缓存天天失效、天天全价重建。

✅ 记忆文件"精简稳定"
# CLAUDE.md(200 行内,只放核心)
- 常用命令:dev / test / lint
- 关键约束:不用 XXX 库、目录规范
- 测试入口与常见失败排查
(详细流程指令移进按需加载的技能文件,
 用到才进上下文,不用不占)

精简 → 每轮负担小;稳定 → 缓存前缀长期命中,一折价反复享受。

三种内容的去处,可以这样分:① 全局铁律(常用命令、硬约束)→ 留在记忆文件;② 某个任务的长流程(代码评审检查、数据库迁移指南)→ 挪进按需加载的技能文件;③ 临时备注 / 过期信息 → 直接删。一句话原则:记忆文件是"每次都在场"的,技能是"按需入场"的——把后者塞进前者,就是无谓的常驻开销。

每周一次的治理检查

检查项动作为什么它值这次检查
项目记忆 / 技能文件压到 200 行内,删临时备注,长流程挪进技能它越精简稳定,可缓存前缀就越健康(10)
外接工具服务器清单关掉没在用的;能用命令行的优先命令行每个挂载都在悄悄占上下文
后台循环 / 定时任务不用的停掉它到点就带着你的全量上下文跑一轮
团队助手 / 子代理确认都收工了,没有漏网的每个活着的成员都在持续计费
默认模型档确认默认不是最贵的那一档默认档决定你九成请求的单价
预算上限确认设了消费上限 / 加购上限宁可被工具拦一下,也别让一次失误烧掉一整周预算

13场景实战:三个剧本

把前面所有杠杆拧在一起,看三个最常见的实战场景分别该怎么打。命令以 Claude Code 为例,逻辑通用于其它助手。

剧本 A:一天里的"很多个小改动"

典型画像:早上调了个样式,下午加了个接口,晚上修了个小 bug。三个活毫无关联。

1
每个不相关的活,都开独立会话

别共用一个马拉松会话。三个小任务 = 三个小而聚焦的会话,每个上下文都只有几万 token。用 /rename 给每个会话起名,方便之后 /resume。

2
改动前先讲清文件和验收标准

"改 components/Navbar.tsx 里的 logo 样式,深浅色都要看清,改完自己核一遍"——一次到位,AI 少空转。

3
收尾用 Sonnet 档即可

这类活不需要 Opus。干完看一眼 /usage,形成手感。

预期收益:相比"一个会话开一天",每日 token 常能省下一大半,因为再也没有"背着几十万历史问一句小问题"的场面。

剧本 B:接手一个陌生大仓库

典型画像:第一次打开别人的项目,要做一处功能改动,根本不知道代码在哪。

1
先别把整个仓库"喂"给 AI

让 AI 用搜索 / 跳转去定位,找到目标函数与相关文件后,只让改动相关的文件进入工作区。

2
调研期交给子代理(配 Haiku 档)

"读懂 orders 模块的支付流程,给我一份两百字的要点和涉及文件清单"——子代理去翻一堆文件,只把结论带回来,主会话保持轻量。

3
真正动手前先出方案,你确认

计划模式先给"改哪几个文件、怎么改、风险点"。方案对,再放行;方案错,到此为止,不浪费施工轮次。

4
只有"读大量陌生文件"这一关值得用 Opus

把它用在最难的那一步,其余交给 Sonnet。

预期收益:把"广撒网探索"的成本压到最低,主会话上下文始终小巧。这一步常常决定"接手大仓库的首次会话"是几美元还是几十美分。

剧本 C:一场持久战式调试

典型画像:一个诡异 bug 查了两小时,会话已经很长,眼看就要触发自动压缩。

1
先稳住缓存与上下文

若还在连续作战,缓存多半是热的(看 /usage 的命中率那一行)。保持连续,别中途离开太久让缓存过期。

2
触发自动压缩前,主动 /compact 并指路

/compact 保留:复现步骤、已排除的假设、相关文件与最近改动——让它把"结论"留着,把"碎碎念"丢掉。

3
如果还要更久:换个"从摘要续"的新会话

与其让摘要继续在巨型会话里滚,不如直接开新会话并续上摘要,重打一把更干净、更便宜。

预期收益:长调试不断片、不失控;每次"续命"花的都是压缩 / 摘要的钱,而不是背全量历史的钱。

⚠️ 别忘了"失控保护"

如果你是按量付费、又常做长任务,记得设预算上限。Claude Code 的 CLI 支持 --max-budget-usd,但要留意官方的限定:它只在打印 / 非交互模式(-p)下生效,子代理的花费也计入这个上限,到达上限后再派子代理会直接失败(该行为需要 v2.1.217 及以后版本)。云控制台与订阅侧也各有消费上限可设。

claude -p --max-budget-usd 5.00 "把这批测试失败项归类,只输出结论"

14省 token 一页纸:能贴在桌上的动作清单

把全文浓缩成四组动作。免费的习惯类永远优先于设置类——多数人的问题在习惯,不在配置。

每天开工前

每个任务进行中

每个任务收尾

每周一次

如果时间只够做三件事

优先级动作为什么是它
①不相关的任务开新会话零成本、立刻见效,砍掉的是"每轮重发无关历史"这笔最大开销
②别让它读大文件;给足验收标准同时压住"全价输入"和"返工往返"两个口子
③会话中途不换模型 / 不改思考档一次切换就能让整段缓存在下一批请求里全价重建

这三条已经覆盖了大多数人八成的浪费,剩下两成再回到本文对应的节里逐项处理。

15常见坑:那些"悄悄烧钱"的行为

下面这些行为单独看都"只是小事",叠加起来就是账单上最肥的水分。挨个排查,命中几个就改几个。

八个悄悄烧钱的行为

行为它在悄悄花你什么钱怎么改
开着不关的马拉松会话每条新请求都背着全部历史;隔太久回来,第一条还缓存失效、全价重算。头号烧钱主07:不相关就 /clear,用 /rename 保住"以后还能找回来"
把大文件 / 长日志整份丢给它一次读入就几万 token,而且会一直躺在上下文里被反复重发08:先定位、只喂片段、用过滤器 Hook
项目记忆越塞越肥它是每次请求都在缓存前缀里的最重内容;肥大 + 频繁改 = 天天全价重建12:压到 200 行内,长流程挪进技能文件
会话中途反复换模型 / 换档位切一次 = 缓存按新模型重建一次 = 下一批请求全价10:想用最贵的档位,就在会话开头定好
模糊需求放任它"自由探索"只能广撒网重读一堆文件再猜,返工概率极高09:给文件、范围、验收标准
让主会话干"又吵又长"的活全量测试、抓文档、翻日志在主会话里跑,输出把上下文灌爆12:派子代理去跑,只回收摘要
反复贴"巨长原文"让它重读同一段长内容每轮都整段重发,输入量直接多一个数量级自己先截取关键几行再给;需要长期复用的部分做成技能文件,而不是每轮粘贴
装一堆"号称省 90%"的第三方神器多数未经官方审计;有的要你把对话流量(含代码与可能的密钥)转发给第三方16:先把免费习惯做到位,真有刚需再用可信、可审计的开源方案

最容易翻车的三个瞬间

红黑榜速记

🚫 少做(费 token)✅ 多做(省 token)差在哪
一个会话干所有事无关任务 /clear 重开差在"每轮要不要重发那批无关历史"
整文件、整日志入上下文搜索 / 片段 / Hook 过滤差在输入是"全价新读"还是"几行命中"
让它输出整份文件只要 diff / 摘要差在 5 倍价的输出量
中途切模型、切档位开场定好,一档到底差在缓存是"续上"还是"重建"
模糊指令靠它自己猜给文件 + 范围 + 验收差在往返轮数
最贵档位当默认日常 Sonnet,硬仗才 Opus差在单价基数

16什么时候不该省:四条边界

省钱这件事有明确的失效边界。越界之后的"省"不是省钱,是把成本转移到更贵的地方(返工、事故、返修时间)。这一节把四条线划出来。

边界一:省到 AI 开始猜,就是亏

最典型的越界是把输入砍太狠:不给上下文、不说清验收标准、不让它读必要的文件。结果是它靠猜、猜错再纠错,往返轮数翻倍——返工的成本通常远高于你省下的那点输入。判断法:你省掉的这块信息,是不是它完成任务所必需的?是,就别省。

边界二:别为了省钱全局关掉思考

思考 token 按输出价计费,看起来很像"直接砍掉最划算的一刀"。但官方明确说扩展思考默认开启,是因为它显著提升复杂规划与推理任务的表现。全局关掉的质量损失会以返工的形式回来,而且更贵。正确做法是分级(11):机械活用低档,硬骨头临时拉高。

边界三:别把缓存优化做成"魔法"

为了把前缀拼得更"可缓存",把项目记忆拆得七零八落、把工具定义改来改去,读者(包括未来的你)会看不懂这套配置在干什么——维护成本会超过省下的钱。缓存优化的目标是"别去破坏它",不是"围绕它重构整个项目"。

边界四:有些钱本来就不该省

涉及安全、合规、正确性核验的环节,以及你无法验证输出的高风险任务,本来就应该多花 token 去交叉检查、多派一个代理复核、把关键结论拿官方源核对一遍。这些地方省下来的钱,赔率极差。

一张对照表:该省 vs 不该省

动作该省还是不该省理由
不相关任务开新会话该省丢掉的是与当前任务无关的历史,零质量损失
用搜索定位代替整文件读取该省AI 看到的是更相关的信息,通常质量还更高
把长流程挪进按需加载的技能文件该省它们仍然在,只是不进每一次请求
不给上下文(不给文件、不说验收标准)不该省会引发返工,往返成本高于省下的输入
全局关闭思考不该省复杂任务质量下降,返工更贵
为可缓存而反复重排项目配置不该省(指别过度)维护成本超过收益,而且会让配置难以理解
关键结论的交叉核验、多代理复核不该省这是买保险,出事的成本远高于 token

17术语对照表

下面这些词在文中都出现过并且都解释过。这张表是给"读第二遍时回头查"用的,第三列写的是它为什么重要、什么时候用、以及别把它当成什么。

术语定义(人话版)为什么重要 / 何时用 · 别当什么用
token(令牌)模型读文本前先切出来的小块;一个 token 可能是一个词、半个词、一个标点或一个汉字一切成本的计量单位,算账先换算成它。别把它当"字数":不同模型切法不同,同一段文字切出来的块数不一样
分词器 / tokenizer决定"怎么切 token"的那套规则换模型换代际,同一段文字的 token 数会变(官方称 4.7 之后多约 30%)。做估算前先确认是哪一代的分词器
上下文窗口 / context window单次请求能一起送进去的 token 总量上限(系统提示 + 项目记忆 + 历史 + 工具说明 + 你的新指令)决定一次能"记得"多少,装满了会触发压缩。别把它当"该塞满的地方"——塞得越满,每轮越贵
输入 token / 输出 token模型这次"读入"的内容 / 这次"新写出来"的内容(含思考 token)输出单价约为输入的 5 倍,所以"让它少写废话"和"让它少读废话"同等重要。量化时两者分开看
提示缓存 / prompt caching对逐字节完全相同的前缀按输入价的 0.1 倍结算的机制长会话"不破产"的救星,命中率该当核心健康指标盯。别把它当"开不开的开关",它是"别去破坏的前缀"
缓存命中 / 缓存写入命中=这次读到了之前写好的前缀(0.1 倍价);写入=第一次把前缀存进缓存(1.25 或 2 倍价,一次性)两笔账要分开算:写入先花、命中后省,复用两次以上才回本
缓存 TTL(保鲜期)缓存的有效期:订阅通常 1 小时、动用加购额度后降到 5 分钟、API key 与云厂商默认 5 分钟决定你离开多久回来要付全价;连续作战更省钱。别当不用管的细节——它解释了很多"隔夜回来突然变贵"
缓存断点 / cache_control你显式标在"稳定内容末尾"的缓存标记;一个请求最多 4 个只对直接调接口的人有用。打在每轮都变的内容上等于每轮重写、永不命中
压缩 / compaction把长历史总结成一段摘要以释放上下文空间长任务续命的手段,但它本身是一笔大请求。别当免费的清理:能 /clear 就别只靠压缩
/clear / 新会话清空历史、从零开始零成本的会话卫生,切换无关任务时的首选。别怕"浪费已聊的内容"——不相关的内容本就是负担
思考 token / extended thinking模型"先想再答"时产生的内部推理内容,按输出价计费复杂任务上这钱花得值;简单任务可以降档或关闭(Fable 系列无法关闭)。别为省钱全局关掉,质量崩了更贵
推理强度 / effort控制模型思考深度的档位最灵活的"质量-成本"旋钮:简单任务调低、硬仗临时拉高。换它同样会失效缓存,进会话先定好
子代理 / subagent派出去独立干活、只把摘要带回主会话的小 AI,有自己独立的上下文把"吵 / 长"的操作隔离在它的上下文里,保护主会话轻盈;记得给它配便宜档位
MCP 服务器给 AI 外接工具能力的一套协议 / 服务只保留真在用的;能用命令行(gh / aws / gcloud)就优先命令行。别当成"工具越多越强"——每个挂载都在占上下文
Hook(钩子)挂在某个动作前后自动执行你指定命令的挂载点(例如"每次跑命令之前")在数据进入 AI 的上下文之前先过滤,10 万行日志能压成几行失败摘要。它本身不花 token
diff(改动片段)只显示"改了哪几行",而不是重贴整份文件要求 AI 只给 diff 是压输出成本最直接的一招(输出是 5 倍价)
额度 / usage credits订阅套餐内的用量预算;加购额度是超出后按 token 继续付费的那部分量包月用户真正在"省"的东西。动用加购额度还会把缓存保鲜期从 1 小时降到 5 分钟
按量付费 vs 包月按每个 token 换美元结算 / 每月固定费用含额度决定你该优化"钱包"还是"额度";也决定 /usage 里那个美元数字等于不等于你的账单

18FAQ:七个最常被问的问题

Q1:我都包月了,还有必要省 token 吗?
有必要,但省的是"额度"不是"钱包"。包月套餐对会话时长和每周用量窗口是有上限的(超了要么等重置,要么走加购继续扣费)。用更少的 token 干完同样的活,意味着你在额度内能做更多事、也更不容易中途撞墙(详见 06)。
Q2:/clear 和 /compact 到底选哪个?
一句话:任务还继续、且需要它记得之前的内容 → /compact;任务告一段落、或接下来要干不相关的事 → /clear。/clear 零成本;/compact 是一笔大请求,只在"确实需要连续性"时才值得花。清之前记得 /rename 起名,之后还能 /resume 回来。
Q3:我好像没让它干嘛,为什么 token 涨得那么快?
十有八九是两种原因之一:会话太长、历史被反复重发(07),或者缓存命中率低、反复全价重建(10)。用 /usage 看两件事就能对号入座:上下文总量有多大、缓存命中率有多高。两者都不理想,先 /clear 换个干净的会话再继续。
Q4:缓存要我手动开启吗?怎么知道命中率高不高?
Claude Code 等主流助手对稳定前缀默认自动缓存,你不需要手动开。命中率在 /usage 的 Prompt cache 那一行直接可见(官方示例是 91% 的输入来自缓存)。真正要做的不是"开启",而是"别破坏"——不改系统提示与项目记忆、会话中途不换模型、别让可缓存前缀混进每轮都变的内容。另外注意:太短的前缀不会被缓存,最短可缓存长度视模型在 512–4096 token 之间。
Q5:一页代码大概是多少 token?
别指望一个通用系数。官方给的换算都带"约"字,而且随分词器变化(见 01 的表)。工程上够用的做法是建立一个量级感:一个 3000 行的文件在"几万 token"的量级,一份 10 万行的日志在"几十万 token"的量级。真要精确数,用平台自带的计数命令或计数接口,不要用"行数 × 系数"硬算。
Q6:网上那些"能省 70–90% token"的第三方工具靠谱吗?
谨慎。确实存在通过本地压缩、增量传输等方式优化 token 的开源方案,但多数未经官方审计,有的会把你的对话(含代码与可能的密钥)转发给第三方——安全和效果都得你自己验证。先把本文这些免费习惯做到位,通常已经能省下大头;真有刚需,再选可信、可审计、能自己看清数据流向的方案。
Q7:我要写脚本、跑自动化(非交互),怎么最省?
自动化场景有两个天然优势:任务短、没有历史包袱。省法是:① 每条任务尽量做成独立的一次性短会话,别在一个进程里堆叠长历史;② 需要它"记得"的项目背景,用一个精简的系统提示注入,而不是把整个代码库灌进去;③ 简单子任务交给便宜档位;④ 让输出只返回结构化结果(例如 JSON 格式的数据)或摘要,别让大段解释流进日志;⑤ 用 -p 加 --max-budget-usd 设一道硬上限。

99一句话总结

🎯 核心要点

AI 编程的 token 烧得快,根源只有一条:每一轮请求都要把当时的全部上下文重新发一遍,而你新写的那句话往往是其中最小的一块。所以省 token 的顺序是固定的三步——先改习惯(不相关的活就 /clear、先用搜索定位再只喂片段、把文件 / 范围 / 验收标准一次说清),再看缓存(让项目记忆短而稳定、会话中途不换模型、别在可缓存前缀里塞每轮都变的东西,命中时读取只要一折),最后才调档位(日常用 Sonnet、思考强度按任务分级、跑腿的交给配了 Haiku 的子代理)。先用 /usage 建立一个量级感,再动手——多数人改完前三个习惯,成本就能降掉一大半。另外记住四条不该省的边界:别让它靠猜、别全局关思考、别为缓存把项目配置搞成魔法、别在安全与正确性核验上抠钱。

98参考来源与证据边界

本文里所有具体数字都来自下面这些一手来源,校对日期为 2026-09-13。价格、模型名、命令行为都属于会变的东西,所以我把"哪一类事实来自哪一页"写清楚,方便你回源核对。

一手来源

本文自己做的核对

证据边界与时效

⌂