很多人有过这种体验:聊天一整天账单没多少,写一两个小时代码反而跳得厉害。问题不在你话多,而在编程客户端每动一次手,就把上下文和工具结果整包重发一遍。这篇不讲原理课,只拆一轮任务的钱具体流向哪几处,再给三个当天就能改的降本动作,以及订阅额度与按量账单的口径怎么对上。
很多人有过这种体验:聊天一整天账单没多少,写一两个小时代码反而跳得厉害。问题不在你话多,而在编程客户端每动一次手,就把上下文和工具结果整包重发一遍。这篇不讲原理课,只拆一轮任务的钱具体流向哪几处,再给三个当天就能改的降本动作。
先说结论:贵不贵,基本不取决于你打了多少字,而取决于「一轮任务里工具被调用了几次、每次塞进去多少上下文、失败重试了几回」。把这三件事管住,账单通常当天就能看到变化;如果只是把提问改短,效果往往有限。
每轮重发全部历史:最大的隐形开销
编程客户端和纯聊天最大的差别,是它会连续调用工具。每新增一步,之前系统提示、对话内容、工具返回结果都要重新喂一遍。轮次越往后,单次输入越大,这是账单滚雪球的主因,而不是你最后一句话变长了。
- 第 1 步只带系统提示加一句需求,量很小
- 第 5 步已经背着前 4 步的文件内容、命令输出和报错
- 第 20 步时,历史里堆了大量当轮用不上的中间结果
- 每一步都要重发,于是同一段历史被反复计费
什么情况下这条不适用:只问一句就结束的单轮任务,或者没有工具调用的纯问答,几乎不存在重发问题。所以别看整体账单涨了就归咎于重发,得先确认任务里有没有多轮工具调用。
工具往返与文件读取:一次动作一串账单
读文件、跑命令、看报错、再改,每一步都是一次独立请求。一次稍复杂的任务,几十次工具调用很常见。真正拉开差距的是单次塞进去的体积:全量读大文件、整目录贴进上下文,比只读关键片段贵得多,而且多数内容当轮根本用不上。
排查顺序建议固定下来:先看单轮里工具调用次数,再看单次请求的文件体积,最后才看模型选择。多数「写一会儿就贵」的案例,问题出在前两项,而不是模型本身。
| 现象 | 大概率原因 | 先查什么 |
|---|---|---|
| 改一个小函数,账单却很大 | 全量读文件或整目录入上下文 | 单次请求里的文件体积 |
| 任务越跑越慢越贵 | 每轮重发历史,轮次滚雪球 | 单轮工具调用次数 |
| 账单里有一堆零碎小请求 | 后台索引、补全或重试 | 客户端设置里的自动功能开关 |
子任务小模型、后台索引与补全、自动重试
主模型往往是大家盯得最紧的,但便宜模型的量堆起来也不小。生成摘要、起标题、做检索这类子任务通常走便宜模型,单次便宜,胜在次数多。别只看单价,要看一天累计调了多少次。
- 子任务调用
- 摘要、检索、起标题等,走便宜模型但频次高
- 后台索引
- 你无感触发,保存文件或切分支时自动跑
- 代码补全
- 每次敲键或停顿都可能发一次小请求
- 自动重试
- 限流、超时、格式没对上,同一件事被算两三次
失败重试最容易被忽略,因为它按次叠加。一次没成功的调用照样产生用量,重试三次就是三份。判断标准很简单:如果日志里同一条请求反复出现,先别怀疑模型,去看是不是超时或格式校验在反复触发重试。
三个立刻见效的降本动作
- 缩小单轮上下文只给当前任务需要的文件片段,写完就开新会话,别把旧对话一直背着。验证方法:对比同一任务在「新会话」和「长会话」里的输入量差异。
- 减少无效往返把要跑的命令、要看的报错攒一批再发,一次问清,比来回试探省得多。验证方法:数一数同一个报错你来回问了几轮。
- 锁住重试与后台关掉不需要的自动补全与索引,给重试设次数上限,失败先停下看原因。验证方法:关掉后跑同一任务,看零碎小请求是否明显变少。
什么情况下这三条不适用:如果你在做的是大范围重构或跨文件排查,上下文天然就大,硬砍会导致来回更多、反而更贵。这时候优先做的是「减少无效往返」和「关掉后台」,而不是硬压上下文。
额度口径对照:订阅额度和按量账单不是一个东西
这两个口径经常被混着比,然后得出「明明额度没用完怎么还扣钱」的结论。订阅类编程套餐按窗口内可用的量算,不同产品对同一段对话的折算方式不一样,纸面额度不能直接横向比。按量账单则看输入、输出、缓存三类分别计费,同一任务在两个口径下数字对不上,是正常的。
| 口径 | 看的是什么 | 对不上时的常见原因 |
|---|---|---|
| 订阅额度 | 窗口内可用的量,按产品规则折算 | 折算规则不同,不能直接比纸面数字 |
| 按量账单 | 输入、输出、缓存分别计费 | 缓存命中率不同,同一任务也会不同 |
| 后台与重试 | 这些通常都计入用量 | 用户无感,但确实产生请求 |
对账方法可以固定成一套:拿一段固定任务,在订阅与按量两边各跑一次,记录用量和折算值,再和站内数字核对。想知道眼下的模型价格与额度口径,直接到 /price-watch 看当时的数字,别用记忆里的旧数做判断。
下一步:先把口径对上,再谈省钱与其猜哪家便宜,不如先用一段固定任务把自己的用量口径量出来。站内的价格追踪与中转站检测页面能帮你核对当时的数字和实测速度,对完口径再决定改什么,比盲目换模型靠谱。→常见问题
为什么我写一小时的账单比聊一天还高?
聊天通常是单轮问答,每问一次发一次;编程客户端要读文件、跑命令、看报错、再改,一轮任务里几十次调用很常见,而且每步都把前面的上下文整包重发。贵的是调用次数乘上下文长度,不是你打的字多。
开缓存是不是就不烧钱了?
缓存只压掉重复前缀那部分,命中还要求前缀稳定。你每轮都改系统提示、换文件内容,命中率就掉下来。缓存能省钱,但不能让工具往返次数变少,后者往往才是大头。具体折算去站内对账页看当时的口径。
订阅套餐的额度怎么和按量账单对上?
两者口径不同:订阅按窗口内可用量算,按量按输入输出缓存三类分别计。想对上,只能拿同一段固定任务各跑一次记录用量,再去 /coding-plans 和 /usage 里核当时的数字。