← 全部文章

模型切换的缓存影响与智能路由成本分析

智能路由能把工作分给不同模型,但用户也会关心:切换模型损失的缓存,会不会把省下的钱又花回去?

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 的目标,是让适合经济模型的工作尽可能由经济模型持续完成,在任务需要更强能力时交给主力模型。任务复杂时可以从一开始就使用主力,经济模型表现不足时也可以升级,避免为了省单次调用费用而反复返工。

阶段内保持模型稳定,持续积累缓存收益;重建边界重新判断,减少可避免的缓存损失;必要时升级能力,守住交付标准。只要经济模型承担工作所节省的费用,超过额外缓存重建、路由判断与返工开销,智能路由就有总成本优势。

在 GitHub 阅读原文 ↗