Skip to content
预计 1 分钟右侧目录可快速定位

Context 优化是否真的有效:Cache 与 Evaluation ​

前置:长任务如何跨 Context 延续:Structured Artifacts 与 Reset
核心问题:Context cache 命中率变高并不等于系统变好,怎样证明缓存/裁剪真的改善了质量、延迟或成本?

Context Cache 不是“把 Prompt 字符串缓存起来” ​

一个 Harness 的输入通常由稳定和动态两部分组成:

text
stable prefix
- system/developer instructions
- stable Tool schemas
- stable policy text

dynamic suffix
- user turn
- current Run state
- retrieval evidence
- recent Tool results

Provider-side prompt cache 或应用层 context cache 只有在序列化前缀稳定时才有价值。Tool catalog 顺序每轮变化、每次写入 timestamp、把动态 trace id 塞进 system block,都可能让逻辑内容没变但 cache locality 消失。

Cache Key 必须包含会改变语义的版本 ​

对于应用自己维护的 Context fragment cache,至少考虑:

text
tenant / permission scope
instruction version
tool catalog version
retrieval/index version
model capability/version
locale / policy version

用户私有 evidence 不能因为 prompt 文本相同就跨 tenant 复用。Cache hit 是性能事实,不是权限证明。

优化 Context 不能只看 Token ​

假设 compaction 让输入从 40K 降到 15K。单看 token 非常漂亮,但它可能同时删掉:

  • 未完成约束;
  • 已失败 Tool 的错误事实;
  • 用户刚刚否定的方案;
  • 文件/Artifact 的 stable reference。

因此至少同时测:

text
Task success
Constraint adherence
Tool selection accuracy
Hallucinated/missing state
Input tokens
Cache hit rate
TTFT / total latency
Cost

质量下降 8% 换取 token 降低 20%,不一定是合理优化。

Ablation 才能回答“哪类 Context 真有用” ​

同一个固定 eval set,可以建立实验组:

Variant改变什么
A Full History基线
B Selective History删除低价值旧轮次
C Compact Tool Results大 Tool result 只保留结构化摘要 + artifact ref
D Dynamic Tool Exposure只暴露当前相关 Tool
E Compaction压缩较老 working history
F Fresh-context Handoff新 Context + structured handoff

一次只改变一个主要因素,才能知道性能变化来自哪里。多个策略一起打开后成功率变高,并不能证明是哪一个有效。

Cache 与 Compaction 的关系 ​

两者目标不同:

text
Cache
→ 同样内容下次更便宜/更快

Compaction
→ 让下一轮根本不再携带所有旧内容

稳定长前缀可能非常适合 cache,却仍然占 context window;compaction 可以减少 window 占用,却可能破坏原有 cache prefix。真实优化需要联合测量,而不是各自追一个局部指标。

Failure Modes ​

为了 Cache 命中把动态事实塞进错误的稳定层 ​

后果: stale state/permission 被复用。

处理: cache 只优化可安全复用的 fragment;动态 Run facts 永远按当前版本重新组装。

Ablation 只测最终文本相似度 ​

后果: Tool 选择、约束遵守等行为退化无法被发现。

处理: 任务成功 + trajectory/component metrics + token/latency 联合评价。

如何验证 ​

选 50–100 个包含 Tool、Retrieval、长历史的固定任务,运行至少两个随机重复批次;比较 full history 与各优化 variant。任何优化只有在质量指标不显著退化且成本/延迟改善时才进入默认 policy。

自测 ​

  1. 把动态 RunState 放进“稳定前缀”以提高 cache hit,会产生什么 correctness 风险?cache key 应包含哪些版本信息?
  2. Cache hit 从 30% 提到 80%,但 task success 下降。你还需要哪些 ablation/指标才能判断这次优化是否值得?

Sources ​

AI Engineering · Agent · Harness · Backend Systems