背景
用户反馈(日志 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(重付) |
1× |
1× |
| 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 延迟尖峰(一次性),不构成经济损失。
建议
- 观测字段(低成本,先做):
event=applied 增加 firstFoldStartPct(首个折叠起点占视图位置)+ retainedPctUpperBound(折后/折前),让失效几何可从日志直读。
- 阈值上调(可选):compress threshold 50K → 80–100K,降低折叠打断频率与摘要输出开销(每次折叠花 σ×output 价买摘要)。经济上非必需(已净赚),是体验/成本微调。
- 部分晚折(备选,优先级低):只折增长区最新 S tokens,老段留作"缓存缓冲垫"推后分歧点;需 nudge 豁免概念配合,且经济收益有限,暂记不做。
关联
背景
用户反馈(日志
acp (3).log,sid01a089aa-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):src/tag-tokens.tsstableTagTokens,#171)结构性代价(不可消除):每次折叠,分歧点(首个折叠区间起点)之后的全部内容重付。这是 compress-as-anchor 的固有属性。
失效几何(该会话实测)
缓存经济学(结论:折叠净赚)
三档价格模型:
关键量:重付量
T = (1−命中率)×新视图V'(被折掉的 S tokens 不再计费);摘要 σ≈2–5K 按 output 价计,与缓存重付同量级。代入该会话典型折叠(V=70K, S=50K, σ=2K, T≈17K, p_out=5, r=0.1):
用户看到的"缓存泄露"= 命中率骤降(仪表盘观感)+ 折后首请求 prefill 延迟尖峰(一次性),不构成经济损失。
建议
event=applied增加firstFoldStartPct(首个折叠起点占视图位置)+retainedPctUpperBound(折后/折前),让失效几何可从日志直读。关联
~/tmp/probe-cache-fold.mjs