当前位置: 首页 > article >正文

Thariq推文【Lessons from Building Claude Code: Prompt Caching Is Everything】精读

Prompt Caching 不是优化项而是 Agent 系统设计的起点最近读到一篇很有启发的文章Lessons from Building Claude Code: Prompt Caching Is Everything。它讨论的不是一个局部技巧而是一个很容易被忽略的系统级事实对于长会话、长上下文、频繁往返的 Agent 产品来说Prompt Caching 往往不是“锦上添花”的优化而是决定成本、延迟和产品形态的基础设施。如果一句话概括这篇文章的核心观点那就是Prompt cache 命中率会反过来塑造你的 prompt 结构、工具设计、模型切换策略甚至影响功能应该怎样实现。这篇文章主要讲了什么文章围绕 Claude Code 的工程经验分享了一个核心结论Prompt caching 的本质是前缀复用prefix match。也就是说只有当请求前面那一大段内容保持稳定时缓存才能命中。一旦前缀中某个位置发生变化后续内容的缓存收益就会被破坏。这直接带来一个非常反直觉的设计原则你不能把缓存当成底层能力接一下就完事了而应该从系统设计阶段就围绕“如何保持前缀稳定”来做架构。agent prompt架构如下文章具体展开了几个关键经验Prompt 的内容顺序极其重要应该把稳定内容放前面把动态内容放后面。不要轻易改 system prompt很多变化更适合通过消息注入。不要在会话中途切换模型否则缓存会失效。不要在会话中途增加或删除工具否则会破坏缓存前缀。像压缩上下文、做总结、启动子任务这类“分叉操作”也应该尽量复用原会话的前缀。这些经验看起来像实现细节但其实都在说明一件事Agent 的很多功能设计不应该只看“语义上对不对”还要看“缓存上稳不稳”。为什么 Prompt Caching 这么重要传统对话产品里一次请求的 prompt 相对较短即使有一些重复浪费也未必特别夸张。但 Agent 类产品不一样。Agent 往往会有这些特点system prompt 很长工具定义很多会话历史很长每一步都要多轮调用模型一个任务可能持续几十轮甚至上百轮在这种情况下如果每一轮都把大量重复 token 重新算一遍成本和延迟都会迅速膨胀。缓存命中得越好单次交互越便宜响应越快产品能给用户的额度和体验也越“慷慨”。Claude Code 团队甚至会监控 prompt cache hit rate并在命中率明显下降时当成事故处理。这说明在真实产品里缓存命中率已经不是可有可无的指标而是直接影响业务表现的核心指标。第一条经验Prompt 结构要为缓存而排布文章里最重要的工程原则之一就是静态内容放前面动态内容放后面。Claude Code 的大致组织方式是全局稳定的 system prompt 和 tools项目级上下文例如Claude.md会话级上下文当前对话消息这样安排的目的是让尽可能多的请求共享同一段前缀。这背后的启发非常强我们平时设计 prompt往往先考虑“模型好不好理解”但做 Agent 时还要增加一个维度叫“不同请求之间能不能最大化共享前缀”。文章还提到一些很容易忽略的缓存杀手例如在静态 system prompt 里放精确时间戳工具定义顺序不稳定工具参数在不同轮次中悄悄变化这些改动看上去很小但因为它们出现在前缀区域会让缓存命中率断崖式下降。第二条经验能用消息更新就不要改 System Prompt这是文章里一个特别实用的建议。很多时候系统里的信息会变化比如当前时间变了用户修改了文件系统状态切换了直觉上我们很容易去更新 system prompt。但问题是一旦你改了 prompt 前面的稳定部分就等于主动放弃了缓存。Claude Code 的做法是尽量把这些变化通过下一轮消息补进去而不是直接修改原本稳定的提示词。例如用类似系统提醒的消息告诉模型“现在是星期三”或者“某个文件刚刚被修改了”。这背后的思路非常值得借鉴让 system prompt 承担“长期稳定的规则”让 message 承担“临时变化的状态”。这不仅更利于缓存也能让提示词职责更清晰。第三条经验不要在会话中途切模型很多人会觉得复杂问题用大模型简单问题切到便宜小模型更省钱。但文章指出在长上下文场景里这件事常常恰恰相反。因为 prompt cache 是和具体模型绑定的。如果一个会话已经在某个模型上积累了大量缓存这时候切到另一个模型意味着你要重新构建整段上下文对成本的打击可能比继续用原模型更大。也就是说从单次调用看小模型更便宜但从整段会话看切模型可能更贵。这是一种很典型的“局部最优不等于全局最优”。文章给出的更好方案是如果确实需要换模型就通过子代理或子任务来做把主会话保持在原模型上让另一个模型去处理局部任务。这个建议非常像操作系统里的进程隔离思路不是把主上下文打碎重来而是把局部工作外包出去。第四条经验不要在会话中途增删工具这一条对做 MCP、函数调用、工作流 Agent 的人尤其重要。很多人会本能地觉得当前轮次需要什么工具我就给模型什么工具不需要的工具就先移掉这样更干净。但从缓存角度看这种做法代价很高。因为工具定义通常也在 prompt 前缀里只要你增删工具整个缓存前缀就变了。Claude Code 的解决方式很巧妙不要真的切换工具集而是把“状态切换”也建模成工具或消息。比如它们的 Plan Mode不是进入计划模式就换一套只读工具而是工具仍然保持不变通过EnterPlanMode/ExitPlanMode这样的工具表达状态切换再用系统消息告诉模型当前处于计划模式应该只做探索不做修改这样既保住了缓存也让状态机更一致。文章还提到另一个思路对于大量工具不要动态移除而是通过延迟加载、工具搜索、轻量 stub 等方式让“工具列表的骨架”保持稳定只有真正用到时再补充细节。这说明一个重要原则为了缓存稳定很多动态能力应该设计成“延迟展开”而不是“动态重写前缀”。第五条经验上下文压缩和总结也要做成 Cache-Safe文章中我觉得最有洞察力的一部分是它谈到了 compaction也就是上下文窗口不够用时对历史对话做总结压缩。直觉上这件事很简单另起一个请求把历史喂给模型让它总结一下再带着总结继续。但这里隐藏了一个大坑如果这个“总结请求”用的是另一套 system prompt、另一套工具或者干脆没有工具那么它和原会话的缓存前缀就完全对不上。这样一来你会为整段历史再次付费成本非常高。Claude Code 的做法是保持和父会话几乎一致的前缀复用相同的 system prompt、上下文和工具定义把“请帮我压缩总结”作为新的用户消息追加到末尾这样从 API 视角看它还是那条老会话的自然延续于是前缀缓存可以继续命中。这个经验非常有启发因为它其实不只适用于 compaction也适用于很多“旁路任务”对历史做总结执行技能或子任务生成中间摘要做 fork 分支探索凡是这类操作只要它们共享足够多的父上下文就应该尽量做成 cache-safe fork。这篇文章给我们的真正启示如果只看表面这篇文章像是在讲一套 prompt caching 的调优技巧但我觉得它真正传达的是更底层的方法论设计 Agent不要只从能力和语义出发还要从“可缓存性”出发。换句话说Prompt Caching 不是最后再加的一层性能优化而应该成为产品设计时的“约束条件”。它会影响prompt 怎么分层状态怎么表达工具怎么组织模型怎么协作长上下文怎么压缩功能切换怎么实现很多看起来“更自然”的实现方式在缓存层面可能都不是最优解。真正成熟的 Agent 系统往往不是语义上最直观的那种而是既满足语义又尽量保持前缀稳定的那种。如果我们自己做 Agent可以直接借鉴什么结合这篇文章我觉得至少可以马上落地下面几条实践1. 把 Prompt 分成稳定层和变化层稳定层包括核心 system prompt固定工具定义项目级说明文档变化层包括当前任务状态临时提醒文件变更用户最新输入目标是让稳定层尽量不变把变化都压到后面。2. 给缓存命中率做监控如果一个 Agent 产品已经进入真实使用阶段就应该监控cache hit rate平均输入 token 成本首 token 延迟因 prompt 变化导致的缓存失效比例否则你很可能只看到“模型越来越贵”却不知道问题出在系统设计上。3. 用消息表达状态不要频繁改工具和 Prompt像“进入规划模式”“当前时间更新了”“文件刚被改过”这类信息优先考虑system reminder状态消息显式状态工具而不是直接改前缀。4. 把复杂能力设计成子任务而不是打断主会话如果某一步适合小模型、专门模型或单独执行就用子 agent、handoff、fork 的方式处理不要轻易破坏主会话的缓存积累。5. 对总结、压缩、分叉任务做“前缀复用”设计任何旁路任务只要仍然依赖父会话就应优先复用父会话的前缀环境而不是临时起一个完全不同的调用模板。结语这篇文章最有价值的地方在于它提醒我们重新理解 Agent 工程里的“优化”。在很多传统系统里缓存是性能优化但在 Agent 系统里尤其是长上下文、多轮调用、强工具依赖的系统里缓存其实已经上升为产品可行性的条件之一。当一个系统的成本、延迟、额度策略都和缓存命中率强相关时你就不能把它当成底层黑盒而必须让它进入架构设计。所以如果你正在做自己的 coding agent、workflow agent或者任何长会话 AI 产品这篇文章最值得记住的一句话可能不是“prompt caching 很重要”而是把缓存当成系统设计的一部分而不是部署完成后才想起来补上的优化。

