Cloudflare工程师Ryan Skidmore:AI代码审查成本翻倍后,最大一笔节省来自修复缓存前缀共享
Cloudflare内部AI代码审查的平均成本从1.19美元涨到2.46美元,架构没有变化。工程师Ryan Skidmore发现缓存命中率高达97%但成本仍然翻倍,根因是每次会话的第一个请求只有14%到26%命中缓存——因为系统提示把共享内容和仓库特定内容放在同一个块中、唯一的缓存断点设在该块末尾,导致共享部分无法被单独缓存。修复前缀结构后成本降至0.77美元,但质量验证方法本身也有局限。
重要性实质性证据E3 可检验写法标准
Cloudflare内部运行着一套AI代码审查系统:协调器把合并请求分派给代码质量、安全、性能等多个专项审查员,每个审查员独立调用大语言模型完成分析。2026年4月,一次平均审查花费1.19美元;到8月底,这个数字涨到了约2.46美元。架构没有变化,协调器仍然把任务分给同一组审查员,风险分层也没有调整。
工程师Ryan Skidmore在Cloudflare官方博客上记录了这次成本优化的全过程。他首先排除了一个直觉解释:不是审查量变大了。图表固定了审查层级的混合比例,所以大审查占比增加不会扭曲数据。成本确实从3月的1.22美元逐步上升到8月的2.32美元,其中一小部分是因为落入最昂贵层级的审查比例从59%升到了65%——模型能力增强后,工程师提交的变更更大更复杂,自然有更多落入'完整审查'层级。
但大部分成本增加来自模型切换。8月初,所有审查员迁移到Anthropic模型,单次任务成本从1.38美元跳到2.03美元。内部标准审查员Codex迁移到Claude Opus 4.7后,单次成本从约0.25美元涨到0.88美元,比协调器本身还贵。与此同时,缓存命中率从4月的85.7%升到了9月的97%,但每次审查的token数从91万涨到了299万。高命中率乘以三倍的token量,总成本仍然大幅上升。
真正的诊断发生在9月14日。审查系统开始记录每次审查第一个大语言模型调用的token用量,以及发送给模型提供商的第一个系统块的哈希。数据揭示了一个反直觉的事实:尽管每个会话都以相同的工具定义和相同的代理提示开头(11k到21k个token,在所有仓库中完全一致),但第一个请求命中缓存的概率只有14%到26%。
问题出在OpenCode v1构造系统提示的方式。它把代理提示和环境信息(工作目录、日期)放在同一个块里,唯一的缓存断点设在这个块的末尾。这意味着共享部分从来没有被单独存储过——一个仓库的审查永远无法复用另一个仓库的审查写入的缓存。Anthropic的prompt缓存机制只缓存前缀,即对话开头连续不变的部分;断点之后的内容每次不同,就无法命中。
9月16日的修复很直接:在代理提示末尾加一个标记,用插件钩子把原来的单一块在标记处切成两半。前半部分以所有任务共享的字节结尾,获得自己的缓存断点。为了保证前半部分始终一致,必须移除它前面所有仓库特定的内容——禁用可用技能列表,固定工具描述。同一天还把Codex审查员的参考索引(内部标准表、技能文件和参考文件列表)直接放进提示里,省去了每次会话前三个轮次用工具调用读取这些文件的开销。Codex的LLM调用次数从15.9降到9.6,单次成本从1.12美元降到0.72美元。
这些改动把单次审查成本从2.47美元降到2.02美元。后续9月21日和23日又推出一批小改动:移除审查员无法使用的工具(子审查员在57%到76%的会话中试图调用发布评论的工具然后被拒绝,浪费一次调用);让审查员并行读取文件而非逐个读取;跳过重新审查中没有新内容的审查员;审查发布后停止多余的总结轮次;区分慢审查和故障提供商;以及取消已取消的任务(GitLab的Kubernetes执行器在任务取消时不发送信号,446个已取消任务中358个继续运行到审查完成)。这些改动单独看都不起眼,但合起来每次审查省了约0.20美元。
最复杂的一项改动是让三个审查员共享一个缓存前缀。代码质量、安全和性能审查员现在发送完全相同的首个请求——相同的工具、共享的规则文件、包含所有补丁的合并请求——各自的指令放在后面。系统确保其中一个审查员写入缓存,另外两个读取。但缓存条目在写入它的响应开始流式输出之前无法被读取,而三个审查员同时启动,所以第二和第三个最多等20秒,等第一个的响应开始后再发送自己的首个请求。这略微拖慢了速度,但每个审查员省了约九美分。
模型和推理力度的调整贡献了更大的节省。作者把9月初到10月的变化按每次发布和配置变更分段对比,发现代码改动贡献了1.67美元节省中的0.65美元,模型和力度改动贡献了1.06美元。协调器从8月起同时运行三种模型和力度组合;同一模型上,完整层级任务在medium力度下比high快20%,于是去掉了另外两种组合。后续随机分流显示Opus 5.5在medium力度下的审查结果和关键发现与Opus 5没有可测量的差异,于是切换。Opus 5.5每token比Opus 5便宜,但价格只解释了约0.20美元的下降,其余来自发送和生成更少的token。