优化 Agent 推理延迟与成本、诊断首 token 变慢或缓存命中率下降时使用——KV Cache 前缀不变性原则、三条铁律、五种破坏缓存的错误上下文管理模式、Chat Template 与历史思维链回传策略、缓存作为架构约束(缓存边界、子 Agent 字节级对齐、替换字符串冻结)。
80%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./skills/kv-cache-design/SKILL.mdKV Cache 把前文 token 的键值对(K/V)缓存下来,下一轮只计算新增部分。前提是要复用的 token 前缀保持不变——若序列从某位置开始不同,首个不同 token 及其后的 KV 状态需重新计算,此前位置不受影响。跨请求的对应机制叫 Prompt Cache。一行看似无害的动态代码,可能让整条推理链路慢一个量级。
cached_tokens 命中率低reasoning_content / thinking block)的回传与跨模型轨迹迁移USER: ... ASSISTANT: ... 的根本问题是偏离训练格式,会削弱多步思考能力。[ system prompt ][ tool definitions ] 静态前缀,字节级稳定,跨请求/用户/会话缓存
[ user / assistant / tool ... ] 轨迹,只追加不修改
[ 状态栏 / 新工具 schema / 动态信息 ] 追加到末尾system、user、assistant、tool 等特殊 token 划分每条消息的边界和角色。不同模型家族(Qwen、Llama、Gemma)格式不同,服务端自动转换,开发者不需要手写,但必须知道它的存在。<think> 内的历史思考保留下来以保证多步思考连贯,但 Chat Template 检测到新的用户查询时默认「用户换了个话题」,清理之前的思考。若工具结果被错误标记为 user 消息,就会误触发清理——相当于模型正算到一半,草稿纸被人收走了。content,不回传 reasoning_content(训练时历史 CoT 从不出现在输入里)。tools,两个 user 消息之间的每条 assistant 消息(哪怕该轮未调用工具)都必须原样回传 reasoning_content,否则 API 直接返回 400。Kimi K2、GLM-5 采用同样协议。| 模式 | 后果 | 正确做法 |
|---|---|---|
| 动态系统提示词(时间戳) | 前缀从时间戳处全失效,TTFT 从 0.5s 涨到 3-5s | 时间作为 user 消息追加末尾,或需要时用工具获取 |
| 动态用户配置(余额/额度) | 每轮改写前缀,缓存全失效 | 用专门的状态管理机制按需获取 |
| 工具定义动态排序 | 从首个变动的工具起全部失效(每个工具定义可达数百 token) | 固定顺序——实验表明固定顺序对模型选工具能力几乎无影响,性能提升显著 |
| 滑动窗口历史 | 破坏前缀一致性 + 丢失关键工具结果 | 改用压缩/状态栏,见 context-compression |
| 文本格式化(USER:/ASSISTANT:) | 偏离训练格式:重复执行已完成操作、忽略工具结果、该调工具时输出文本 | 用标准结构化消息 |
Current time: {{now}}:这是最高频的错误。某团队客服 Agent 每天 10 万次对话,加了一行时间戳后首 token 延迟从 0.5 秒涨到 3-5 秒,月度推理账单几乎翻倍。chapter2/kv-cache/ — 实验 2-3:ReAct Agent 在 correct 与五种反模式(dynamic_system / shuffled_tools / dynamic_profile / sliding_window / text_format)下的 KV Cache 对比,测量 TTFT、缓存命中率与 token 用量;支持 --report 离线对比和 --cache-price-ratio 成本估算。book/chapter2.md「KV Cache 友好的上下文设计」bojieli/ai-agent-book
dbc046e
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.