Skip to content

折叠节奏的缓存经济学:全量折叠一次性重付 ~0.75V,当前 cadence 勉强回本;需阈值上调 + 失效几何观测字段 #359

Description

@ranxianglei

背景

用户反馈(日志 acp (3).log,sid 01a089aa-dff8-719b-b475-1fc7d801102e,gpt-6-astra,2026-09-10 05:37–12:03):"压缩后还是缓存泄露" — 每次压缩后上游 prompt cache 大面积丢失。

排查结论:非 bug,渲染管线字节稳定

用 acp-kernel 0.0.62 做字节级实验(~/tmp/probe-cache-fold.mjs,createCore + applyCompression + processTurn 逐字节 diff):

实验 结果
无新折叠连续渲染两次 字节级完全相同(tag tokens 已与密度校准解耦,src/tag-tokens.ts stableTagTokens,#171)
折叠 m00011–m00061(视图 2.5% 处) 首个差异字节恰在折叠边界,折叠点之前 100% 保留
尾部折叠(75%–90% 处) 71.4% 前缀保留
13 次 decompress 全部 mode=file,块保持折叠、仅短工具结果追加 — 缓存友好,非肇因

结构性代价(不可消除):每次折叠,分歧点(首个折叠区间起点)之后的全部内容重付。这是 compress-as-anchor 的固有属性。

失效几何(该会话实测)

  • 6.5h 内 24 次折叠(≈16 分钟一次),视图 50–100K → 折剩 12–40K → 涨回 → 再折(treadmill)
  • 命中率上限(折后/折前)中位 33%,大折叠(压 50–81K)只有 18–27%
  • 全量消化型折叠(多数)分歧点固定在块区末尾 — 区间内部选哪段(尾部偏置)无意义
  • 跨轮规律:上轮保护带在本轮被消化,失效固定从上轮保护带位置开始;跨轮稳定核心只有块区(摘要堆),所有原文 1–2 轮内必然失效一次

缓存经济学(结论:折叠净赚)

三档价格模型:

价档 OpenAI 式(gpt-6-astra) Anthropic 式
fresh input(重付)
cache write 不溢价 1.25×
cache read 0.1× 0.1×
summary 生成 = 模型输出 3–5×

关键量:重付量 T = (1−命中率)×新视图V'(被折掉的 S tokens 不再计费);摘要 σ≈2–5K 按 output 价计,与缓存重付同量级。

一次性成本 ΔC = T·w + σ·p_out − (S+U)·r
每回合节省 Δs = (S−σ)·r
回本回合数 n* = ΔC/Δs

代入该会话典型折叠(V=70K, S=50K, σ=2K, T≈17K, p_out=5, r=0.1):

  • OpenAI 式(w=1): ΔC≈32.8K 单位,Δs≈4.8K/回合 → n*≈4–5 回合
  • Anthropic 式(w=1.25): n*≈5–6 回合
  • 实际折叠周期 ≈20 回合 → 净赚 3–4×

用户看到的"缓存泄露"= 命中率骤降(仪表盘观感)+ 折后首请求 prefill 延迟尖峰(一次性),不构成经济损失。

建议

  1. 观测字段(低成本,先做):event=applied 增加 firstFoldStartPct(首个折叠起点占视图位置)+ retainedPctUpperBound(折后/折前),让失效几何可从日志直读。
  2. 阈值上调(可选):compress threshold 50K → 80–100K,降低折叠打断频率与摘要输出开销(每次折叠花 σ×output 价买摘要)。经济上非必需(已净赚),是体验/成本微调。
  3. 部分晚折(备选,优先级低):只折增长区最新 S tokens,老段留作"缓存缓冲垫"推后分歧点;需 nudge 豁免概念配合,且经济收益有限,暂记不做。

关联

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions