模型切换的缓存影响与智能路由成本分析
智能路由能把工作分给不同模型,但用户也会关心:切换模型损失的缓存,会不会把省下的钱又花回去?
HiRoute 从两个环节减少这笔开销:同一轮连续工具调用保持模型稳定,让上下文持续复用缓存;上下文压缩或重建后重新选模,有机会减少仍可复用的旧前缀损失。 对于确实发生的切换,还要把缓存重建费用计入整单,判断最终是否划算。
下面先解释保护机制,再用真实调用次数和 Astra × Qwen 实验的费用数据,把缓存影响与总成本分别算清楚。
HiRoute 如何保护缓存
KV Cache 保存模型已经计算过的上下文状态。保持模型和上下文前缀稳定,后续请求就有机会读取旧缓存,只处理新增内容。换到没有对应缓存的模型时,需要重新处理旧前缀;新缓存建立后,又可以被接下来的调用复用。
HiRoute 的上下文保持机制(ContextHold)识别会话与历史连续性,并保留有效的执行偏好:
| 执行节点 | HiRoute 的处理 | 对缓存的作用 |
|---|---|---|
| 同一轮连续工具调用 | 同轮可识别、历史连续且决策有效时,沿用决策,优先保持所选组内合格的当前模型 | 避免每次工具往返都重新选模,持续复用增长中的前缀 |
| 新用户消息 | 重新判断任务,可以继续原模型,也可以切换 | 继续原模型时可保留旧缓存;发生切换时,要计算完整可复用前缀的损失 |
| 上下文压缩或重建 | 原决策仍可续用则保持,否则重新判断 | 部分历史本来就需要重建,额外损失可能缩小到剩余可复用前缀 |
实际命中由上游的缓存规则和有效期决定,当前模型不可用时也可能故障接力。HiRoute 通过连续性减少不必要的切换;具体路由规则见模型路由指南。
新用户消息触发切换时 如何摊薄损失
新用户消息通常只是追加历史,旧前缀仍可命中。若这时切到完全冷的模型,首次请求可能损失整段缓存;后续工具调用保持稳定,才能逐步摊薄这次损失。
以下计算用 token 加权的输入命中率。为单独观察一次切换,假设两条路径有相同的输入序列,原缓存有效,目标模型首次完全冷启动,后续前缀正常复用且不再切换、压缩或过期。设:
P:原本可命中的旧前缀 token 数。U:新用户消息及其他尚未缓存的输入 token 数。n:本轮模型调用次数,包含首次调用。g:每次工具续接新增的未缓存 token 数,本例按固定值计算。
首次请求不切换时的命中率为 P / (P + U),冷切换后为零。例如,旧前缀 100,000 token、新输入 1,000 token,当次命中率会从 99.01% 降至 0%。
把后续调用一起计入,第 i 次输入是 P + U + (i − 1)g,因此:
本轮累计输入 T = n(P + U) + g × n(n − 1) / 2。
不切换时,累计未命中量为 U + (n − 1)g;仅首次冷切换时,多出一次 P 的未命中量。所以:
本轮命中率下降 = P / T ≤ 1 / n。
最后的不等式来自每次输入都包含前缀 P,即 T ≥ nP。在这些条件下,14 次连续调用的下降上界约为 7.14 个百分点,20 次为 5 个百分点。
取 P = 100,000、U = 1,000、g = 2,000,得到更具体的例子:
| 本轮调用次数 | 累计输入 T | 不切换命中率 | 仅首次冷切换命中率 | 下降幅度 |
|---|---|---|---|---|
| 1 | 101,000 | 99.01% | 0.00% | 99.01 个百分点 |
| 5 | 525,000 | 98.29% | 79.24% | 19.05 个百分点 |
| 14 | 1,596,000 | 98.31% | 92.04% | 6.27 个百分点 |
| 20 | 2,400,000 | 98.38% | 94.21% | 4.17 个百分点 |
保持连续调用,能把首次请求的明显损失摊薄到整个执行阶段。 短轮次、长历史的频繁切换仍需谨慎。若目标模型已有部分有效前缀缓存,只计算两者之差;若继续原模型,切换损失为零。多次切换则累计各次损失,不能继续沿用“一次冷切换”的上界。
真实实验里 一轮有多少次调用
这里“一轮”指一条用户指令到原生 Agent 本轮结束,“一次调用”指一次业务模型请求。一次模型响应可以包含多个工具调用,路由判断请求另行计数。
| 真实实验样本 | 观察到的调用次数 |
|---|---|
| 写稿、审稿、修订与终审 | 正常完成的 42 轮共 310 次;每轮 3–19 次,中位数 5.5 次,平均 7.38 次 |
| Astra/Qwen 无人值守 HTTPX 编码 | 一条初始任务指令共 40 次请求:Qwen 25 次、Astra 15 次 |
| 同一 HTTPX 任务最后的稳定 Astra 执行段 | 连续 14 次请求全部接受,首次重新判断后,13 次继承已有决策 |
写作数据来自逐轮结构化记录,涉及 Qwen 3.8 Max 与 GLM 5.3;全部登记 48 轮,另 6 个中断轮次的 51 次请求单独保留。HTTPX 来自已有编码实验,整轮含两次压缩、30 次接受和 10 次取消,因此采用最后稳定的 14 次调用作连续执行示例。
HTTPX 全部请求中,35/40 继承决策,占 87.5%。这展示了保护机制的实际作用:多数工具往返复用已有选择。87.5% 是决策复用率;前表的 6.27 个百分点则是将真实观察到的 14 次调用代入假设输入规模后的推算,两者都不是实测缓存命中率。该稳定片段始于压缩后的重选,用来说明连续调用的长度,不是新用户消息切换的直接对照。
这些样本给出的体感是:写作一轮往往有数次请求,长编码任务可以有十几次连续请求。任务类型不同,摊薄空间也不同。
压缩后切换 为什么额外损失可能更小
压缩会把部分历史替换成摘要。继续原模型也需要处理这份新内容,但系统提示词、工具定义等未变前缀可能仍可命中。例如,Claude 的压缩与缓存说明介绍了压缩后继续复用系统提示词缓存的方式。
因此,比较压缩后“保持原模型”和“切换模型”,只应把原本还能命中、目标模型却没有的前缀记作额外损失 R。摘要和新增消息是两条路径都需要处理的内容。
沿用前面的单次切换模型,阶段命中率下降 = R / T。若阶段累计输入为 100 万 token,损失 10 万 token 前缀对应下降 10 个百分点,损失 1 万则对应 1 个百分点。这里固定总输入作对照;实际压缩也会改变 T。
这就是两个保护环节的分工:连续执行减少损失发生的次数,压缩边界有机会减小每次损失的前缀。 保留的系统提示词和工具很长时,仍应按实际 R 计算;当 R / T 足够小,额外影响才可以近乎忽略。
缓存损失具体值多少钱
下面使用实验在 2026 年 10 月 3 日冻结的 API 等价价格和 9 月 30 日固定汇率,按标准上下文档位计算。这是历史分析口径,不是当前报价或订阅账单。
| 每百万 token | Astra(美元) | Qwen 3.8 Flash(人民币) | Qwen 折合美元 |
|---|---|---|---|
| 普通输入 | 10 | 0.8 | 0.119322 |
| 缓存读取 | 1 | 0.1 | 0.014915 |
| 缓存写入 | 12.5 | 1.25 | 0.186441 |
| 输出 | 50 | 2.7 | 0.402712 |
换算系数为 1.1355 / 7.6130 美元/人民币,计算使用完整精度;原始记录见冻结证据包的 evidence.json → frozen_cost_basis。
先隔离缓存因素,比较同一目标模型有缓存和冷启动的差异。首次处理单价记为 p,缓存读取单价为 r,均按美元/百万 token:
额外缓存成本 K = R × (p − r) / 1,000,000。
首次处理按普通输入还是缓存写入收费,取决于服务方;两种价格是替代计费情形,不重复相加。
| 目标模型与损失前缀 | 按普通输入处理的额外费用 | 按缓存写入处理的额外费用 |
|---|---|---|
| Astra,100,000 token | $0.900 | $1.150 |
| Astra,10,000 token | $0.090 | $0.115 |
| Qwen,100,000 token | 约 $0.010441 | 约 $0.017153 |
| Qwen,10,000 token | 约 $0.001044 | 约 $0.001715 |
损失 1 万 token 前缀的 Astra 切换,按写入价多花 $0.115;分摊到 20 次连续调用,平均每次 $0.00575。总开销仍是 $0.115,而完整 10 万 token 前缀的损失可达 $1.15。这说明保持长前缀的复用有实际价值。
切换方向也会改变费用
跨模型比较还要计入模型单价变化。新用户消息到来时,旧前缀这部分的费用变化为:
旧前缀费用变化 = P ×(目标模型首次处理价 − 原模型缓存读取价)/ 1,000,000。
取 P = 100,000,目标模型首次处理按缓存写入价计费:
| 切换方向 | 继续原模型读取旧前缀 | 切换后重建旧前缀 | 费用变化 |
|---|---|---|---|
| Astra → Qwen | $0.100000 | 约 $0.018644 | 减少约 $0.081356 |
| Qwen → Astra | 约 $0.001492 | $1.250000 | 增加约 $1.248508 |
同样损失缓存,转到 Qwen 的旧前缀处理费仍可能更低;升级 Astra 则为更强能力付费。 这张表包含跨模型价格差,不能再叠加前表的缓存损失。新输入、输出、路由判断和返工还需进入整单计算。
把缓存开销放回整单成本
Astra × Qwen 实验让 Qwen 完成六份资料核验,Astra 处理关键决策。三个配对运行中,两对双方均达到原定整单验收标准;第一对未达标的混合结果和全部记录保留在实验说明。这是分任务成本对照,用于检验费用余量。
整单金额包含全部受试尝试、结构性重试与已报告的 Jev 判断费用。未报告的缓存写入量按区间处理,所以采用混合成本上界对比全 Astra 下界;普通输入、缓存读取、缓存写入互不重复,输出已包含计费的推理 token。
| 双方均达标的运行 | 混合成本上界 | 全 Astra 成本下界 | 保守降幅 |
|---|---|---|---|
| 第 2 对 | $0.146806 | $1.838882 | 92.01% |
| 第 3 对 | $0.177957 | $2.067170 | 91.39% |
即使全 Astra 的输入全部命中缓存
进一步给全 Astra 一个理想条件:所有输入按缓存读取价计费,输出保留实际用量;混合模式仍取已记录的成本上界。这是固定用量后的敏感性分析,检验缓存折扣能否改变结论。
全 Astra 两次均有 116,383 个输入 token,输出分别为 34,214 和 34,310 个。因此:
第 2 对:(116,383 × 1 + 34,214 × 50) / 1,000,000 = $1.827083
第 3 对:(116,383 × 1 + 34,310 × 50) / 1,000,000 = $1.831883
| 运行 | 全 Astra 全输入命中的假设成本 | 混合成本上界 | 仍节省 |
|---|---|---|---|
| 第 2 对 | $1.827083 | $0.146806 | 91.96% |
| 第 3 对 | $1.831883 | $0.177957 | 90.28% |
两次任务的成本优势仍然存在:输入缓存不会免除输出费用,而冻结价格下 Qwen 的普通输入价也低于 Astra 的缓存读取价。计算保留各模型实际的不同输出用量,降幅使用完整精度并向下截取至两位百分数。
还能容纳多少新增开销
以上述理想化的全 Astra 成本 C_A* 对比混合上界 C_M,额外开销的盈亏平衡条件是:
新增开销 X < C_A − C_M。*
两次运行分别还有约 $1.680277 和 $1.653926 的余量。额外增加一次 $0.115 的 Astra 前缀写入损失,仍不足以抵消本例的收益。X 只计原账目之外新增的缓存重建、判断或返工费用,避免重复扣除。
调用次数、费用和假设比较均可通过离线计算入口复算,步骤见实验复算说明。记录支持这些具体任务的结论;实际任务仍需用自己的上下文、调用量与交付质量核算。
经济模型持续执行 在需要时升级主力
HiRoute 的目标,是让适合经济模型的工作尽可能由经济模型持续完成,在任务需要更强能力时交给主力模型。任务复杂时可以从一开始就使用主力,经济模型表现不足时也可以升级,避免为了省单次调用费用而反复返工。
阶段内保持模型稳定,持续积累缓存收益;重建边界重新判断,减少可避免的缓存损失;必要时升级能力,守住交付标准。只要经济模型承担工作所节省的费用,超过额外缓存重建、路由判断与返工开销,智能路由就有总成本优势。