控制面板上的对话情况看起来很健康。每次调用的平均 token 数合理,p50 输入长度舒适地处于缓存前缀(cached prefix)之内,供应商的发票按照财务部门批准的速度增长。然后,有人导出了一个包含 200 轮对话的单次编程会话,该用户的单项支出就超过了团队其余成员每日流量的总和。控制面板没有撒谎 —— 它只是在算平均值。账单来自于长尾(long tail),而长尾并不会随着轮次增加而线性增长。
每一个多轮对话的 AI 功能最终都会遇到这种“惊喜”。每次调用的 token 数是一个错误的衡量单位,因为 30 轮对话的成本不是单次调用的 30 倍 —— 而是 50 倍到 200 倍之间,这取决于历史记录的结构方式、提示词缓存(prompt cache)的衰减情况,以及一旦输入超过 200K token 后请求所处的计费层级。根据单次调用数据为功能定价的团队,实际上是在为他们从未建模过的长尾风险承保。
这就是滑动窗口税。它是结构性的,在基于单次调用的控制面板上是不可见的,而且主要受制于团队很少关注的三个耦合:缓存局部性(cache locality)随窗口滑动而衰减、注意力成本随上下文长度增加、重试(retries)支付的是全部历史记录的费用而非边际增长的部分。每一个耦合都值得被命名,因为一个无法命名失败模式的团队无法为此制定预算。
为什么每一轮都会重新发送整个对话内容
大多数工程师固有的心理模型是“模型拥有对话记忆”。其实不然。每一轮对话都会将整个历史记录(或其窗口子集)作为输入 token 重新发送。第 1 轮发送系统提示词(system prompt)加上一条用户消息。第 28 轮发送系统提示词加上之前的 27 次交流以及新的用户消息,并为其中的每一个 token 付费。
如果平均每次交流是 800 token,那么到了第 28 轮,单次调用的输入大约是 22,400 个历史记录 token 加上系统提示词的成本 —— 每一轮都是如此。28 轮的总输入是三角形数(triangle number),而不是 28 × 800。编程代理(Coding agents)让情况变得更糟:一个代理会话可以产生 50–100 次 API 调用,每次都携带不断扩张的对话历史和累积的工具输出,第 50 次调用通常包含 150K 个上下文 token。
朴素的成本模型 —— “每次调用的 token 数 × 调用次数” —— 通过累加每轮数据得到了一个看似可信的答案。真实的成本模型将对话视为一个单一对象,其总输入大致与轮次的平方成正比,并根据这条曲线为功能定价。行业中大多数定价决策仍基于朴素模型,这就是为什么长会话的长尾效应总是让人措手不及。
提示词缓存局部性随窗口滑动而衰减
每一轮重新发送前缀的标准缓解方案是提示词缓存(prompt caching)。缓存系统提示词和早期对话,下一轮支付读取速率(read rate)而不是写入速率(write rate),问题解决。这在第 2 轮有效。但到了第 28 轮,它已经悄无声息地失效了,原因并未出现在营销材料中。
有三个因素会破坏长会话中的缓存命中:
- TTL 过期。 Anthropic 的默认提示词缓存 TTL 为 5 分钟。任何超过该时间的停顿 —— 用户走开了,或者代理在等待工具响应 —— 缓存条目就会过期。下一轮会以写入速率(1.25× 输入成本)重新上传完整前缀,而不是以读取速率(0.1× 输入成本)读取。2026 年 3 月初,缓存 TTL 从 1 小时缩短至 5 分钟的变化并未公布;各团队通过 30%–60% 的成本飙升,以及意识到他们的 5 小时配额现在首次在中午就耗尽才发现这一点。
- 滑动窗口偏移(Sliding-window drift)。 当为了适应 token 预算而修剪旧消息时,修剪点每轮会移动几条消息。上下文中的每个消息索引都会改变,缓存的前缀不再按字节匹配,整个缓存随之失效。解决方法并不直观:你必须将修剪边界固定在稳定位置,总结(summarize)而不是截断(truncate)中间部分,并接受“多修剪两条消息”是一个比看起来更昂贵的操作。
- 内容块限制(Content-block limits)。 Anthropic 记录在案的注意事项:如果你的提示词在缓存断点前有超过 20 个内容块,并且你修改了这 20 个块之前的任何内容,你就无法获得缓存命中。多工具代理经常会超出这个限制。
第 2 轮时缓存命中率为 80% 的系统提示词,到第 28 轮通常会降至 30%。每个 token 的价格没有变。但每轮的实际成本翻了一倍甚至两倍,而在所有调用中平摊缓存命中率的控制面板是最难发现这一点的地方。
上下文长度附加费是阶梯函数,而非斜坡
定价页面列出的每 token 费率看起来像是固定的。但一旦输入跨越某个层级,它们就不再是固定的了。
Anthropic 较旧的 Claude 模型(Sonnet 3.7 及更早版本)在请求超过 200K 输入 token 时会收取长上下文溢价:输入费率从标准费率变为约 2×,输出费率从标准变为约 1.5×。关键在于,附加费适用于请求中的所有 token,而不仅仅是超过阈值的部分。199K token 的请求是一个价格;201K token 的请求则是整个输入乘以相同的倍数。Google 的 Gemini Pro 模型在同样的 200K 阈值处执行相同的阶梯函数。
Anthropic 的 Claude 4.6 系列通过将 1M token 上下文设为标准定价的统一费率消除了这一附加费,这是一个值得肯定的真实变化。但大多数团队的生产环境中仍在使用旧模型,迁移并不是免费的(评估重锚定、提示词重新调优),而且即使在统一费率方案下,成本仍随输入长度线性增长 —— 只是不再有阶梯式的不连续。无论如何,增长超过 200K token 的对话已经跨越了一个计费边界,而团队的定价模型可能并未考虑到这一点。
重试支付的是完整历史记录的代价,而不仅仅是单次轮次的增量
在长会话账单中,另一个被掩盖的项目是重试。当第 28 轮失败时——无论是瞬时 5xx 错误、拒绝请求、畸形的工具调用,还是模型决定在响应中途停止生成——重试并不是重新发送“新的用户消息”。它重新发送的是第 28 轮的内容,即包含 28 轮的历史记录。如果重试预算是针对单轮调用设计的,那么它会低估长对话中的重试成本,其低估程度与原始成本模型中的三角数因子相同。
这在智能体循环(agentic loops)中最为关键,因为重试在那里并不罕见。一个在工具输出解析失败时重试的规划-执行智能体(planner-executor agent)、一个在裁判拒绝时重试的推理模型、一个在 Schema 验证失败时重试的结构化输出端点——在第 28 轮的每一次重试成本大约是第 1 轮重试成本的 28 倍。解决这一问题的纪律并不是“减少重试”——有时重试是正确的——而是将重试成本计入每次会话成本模型中,这意味着按轮次索引(turn index)而非事件次数(event count)来计算重试成本。
真正能落地的规范
使这一切变得可控的监测手段、预算和架构模式并不罕见,但很少被采用:
- 基于会话的成本仪表盘。 按
conversation_id 而非 call_id 汇总 Token。展示会话生命周期内每一轮成本的中位数、p95 和 p99。中位数会让人安心;但长尾部分才是账单爆发的根源。Confident AI 的 2026 多轮评估指南在谈到评估时也提出了同样的观点:单次调用指标会忽略会话维度,而会话才是用户关心的单元。
- 针对缓存局部性优化的窗口化。 不要仅仅根据 Token 预算进行裁剪。将最可重用的前缀固定在稳定的边界,以便保持缓存,压缩中间内容,并保留尾部。压缩(compaction)文献给这种做法取了一个名字——增量摘要(incremental summarization),锚定在消息边界,并对摘要本身进行缓存。在已发布的智能体基准测试中,实验数据相当可观:在保持任务成功率的前提下,峰值 Token 减少了 26–54%。
- 周期性压缩触发器。 在达到 Token 预算的 70% 时触发压缩,而不是在达到极限时。微软的智能体框架和 Anthropic 的 cookbook 都提供了一个基于阈值的压缩原语;Factory.ai 和 ForgeCode 将其接入了编程智能体循环中。原理是一样的:将会话历史重写为更短的形式,使缓存命中率重置为高位,然后继续运行。
- 针对单个会话的单轮成本警报。 单个会话如果超过了边际成本阈值,应该触发告警,就像数据库中的失控查询一样。如果有人在关注会话维度,那么一个成本超过团队其余人日均流量总和的 200 轮会话是可以实时检测到的。
- 压缩与非压缩的对比评估。 压缩是以质量换取成本。不要盲目上线。针对同一对话的压缩版和全历史版运行评估集,准确了解你为质量付出了多少代价。如果没有这一点,“我们节省了 40% 的成本”可能悄悄意味着“我们损失了 8% 的任务成功率”,而没人察觉。
大多数定价审查中缺失的视角
长会话与短会话是不同的单位经济效益对象。一旦缓存命中率下降,成本曲线随轮数呈超线性增长;重试按历史长度定价,而非事件次数;而阈值附加费模型使得曲线在长会话所能达到的长度上呈现阶梯式不连续。
如果团队将多轮功能的成本定价为 per_call_cost × calls_per_session,他们将在生产环境中发现账单的剩余部分,而这部分支出将不成比例地由最重度的用户承担——而这恰恰是产品团队最想留住的用户群体。架构上的启示是,会话历史并非免费的状态。它是每一轮都要重新压缩的输入,其成本曲线在缓存命中率下降和上下文附加费生效后会急剧弯曲。针对曲线定价,而不是针对单次调用数值定价,长会话的尾部成本就不再是一个意外。
会员专享
余下内容仅对会员开放。
会员可读完整内容 —— 每一个公开发布的观点背后,那些框架、决策与推理的全貌。
- —完整文章,包含未公开存档的部分
- —可落地的工作框架,附带权衡与决策依据
- —新文章抢先看,先于公开发布
随时取消 · 一次订阅,畅读全部