相关文章:

Thariq推文【Lessons from Building Claude Code: Prompt Caching Is Everything】精读

Prompt Caching 不是优化项,而是 Agent 系统设计的起点 最近读到一篇很有启发的文章:Lessons from Building Claude Code: Prompt Caching Is Everything。它讨论的不是一个局部技巧,而是一个很容易被忽略的系统级事实: 对于长会…...

【JDBC】集合、反射和泛型复习-2

反射: Reflection正常情况下我们都是先写好类,在类中定义好类的属性和方法,然后再去使用这个类里的方法和设置它的属性:先知道类信息(类里有些什么属性和方法) ----------> 创建对象 ----------> 使用类里属性和方法先什么都不知道(类里有些什么属性和方法都不知道) ----…...

DDOS攻击防御方法

DDOS不是一个漏洞,而是一种攻击方法。DDOS的攻击目标可以是服务器,交换机,数据库,路由器等等DDoS攻防方法SYN flood攻击攻击者发生大量的syn -sS TCP请求,服务器返回SYN、ACK回应,但是攻击者不理会&#xf…...

黑马点评实战篇千字总结

一.达人探店1.发布探店笔记,查看探店笔记包括发布探店笔记,查看探店笔记,电赞功能,点赞排行榜发布探店笔记,查看探店笔记均为简单增删改查操作。2.点赞功能实现点赞功能,有两个需求,一个是用户能…...

Flutter 三方库 id3tag 的鸿蒙适配指南 - 实现毫秒级提取音频元数据、在 OpenHarmony 上打造专业的本地音乐库治理实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net Flutter 三方库 id3tag 的鸿蒙适配指南 - 实现毫秒级提取音频元数据、在 OpenHarmony 上打造专业的本地音乐库治理实战 前言 在鸿蒙(OpenHarmony)生态的影音应用开…...

【深度】这7个“身体信号”的出现,不只是老了,而是你的生命正在“去繁就简”

📜 【深度】这7个“身体信号”的出现,不只是老了,而是你的生命正在“去繁就简”导语: 衰老从来不是一夜之间发生的事。当岁月的刻度开始在日常细节中显影,它带走的或许是新陈代谢的速度,但留下的却是对生活…...

捷配pcb打样快还稳 老硬件工程师都在这改板

老张上周,在电话里头,跟我吐槽,讲他们的公司里头的,新近研发出来的,一款智能家居控制板,头一批样品做出来了以后,居然发觉电源模块存在干扰。这已然是第三回改版,老板的脸色&#xf…...

基于javaweb和mysql的jsp+servlet房地产客户关系管理系统(java+jsp+javascript+servlet+mysql)

基于javaweb和mysql的jspservlet房地产客户关系管理系统(javajspjavascriptservletmysql) 私信源码获取及调试交流 私信源码获取及调试交流 运行环境 Java≥8、MySQL≥5.7、Tomcat≥8 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业…...

