本周建议动作:先不要因为账单没有明显下降就回退模型。 先用请求级 usage 排查动态前缀、工具定义变化、TTL 不匹配和统计口径;如果 cache_read_input_tokens 已经稳定出现,但完整任务仍然昂贵,再把优化重点转向输出长度、失败重试、工具循环和 Mac 占用时长。
这篇文章适合已经把 Claude API 工作负载迁移到 Claude Fable 5.1、却仍频繁产生 cache write 的 Agent 开发者;也适合需要拆分模型费用、工具执行费和远程 Mac 占用的平台工程师,以及要用真实任务记录判断迁移收益的 FinOps 与技术负责人。
最后更新于 2026 年 9 月 3 日,数据核实自 Anthropic 模型页面、Claude Platform 发布说明、prompt caching、工具调用、定价与限流文档。
1先看成本时间线:降价发生在哪一层,账单增加又发生在哪一层
迁移后的第一周,建议把一条 Agent 任务拆成下面这条时间线,而不是只看工作区的总账单:
- 请求进入模型前:统计普通输入 Token、缓存创建 Token 和缓存读取 Token。
- 模型生成阶段:统计输出 Token;如果启用了思考或更高 effort,不能只看最终可见文本。
- 工具循环阶段:统计工具定义、
tool_use、tool_result,以及每次工具返回的大段日志或文件内容。 - 失败恢复阶段:记录超时、限流、格式错误、重新规划和人工接管后的再次请求。
- 执行环境阶段:记录浏览器、Shell、Xcode 构建、模拟器和远程 Mac 持续占用的时间。
Claude Platform 文档明确说明,缓存前缀按 tools → system → messages 的层级构建,input_tokens 只代表最后一个缓存断点之后的未缓存输入,并不是本次请求发送的全部输入。总输入应按下面的方式复核:
total_input_tokens = cache_read_input_tokens + cache_creation_input_tokens + input_tokens
参考:Prompt caching 的 usage 字段与总输入计算。
因此,出现“缓存读取价格下降,但 Agent 账单几乎不动”并不矛盾:你可能只是降低了某一段输入的单价,同时又增加了输出、工具回传或 Mac 执行时间。
2为什么一直产生 cache write:动态前缀把每次请求都变成了新缓存
可观察症状: 相邻请求使用同一个模型和相似任务,但每次响应里的 cache_creation_input_tokens 都很高,cache_read_input_tokens 却长期为 0,或者只有偶尔一次读取。
最常见的结构错误,是把时间戳、用户变量、队列编号、任务状态或上一次工具结果放到了公共静态内容之前。例如:
系统指令
今日时间:2026-09-03 10:21
任务状态:第 4 次重试
用户请求
公共工具定义
公共项目上下文
如果缓存断点落在最后一段,前缀哈希会包含不断变化的时间和状态;下一次请求即使后面的工具定义与项目上下文完全相同,也无法复用前一次写入的缓存。官方文档专门列出了这一类错误:断点设置在每次变化的块上时,系统不会自动回头为更早的稳定内容创建缓存。
修复时按这个顺序重排:
- 把稳定的工具定义放在最前面;
- 把长期不变的系统指令放在工具之后;
- 把公共项目说明、编码规范、固定示例放在稳定前缀内;
- 把时间戳、用户输入、队列状态、临时凭据和本轮任务放到缓存断点之后;
- 把
cache_control放在“最后一个跨请求保持不变的内容块”上,而不是放在整条消息的末尾。
如果团队使用自动缓存,也要检查最后一个可缓存块是不是动态内容。自动缓存并不会理解“哪一段语义上稳定”,它只会根据请求结构选择断点。
3工具和参数变化,为什么会让看似相同的请求重新写缓存
可观察症状: 你肉眼看着系统提示词没有变化,但只要 Agent 进入不同分支,缓存读取就突然消失;或者同一个任务在“有图片”和“无图片”、“自动选工具”和“强制工具”之间切换后,重新产生完整写入。
原因在于,缓存比较的不只是可见的文字。以下变化都应纳入请求指纹排查:
- 工具名称、描述、参数 Schema 或必填字段发生变化;
- 工具列表每次由程序自动生成,顺序不稳定;
- 某些请求开启了
tool_choice,另一些请求使用不同选择模式; - 并行工具调用开关或工具集合发生变化;
- 某一轮加入或删除图片、文档;
- thinking 配置或
output_config.effort发生变化; - 工具结果的结构、字段顺序或序列化方式不稳定。
Anthropic 的缓存失效规则显示,工具定义变化会使工具、系统和消息缓存全部失效;tool_choice、图片和 effort 变化也会影响消息缓存。缓存失效条件说明
对工具定义,建议采用“公共工具前缀 + 动态工具发现”的两层结构。高频使用且 Schema 稳定的工具固定在前缀中;低频工具、按项目加载的 MCP 工具或实验性参数,不要每次都拼进共享缓存层。工具自动生成时,先对名称、描述、参数键进行规范化排序,再生成请求,否则“看起来相同”的工具列表可能因为字段顺序不同而得到不同哈希。
注意: 不要用“总输入 Token 下降了”代替“缓存命中了”。至少连续保存一组请求的
cache_creation_input_tokens、cache_read_input_tokens、input_tokens和output_tokens,否则你无法判断是缓存失效,还是未缓存内容本来就变多了。
45 分钟还是 1 小时:TTL 要跟 Agent 节奏匹配,而不是统一配置
可观察症状: 高频对话能命中缓存,但排队任务、人工审批后的续跑任务和后台长任务几乎每次都重新写入。
Claude Platform 当前支持默认 5 分钟和额外付费的 1 小时缓存时长。缓存生命周期从写入或读取该缓存条目的请求开始计算,而不是从响应结束时开始计算;如果模型生成响应本身耗时较长,真正留给下一次请求的时间会更短。缓存生命周期与 TTL 说明
可以按任务节奏做选择:
- 连续对话、短工具链、人工快速确认:优先评估 5 分钟 TTL。它适合请求间隔稳定、同一前缀会被快速复用的任务。
- 排队后继续执行、人工审批、后台等待外部系统:如果下一次请求经常超过 5 分钟,再评估 1 小时 TTL。
- 低频一次性任务:不要为了“开启缓存”而强行写入。若公共前缀只会使用一次,写入本身可能抵消读取带来的收益。
- 长时间生成任务:把模型输出时间纳入 TTL 计算,不能只看请求发起间隔。
当前官方定价文档显示,1 小时缓存写入按基础输入价格的 2 倍计费,而 5 分钟写入为基础输入价格的 1.25 倍;Claude Fable 5.1 的缓存读取为每百万 Token 0.25 美元。Prompt caching 定价表
这里不应套用固定节省比例。你真正需要计算的是:一次写入成本、预计读取次数、每次读取的前缀长度,以及任务在 TTL 内实际复用的概率。
5Agent 使用 prompt caching 后账单没降:先排除统计口径错误
可观察症状: 监控平台显示输入量没有明显变化,财务账单却与迁移前接近;或者一个平台显示“输入 Token 很少”,另一个平台显示完整上下文很大。
重点检查这 4 项:
- 监控系统是否把
cache_creation_input_tokens、cache_read_input_tokens和普通input_tokens合并成一个“输入 Token”字段; - 是否只采集了最终响应,漏掉了流式响应中的
message_startusage; - 是否把不同模型、工作区、API Key 或云平台账单混在一起;
- 是否把输出 Token、工具附加 Token 和服务器工具费用错误归入缓存费用。
Claude API 的组织用量报告支持按 API Key、工作区、模型和服务层级分组,并分别返回未缓存输入、缓存创建、缓存读取与输出用量。组织用量报告字段
建议每条任务至少保存以下复核证据:
task_id与父任务 ID;- 模型版本和请求时间;
- TTL、工具列表摘要、
tool_choice、图片状态与 effort; - 完整请求级 usage;
- 重试原因、重试次数和最终状态;
- 远程 Mac 开始、结束及中断时间。
只有把这些字段关联起来,FinOps 才能回答“缓存到底有没有生效”,而不是只回答“本月输入 Token 是多少”。
如果你正在搭建这类记录链路,可以先参考 远程 Mac Agent 运维排查帮助,把请求日志、任务状态和执行节点记录放到同一个复核流程中。
6缓存命中了,为什么完整任务仍贵:模型费用和执行成本必须分层
可观察症状: cache_read_input_tokens 已经稳定出现,缓存写入也明显减少,但单个任务的总成本仍然高,尤其是代码修改、构建、测试和浏览器操作型 Agent。
这时不要继续反复调整缓存断点,因为主要矛盾可能已经转移到缓存之外。完整任务至少要拆成 5 层:
- 普通输入 Token:缓存断点之后的本轮指令、用户变量和新工具结果;
- 缓存读取 Token:复用的公共前缀;
- 缓存写入 Token:首次创建或 TTL 过期后的重新写入;
- 输出与思考 Token:模型生成计划、代码、解释、验证结果;
- 工具与执行环境成本:外部 API、浏览器、Shell、Xcode 构建、模拟器和远程 Mac 占用。
Anthropic 的定价文档指出,工具请求的输入成本包含 tools 参数、tool_use 和 tool_result 内容;服务器工具还可能存在额外的按次使用费用。工具调用定价说明
尤其要关注以下失控模式:
- 编译失败后,Agent 没有停止条件,重复执行相同构建;
- 工具返回完整日志,模型每一轮都重新读取大量无关内容;
- 失败重试重新创建了整段缓存,而不是只发送必要增量;
- 浏览器或模拟器状态失效,导致同一操作反复执行;
- Xcode 构建等待时间远高于模型生成时间;
- 人工接管后,系统没有恢复原任务状态,Agent 从头规划。
对应的修复动作应是:限制相同错误的重试次数,设置构建和测试的停止条件,只回传失败摘要与相关日志片段,给工具调用增加幂等键,并把长输出或高执行占用任务分流到独立队列。模型缓存优化解决不了“Agent 做了太多无效工作”。
关于远程 Mac 的容量、并发和运行记录,可继续查看 云端 Mac Agent 容量与验收指南,重点核对节点等待时间、构建占用和任务释放是否进入同一成本口径。
7用同条件回归决定保留、重构还是分流
不要直接拿迁移前后的月账单做结论,因为任务数量、工具版本、并发量和 Mac 环境都可能同时变化。先挑选一组公共前缀稳定、工具路径明确、能够重复运行的代表性任务,再固定模型、TTL、工具集合和执行环境。
| 决策结果 | 必须同时满足的证据 | 下一步 |
|---|---|---|
| 保留当前方案并扩大流量 | 缓存读取稳定出现,重复写入下降,任务完成率不降,重试与 Mac 占用没有异常增加 | 逐步扩大到同类任务,并继续按任务类型统计 |
| 重构缓存结构 | cache_creation_input_tokens 反复出现,读取接近于零,且动态前缀或工具变化可以定位 |
前置稳定工具与系统上下文,把动态信息移到断点后 |
| 保留缓存但优化 Agent 循环 | 缓存读取正常,模型输入层已经改善,但输出、重试或工具结果占主要成本 | 增加停止条件、压缩工具结果、限制重复调用 |
| 分流高成本任务 | 缓存命中正常,但长输出、浏览器操作、Xcode 构建或远程 Mac 占用仍主导总成本 | 将长任务放入独立队列,按执行环境和并发策略单独管理 |
| 回退或更换模型 | 在相同任务、工具、TTL 和执行环境下,完成率或总任务成本持续不达标 | 先保留回归记录,再评估其他模型或混合路由 |
验收至少观察一个完整周期,而不是只看第一次请求。对每个任务保存修复前后记录,重点比较缓存读取占比、重复写入、任务完成率、重试次数、工具调用次数、输出 Token 和远程 Mac 占用时长。
Anthropic 的发布说明确认,Claude Fable 5.1 于 2026 年 9 月 1 日推出,缓存读取价格降低,同时工具选择、thinking 块和 effort 等行为也有模型级变化。Claude Platform 发布说明
8本周落地路径:5 个工作日完成一次可复核排查
你可以按下面的里程碑执行,而不必先大规模改造 Agent:
第 1 天:冻结基线。 选取稳定任务,记录模型、工具、TTL、请求间隔、usage、重试和远程 Mac 占用,不先修改提示词。
第 2 天:检查前缀结构。 对请求序列化后的 tools、system 和 messages 做差异比较,重点找时间戳、状态字段、动态工具顺序和图片开关。
第 3 天:修复缓存断点。 将稳定工具定义、系统指令和公共上下文放到断点前,把本轮变量和任务状态后移;连续发送请求,确认 cache_read_input_tokens 出现。
第 4 天:匹配 TTL 与节奏。 按真实请求间隔分别测试 5 分钟和 1 小时,不以单次命中作为结论,而是比较写入成本、读取次数和任务完成情况。
第 5 天:拆分完整成本。 把模型输入、模型输出、工具调用、重试、构建等待和远程 Mac 占用分别入账,然后决定保留、重构还是分流。
缓存读取降价后,当前 Claude Fable 5.1 方案仍可能存在 3 个真实缺点:公共前缀不稳定时会不断产生写入,长任务的输出和失败恢复可能远高于输入缓存费用,工具执行与远程 Mac 会把模型层节省完全抵消。也就是说,当前方案的瓶颈未必在模型价格,而可能在执行环境的等待、并发和重复操作。
如果你已经确认成本主要来自浏览器、Shell、Xcode 构建或 Mac 长时间占用,而不是缓存读取,那么继续调整 prompt caching 的收益会很有限。对于需要临时算力、短期测试环境或可销毁的 Agent 执行节点,租赁 vpstix 的 Mac 环境通常比临时采购设备更容易控制启动周期、闲置成本和任务隔离;但如果你的工作负载是长期稳定的重负载,或必须连接固定的物理设备,自购 Mac 仍然可能更合适。
9延伸阅读
vpstix M4 远程节点
用 vpstix 远程 Mac,控制 Agent 的真实执行成本
通过 vpstix 按需租用远程 Mac,将本地设备、环境配置与维护成本转化为可控的使用支出。