• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Rorysky
7.1D
V2EX  ›  程序员

不明白为什么很多人用「缓存命中率」作为 agent 的性能评估参数

  •  
  •   Rorysky · 2h 30m ago · 2200 views
    1. 缓存命中强相关你的任务场景和输入,如果你的输入每次都有巨大增幅,且新增内容不同,缓存命中自然就低呀
    2. 缓存命中更多是服务端的 harness ,比如 ds 缓存过期时间长,那命中率自然高
    3. 缓存命中在多轮对话中数学角度一定是不断增长的,且你每次请求 prompt 中固定部分(一些全局/工具描述等)越大,缓存命中越高

    就这么一个和多个环节相关的参数,被很多人拿来评价用户侧 agent, 不禁感叹智商的分布,很长时间不理解。

    你的缓存命中高,很可能只是你的任务简单,迭代次数多罢了

    38 replies    2026-08-14 11:45:05 +08:00
    ReinXD
        1
    ReinXD  
       2h 27m ago
    dpsk 应该是把 system prompt 直接放到每次请求的开头了,这样每次增长的计算实际上只有用户新发的请求,剩下全部可以 prefix cache hit ,导致最后命中率 99%,其实没那么多魔法,不过 dpsk 应该这次在训练 sft 的阶段就对这种 prompt 方式进行优化了
    Rorysky
        2
    Rorysky  
    OP
       2h 24m ago
    @ReinXD ds 主要的不同时缓存失效时间长。假设第 i 次 prompt 的输入 等于 A_i ,存在关系 A_(i+1) = A_i + delta_i, 极限情况当交互次数趋向∞,那么缓存命中必然趋向 100%。 似乎高中数学遗忘的人很多
    Tiande
        3
    Tiande  
       2h 9m ago   ❤️ 1
    我不在乎这个,但用户对价格敏感是什么很难猜的东西吗。
    你有研究过 ds4f 之类的热门模型的缓存占比对价格的影响可以分享一下。

    另外这你都能上升到别人智商有问题,其实也看不出来你有多聪明...
    0xnycth
        4
    0xnycth  
       2h 6m ago
    工具的使用单价你不在乎?

    那你很有钱咯
    Retas
        5
    Retas  
       2h 3m ago
    @ReinXD 我记得主流 harness 都是这么干的?
    fredweili
        6
    fredweili  
       2h 3m ago
    不能当作一个评价维度么?你是免费不花钱用的么?做的不好的,也能“必然趋向 100%”,高中数学还挺天真的
    lovelyxiaod
        7
    lovelyxiaod  
       1h 56m ago   ❤️ 1
    确实,除非故意使坏,不然这缓存命中率就低不了.

    但是还是有一些优化技巧的,省一点也是真金白银.

    这不 deepseek 都涨价了么.
    Rorysky
        8
    Rorysky  
    OP
       1h 56m ago
    @0xnycth 主楼一点不看么? 说了和任务场景有关系
    Rorysky
        9
    Rorysky  
    OP
       1h 55m ago
    @lovelyxiaod 这可是有记录的,A 社曾经给非 anthropic 的 api 的请求在头部增加了一个动态码
    Sundayz
        10
    Sundayz  
       1h 54m ago
    省钱带来的冲击力是很直接的
    Rorysky
        11
    Rorysky  
    OP
       1h 54m ago
    @fredweili agent 要怎么做呢,就是把动态内容尽量滞后,这还需要怎么做,这是最基本正常的开发思维么
    xyooyx
        12
    xyooyx  
       1h 52m ago   ❤️ 1
    其实 system prompt 算小头,agent 场景里的大头是 history ,每一轮相比上一轮的历史都是重复的,而且缓存命中率直接决定结算单价,最终影响的是完成一件事的成本,大家会用脚投票,所以当然会特别在意。
    Rorysky
        13
    Rorysky  
    OP
       1h 51m ago
    @Tiande 我只是发现这个现象,并对这个现象进行质疑和讨论。我都是面向现象说的,你不能等同于 “别人”,我没有对具体人的评价和质疑,谢谢。
    xqk111
        14
    xqk111  
       1h 51m ago
    黑人问号?
    neteroster
        15
    neteroster  
       1h 48m ago via Android   ❤️ 2
    正确的,本身缓存率就是个和实际工作负载类型强相关的东西,服务端的影响也很大; Harness 只要做好稳定前缀,别像之前某个 harness 在系统提示词开头插当前精确到分钟的时间就行了(虽然现在有些模型的 template 把系统提示词放在最后了)
    szdosar
        16
    szdosar  
       1h 44m ago
    其实你已经说到部分原因了。
    很多时候我们不理解、不明白是因为我们没走到那一步。
    鞋子合脚吗?穿过才懂。
    Inn0Vat10n
        17
    Inn0Vat10n  
       1h 38m ago
    这有啥难理解的,好比游泳,人的水平当然是核心因素,但是同一个人, 穿 A 牌的泳衣就是游的比 B 牌的快;agent 缓存命中优化是同一个道理, 同样的任务,同样的模型,用 opencode 和 claude code 缓存命中率就是不一样, 换你你用哪一个?
    FrankAdler
        18
    FrankAdler  
       1h 38m ago
    因为没什么可吹的了,大差不差的,只能强行说点啥,刚刚还看到一个帖子,说把 agent 装进你的电脑,然后有个唐式对比:

    其他 AI 助手工具 XiaoyaoClaw
    数据上传到云端,归别人管 本地优先,配置、聊天记录、API 密钥都在你电脑里

    我寻思着 hermes openclaw pi 哪个不是本地?
    LovingYoung
        19
    LovingYoung  
       1h 33m ago   ❤️ 2
    赞同,99% 命中的那能是什么好任务……正常用 95% 是合理的,当然模型后端必须尽可能保持 stable prefix 才是合理的
    winnerczwx
        20
    winnerczwx  
       1h 21m ago   ❤️ 1
    因为大部分人的任务简单 且 价格敏感度高

    我感觉评估 agent 主要还是看 模型能力 推理能力 任务执行正确率, 至于是 99%缓存还是 95%缓存确实不在意, 只要能把活干好 多花点 token 就多花点吧

    一个任务 10 亿 token, 8 小时多跑完 5x 周额度, 但能解决问题啊不是吗?
    Rorysky
        21
    Rorysky  
    OP
       1h 18m ago
    @winnerczwx 从最近的 agent 看,loop 能力/任务编排/长时间任务执行 是 agent 的核心
    anubu
        22
    anubu  
       1h 15m ago   ❤️ 1
    主贴描述的现象是事实,但不应表示“Agent 缓存命中率”这个指标无效。原因应该是语义含糊问题,Agent 缓存命中率应该是一个受多场景多变量影响的指标,自媒体良莠不齐,含糊的描述,导致了传播层面的困惑。
    稍微严肃一点的定义,对比多个 Agent 在相同的 codebase 、环境、链路、模型、提示语等因素,处理同一个相对复杂的业务场景,来比对缓存明中率,这样的指标应该是有意义的。因为 Agent 实现上的确有影响这个指标的因素,所以用于评估 Agent 是有效的。只是要严肃对比可能要有较为严格的测试设计。
    那么 Agent 间的横向对比,和个人实际使用的纵向推进场景,有什么参考价值吗?除了来回拉扯的场景,其它可能差那么一点命中率没有太大关系,但的确是可以省钱的。
    xyooyx
        23
    xyooyx  
       50 mins ago
    @xyooyx
    列个公式其实就很清晰了

    总命中率 = (System Cache Hit + History Cache Hit) / Total

    = [ C × hit_rate_system + ΣΔ(k) × hit_rate_history ] / [ C + ΣΔ(k) + d ]

    代入场景数据:
    系统提示(含工具):1500–3000 tokens
    历史对话( 10 轮):4000–8000 tokens
    当前输入:20–100 tokens
    则:
    命中率 = (3000 + 8000) / (3000 + 8000 + 50) ≈ 99.5%

    所以得出推论:
    - Agent 只要跑起来,轮次必然长,高缓存命中是“必然结果”
    - 这不是某个特定任务的福利,而是 Agent 场景的“通用属性”

    那问题就变成了:
    既然所有 Agent 都必须面对“长文本 + 高重复”这个通用问题,
    那一个模型如果能做到:
    - 长上下文不崩( 128K 甚至 1M 依然能 recall )
    - Cache 策略高效(不重复计算)
    - 长文本推理速度不线性下降

    我们就认为这个模型在 Agent 这个赛道里“做得好”。因为它在解决的是这个场景下的“通用瓶颈”
    graymmon
        24
    graymmon  
       46 mins ago
    如果是公司承包我的 token 我根本不在乎所谓的缓存命中量。

    如果是我自己,又是成本>收益的情况,价格肯定是个人开发者的敏感点。
    ReinXD
        25
    ReinXD  
       38 mins ago
    @Retas 这里有个关键问题是如果模型 sft 的训练数据没有针对性优化,这样的操作是会下降模型性能的
    bertonzh
        26
    bertonzh  
       37 mins ago   ❤️ 1
    有点像不同饭店的两盘菜的单价,不考虑原材料成本,不考虑两份菜的分量大小,就硬比。
    iWillHentai
        27
    iWillHentai  
       36 mins ago   ❤️ 1
    @Tiande 赞同, 不同的用户有不同的需求侧重, 强行以自己的标准来判断还上升到智商问题是真的难评🤣
    crytis
        28
    crytis  
       35 mins ago
    缓存命中高不仅影响价格,还影响速度
    HappyAndSmile
        29
    HappyAndSmile  
       26 mins ago
    我早就想说你同样的观点了,不敢说,每次看到什么 99%的缓存率然后怎样怎样,莫名觉得好笑
    ktyang
        30
    ktyang  
       21 mins ago
    大家不都是比的相似的任务么,反正我用的时候会大概看一下。正常使用过程中某些模型就是命中率低,某些工具就是命中率低,这还不能说么。又不是专门为了让某些工具刻意的高刻意的低。
    maolon
        31
    maolon  
       17 mins ago
    因为这玩意儿影响价格啊,如果 cache read 的价格和普通 input 价格一样那这个 hit rate 0 人在意,
    各家动辄 cache read 1/10 的价格,甚至大部分都没有 cache create 价格,那当然是命中率越高越省钱,这很难理解么
    aimuz
        32
    aimuz  
       12 mins ago
    还有一个问题是上下文越高,AI 智商也会相应的变低。
    nsjs
        33
    nsjs  
       8 mins ago via iPhone
    说白了就和显示器比参数一样的逻辑。
    参数有意义吗,有意义,也没有意义
    longaiwp
        34
    longaiwp  
       7 mins ago
    难道我来用 AI 不是来赚钱,是为了花钱的?
    Tink
        35
    Tink  
       4 mins ago
    因为 KV cache 在 llm 里面是非常正经的概念

    Transformer 做自回归生成时,每生成一个 token ,都要做 Attention ,要是没 KV Cache ,那每一个 token 都要重新算,那个计算量我觉得没有模型可用吧。

    另外 agent 的 Prompt Cache ,要是没有缓存,每一次都要做 prefill ,也是非常离谱的计算量
    Tink
        36
    Tink  
       3 mins ago
    LLM 自身能成功命中缓存,很大程度上决定了这模型的速度和计算量,虽然可以输出上帮助不多,但是 prefill 提升巨大
    Tink
        37
    Tink  
       3 mins ago
    typo:可以-可能
    MackMa
        38
    MackMa  
       1 min ago
    喷楼主的人,应该都没有理解缓存机制

    建议阅读一下: https://platform.claude.com/docs/en/build-with-claude/prompt-caching
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5160 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 117ms · UTC 03:46 · PVG 11:46 · LAX 20:46 · JFK 23:46
    ♥ Do have faith in what you're doing.