Yii框架的模型怎么使用UUID做主键_覆盖primaryKey和behaviors】

在Yii框架中使用UUID作为主键覆盖primaryKey方法在模型中声明主键字段为UUID,需要覆盖primaryKey()方法。默认情况下Yii假设主键是自增整数,修改为返回UUID字段名:public static function primaryKey() {return [id]; // 假设UUID字段名为id …...

搜维尔科技:Xsens Link套装和Xsens人形机器人软件专为机器人创新者打造,用于远程操作、仿真和训练的精确、实时运动学数据

为什么选择 Xsens 进行人形机器人训练?无与伦比的运动数据精度,经过科学验证的运动数据,用于简化人工智能/机器学习训练轻松集成到您的流程中兼容ROS、Unity、Unreal等引擎 提供SDK 提供全面技术支持规模无限无需额外设置 系统15分钟即可准备…...

【详解】使用Java解决:将一个数按原有规律插入已排序数组

使用Java解决:将一个数按原有规律插入已排序数组在日常编程中,我们经常遇到需要对已排序的数组进行操作的情况。其中一个常见的问题是:给定一个已经按照升序或降序排列的数组,以及一个待插入的新元素,如何将这个新元素…...

c++02:函数重载——让同名函数 “多态” 起来

函数重载是 C 实现编译期多态的核心手段,它允许我们定义多个同名函数,只要它们的参数列表(特征标)不同,编译器就能根据调用时的实参自动匹配最合适的版本。一、重载的核心规则1. 什么是 “不同的参数列表”&#xff1f…...

Python 内存陷阱深度解析——浅拷贝、深拷贝与对象复制的正确姿势

Python 内存陷阱深度解析——浅拷贝、深拷贝与对象复制的正确姿势开篇:一个让人崩溃的 Bug 入行第三年,我在一个配置管理系统里踩了一个坑,花了整整两天才找到根源。 现象很诡异:修改某个服务的配置,另一个完全不相关的…...

Spring面试题 02

目录 ✅ 一、核心概念与对比(Q1-Q2) 1. ApplicationContext 和 BeanFactory 有什么区别? 2. Spring Boot、Spring MVC 和 Spring 有什么区别? ✅ 二、容器与生命周期(Q3-Q5) 3. 介绍一下 Spring 容器的…...

家长实测|3家少儿机器人编程机构真实体验

最近和几位宝妈聊天,发现大家都不约而同地在给孩子选编程课。市面上的机构实在太多,看广告个个都说自己好,真报名又怕踩坑。我们几个妈妈一合计,决定把各自报过的、试听过的机构拿出来晒一晒,互相取经。我家孩子刚满7岁…...

OpenClaw的心跳30分钟才跳一次?Clawith:15秒感知世界,Agent终于有了自主意识

前言 呵呵,最近AI Agent这个概念是真的火。你可能也听说过OpenClaw🦞——一个让个人拥有AI助手的开源项目。它的Heartbeat机制号称是Agent的"心跳",但说实话,30分钟跳一次的心跳,那还叫心跳吗? …...

第十章 微积分:贯穿多领域的统一思维与落地价值

第十章 微积分:贯穿多领域的统一思维与落地价值 专栏「微积分入门与行业展开」收官篇|承接第九章《微积分与数据分析:趋势预测和最优决策的工具》 一、系列回顾:从公式到思维的九层跃迁 过去九章,我们共同走完了一条从数学公式→行业工具→认知范式的完整路径。微积分不…...

【漏油绳公司】元宇宙白皮书:技术革新×应用实践·未来蓝图

执行摘要 漏油绳行业作为工业安全与环境保护的关键防线,其战略地位在能源、化工、数据中心等核心领域日益凸显。随着全球对安全生产与绿色发展的要求趋严,行业正面临从传统被动防护向主动智能预警的深刻变革。然而,技术迭代缓慢、专业人才断…...

监控系统问题解决方案:画面优化与系统设置详解

显示器问题解决方案► 画面抖动原因与解决显示器显示画面抖动通常是由于显示器的刷新率设置过低造成的。要解决这一问题,您可以进入“显示属性”并点击“设置”,接着选择“高级”,再进入“监视器”选项,将刷新率调整为75Hz&#x…...

个人项目复习-短链Day01

考点1:注册功能要求功能需求:使用手机号注册,且已经注册的手机号不能重复注册,密码不能使用简单的md5加密;用户上传头像需要用到文件存储。安全需求:高并发下账号的唯一性注册邮箱或手机号验证码不能被恶意…...

openclaw dashboard实现分析

OpenClaw Dashboard / Control UI 前端实现框架与原理 本文基于 openclaw 仓库源码与官方文档,对 Gateway Dashboard(Control UI) 的前端实现做一次整体梳理,方便在 MW4Agent 中对标实现类似的 Web 控制台。1. 整体架构概览 定位&…...

Day 42 通道注意力

浙大疏锦行 CNN 有很多卷积核,输出很多通道(特征图)有的通道很重要(比如边缘、纹理)有的通道没用通道注意力就是:自动给每个通道算一个权重,重要的通道权重变大,不重要的变小 SE 通…...

2026年亲测:企业健身房规划实战案例分享

在2026年的当下,我们团队在为企业客户规划员工健身空间时,普遍面临一个核心困境:方案设计与最终落地效果严重脱节。许多企业投入预算采购了高端健身器材,却因前期缺乏专业的空间规划,导致器械布局不合理、动线混乱、使…...

《探索升级!AI应用架构师助力企业数字化转型的策略探索升级》

探索升级!AI 应用架构师助力企业数字化转型的策略探索升级 引言 背景介绍 在当今数字化浪潮汹涌澎湃的时代,企业面临着前所未有的挑战与机遇。数字化转型已不再是一种选择,而是企业生存和发展的必由之路。随着人工智能(AI&#xf…...

视觉自动对焦(Z 轴运动 + 相机拍照 + 清晰度计算) 的核心程序

这是视觉自动对焦(Z 轴运动 + 相机拍照 + 清晰度计算) 的核心程序,基于ACS 运动控制器实现,用于精密视觉设备(显微镜 / 相机 / 激光设备)自动找到最清晰的画面位置。 我用通俗中文 + 分层拆解,让你完全看懂逻辑。 一、整体功能一句话总结 控制 Z 轴匀速扫动一段距离,…...

100页PPT2026数字孪生智慧化工园区解决方案

2026年推进5GAI大模型智慧工业园区建设实践路径?【智慧方案文库】汇总了一套《2026AI大模型智慧工业园区建设实践路径指南》,立足“十五五”数字经济与新质生产力发展导向,以AI大模型为核心引擎,融合数字孪生、5G、物联网等技术&a…...

Android 11--横竖屏旋转时背景色异常?

最近遇到一个问题:相册打开一张图片,横竖屏旋转时,有的图片旋转时四周背景色是白色,有的则是黑色的。Why? 难不成背景色与图片相关? -- 11.0的问题,10.0并无 对WMS模块了解一些的人应该都知道&#xff0…...

PowerLine

Powerline 是一款比较酷炫的状态栏工具,可以美化 终端 和 vim界面,由 python 开发,目前仅支持 python2.X,由于 python2 和 python3 互不兼容,安装前要了解清楚使用的Linux /Ubuntu /debian 的Python 版本信息: CentOS 7 : Kali / debian CentOS 系列安装比较简单: 字…...

Synergy服务端显示异常解决办法

第一个问题是服务端不能成功运行,一直显示正在启动: 错误代码: [2020-10-26T19:24:05] INFO: starting new process [2020-10-26T19:24:05] INFO: drag and drop enabled synergys.exe: no configuration available [2020-10-26T19:24:06] ER…...

车流量计数、不同车型统计算法

车流量计数统计算法是目前安防领域重要的应用方向,根据实时或历史视频流,实时统计不同类型的车流量 车流统计双向_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV14q4y1g7Tx/ 比如: 小客车,客货两用车,出租车&…...