基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
  • 知识卡片碎片时间过考点
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
    • AI 热点每日 AI 资讯与动向
AI 工作台
简历
旧版
AIHT
内容
精选全部 AI 动态热点榜AI 日报收藏
分类
模型行业编程产品技术观点开源
更多
Agent 接入
返回首页开发者导航
AIHT
精选 / 资讯详情
8.0
热点
AI SCORE
编程提效2026-11-04 16:05

系统提示里的时间戳为何拖累缓存

dev.to · AI#提示缓存#成本优化#Agent
Editor brief · 编辑速览

作者排查缓存 token 长期为零的问题,发现系统提示中每次变化的时间戳会影响提示前缀复用。文章从实际账单和使用量变化切入,讨论动态上下文与提示缓存的冲突。

文章思维导图
Knowledge map
拖拽缩放
AI deep read

AI 深度解读

system prompt 顶部的一行当前时间,可能让后面几千个不变的 token 都失去缓存复用机会。作者原先把 cached tokens 长期为零当成账单上的陌生数字,直到更新 Hermes、从 OpenRouter 切到 OpenCode 后,这个数字才开始变化。

这篇的价值,在于提醒我们:长对话的成本不只取决于模型单价,还取决于提示词如何排列。不过,作者同时改了两个变量,文中的费用推演也采用了假设价格,不能直接当成你自己项目的结论。

为什么一行时间会影响整段提示词

作者给每个 agent 的 system prompt 都加了当前时间,让模型处理「今天」、截止日期和日程时有时间依据。这段内容解决的是模型缺少时钟的问题:

Current time: 2026-11-04T01:17:00Z

要注意的是 Current time: 后面的值:它每次请求都会变化,而且被放在提示词顶部。

提示词缓存(prompt caching)复用的是已经处理过的输入前缀。可以把它理解为:前面一长段内容完全一样,服务商就可能沿用此前的处理结果。它不是在整段输入里寻找相似句子,也不会因为后面的规则没变,就自动跳过前面的差异。

越靠前的动态内容,越容易缩短能够复用的前缀。

因此,问题不在于 agent 该不该知道时间,而在于时间放在哪里。作者建议把它移到最后一条 user message;如果任务只关心日期,也可以把精度降到天。后者只是减少变化频率,并不能保证跨天继续命中。

缓存命中有门槛,打开功能还不够

原文把命中条件归纳为三个:前缀足够长、内容完全一致,以及缓存标记的位置正确。

按作者引用的文档,OpenAI 至少需要 1,024 个可见输入 token,隐藏的系统内容不计入这个门槛;Anthropic 的部分较新模型从 512 个 token 起步。这里原文没有列出具体模型,不能把 512 当成所有 Anthropic 模型的统一标准。

长度够了,也要保证前缀逐字节一致。工具定义、system prompt,以及被插到前面的检索内容,都应纳入检查范围。即使业务规则一字未改,只要前面塞进了每次不同的信息,后面的稳定内容也可能无法复用。

缓存标记还涉及服务商差异。原文提到,Anthropic 的缓存层级依次是 tools、system、messages,某一层变化会影响该层及之后的缓存。这个顺序也解释了为什么工具定义发生变化时,只盯着 system prompt 排查可能找不到原因。

而在 OpenAI 支持的模型上,缓存默认开启。作者并不是漏开了一个开关,而是请求没有满足可复用条件。两家的机制不能混成一套配置方法,实际接入时仍要按所用模型核对。

为什么缓存不命中还可能更贵

作者最意外的一点是:缓存写入可能比普通输入更贵,读取则便宜得多。于是,反复写入却从不复用,就可能增加费用。

这里必须补上适用范围:写入溢价不能直接套到所有服务商和模型上。 原文没有把这部分计费机制与具体模型逐一对应,接入时需要确认自己的服务是否单独收取缓存写入费。

作者给出了一组费用推演条件:

  • 对话共 40 轮,固定内容为 6,000 个 token。
  • 每轮追加 1,000 个 token,并输出 300 个 token。
  • 输入价格假设为每百万 token 2 美元,输出为每百万 token 10 美元。

在这套假设下,作者称最差情况比完全不用缓存贵约四分之一,成本是正确使用缓存的六倍。

这组数字适合说明方向,不适合直接拿来做预算。提供的原文没有展示缓存读写单价、完整算式,以及每轮累积输入的计算细节,因此无法据此复核这两个倍数。作者也明确说明,价格是他的假设,并非读者账单上的报价。

我的判断

把稳定规则放前面、把当前时间等动态信息放后面,是这篇最值得采用的做法。相比一上来换便宜模型,它保留了原有任务能力,也更容易通过输入和 usage 数据验证效果。

但作者的经历不能证明「切掉 OpenRouter 就能修好缓存」。他同时更新了 Hermes,又迁移到了 OpenCode,没有做单变量对照;他自己也承认无法确定是哪项变化起了作用。路由到不同 provider 只是排查方向,不能据此认定 OpenRouter 就是原因。

缓存也有时间窗口。原文只说保留时间以分钟计,没有给出具体模型的期限。低频调用、前缀太短或工具定义频繁变化的任务,即使布局合理,也未必有很高的命中率。

我认同作者要求关注缓存占比,但账单仍需结合总输入、输出和实际计费判断。高命中率能说明复用情况,不能单独代表总成本最低。

能拿来做什么

  • 在 Node agent 的请求组装处,把工具定义和固定规则放在前面,把当前时间、当次任务及动态检索结果放在后面,并检查实际发送出去的消息顺序。
  • 在日常 AI 编程工作流里,如果每轮都会插入时间、环境状态或临时上下文,先比较相邻请求的前缀,找出第一个变化位置。
  • 在调用记录中保存输入 token、缓存 token 和费用信息;缓存突然归零时,依次核对长度门槛、前缀变化、provider 路由及请求间隔。
  • 调整 Hermes 版本、接入渠道或提示词布局时,每次只改一项,再观察同类请求的缓存表现,避免重演作者无法归因的问题。
Original source

本文由 AI 通读原文后重新编写,观点部分为站内判断,细节以原文为准,来源 dev.to · AI,原文版权归原作者所有。

阅读原文
上一篇
Mistral Large 4 开放权重并下调 API 价格
下一篇
Spotify将服务目录接入编程助手

资讯速览

dev.to · AI · 2026-11-04 16:05

AI 评分 8.0 / 10

相关标签

#提示缓存#成本优化#Agent

继续阅读

  • 用Plumbgraph核查AI代码是否真正完成
  • Mistral Large 4 开放权重并下调 API 价格
  • Spotify将服务目录接入编程助手
  • AI补上的空数组可能掩盖接口故障
  • FlashProve探索用密码学核验模型来源