📖 为什么需要缓存?
世界上有一种浪费叫"重复计算"——同一个问题问十遍,AI 就老实算十遍,你付十遍的钱。3分37秒,一个 Agent 处理了100条消息,其中32条是相似问题。32次重复调用,32份冤枉钱。
响应缓存就是给 Agent 装上"记忆力":
- 精确缓存 - 一模一样的问题,直接返回上次答案
- 语义缓存 - 意思相近的问题,也能命中缓存
- 部分缓存 - 长对话中重复的部分,只算增量
🏆 缓存类型对比
🎯 精确缓存
Hash 匹配,零误差。命中率高时效果极佳。
命中率:10-30%
延迟:1-5ms
适合:FAQ、模板问答
🧠 语义缓存
Embedding 相似度匹配,灵活命中。
命中率:30-60%
延迟:20-50ms
适合:客服、咨询、搜索
📦 Prompt 缓存
系统 Prompt + 历史消息缓存,减少 Token。
节省:40-70% Token
延迟:无额外延迟
适合:长对话、固定 Prompt
⚡ 快速配置
# ~/.openclaw/config.yaml
cache:
# 精确缓存
exact:
enabled: true
backend: redis
host: localhost
port: 6379
ttl: 3600 # 1小时
keyPrefix: "oc:exact:"
# 语义缓存
semantic:
enabled: true
backend: redis
similarityThreshold: 0.92 # 相似度阈值
embeddingModel: text-embedding-3-small
ttl: 7200 # 2小时
keyPrefix: "oc:semantic:"
maxResults: 5
# Anthropic Prompt 缓存
promptCache:
enabled: true
# 利用 Anthropic 原生缓存
# 相同前缀的 Prompt 只算一次
🔧 Skills 集成
# 缓存 Skill 配置
skills:
- id: response-cache
name: 智能响应缓存
config:
# 缓存策略
strategy: semantic # exact | semantic | hybrid
# 语义缓存参数
embedding:
provider: openai
model: text-embedding-3-small
# TTL 策略
ttlRules:
- pattern: "FAQ|常见问题"
ttl: 86400 # 24小时
- pattern: "新闻|热点"
ttl: 600 # 10分钟
- pattern: ".*"
ttl: 3600 # 默认1小时
# 缓存失效
invalidation:
onToolCall: true # 工具调用后失效
onContextChange: true # 上下文变化时失效
代码示例
// 带缓存的 Agent 调用
const response = await agent.chat({
message: "什么是 OpenClaw?",
cache: {
enabled: true,
strategy: "semantic",
ttl: 3600,
tags: ["openclaw", "intro"] // 缓存标签
}
});
// 手动管理缓存
await agent.cache.set("faq:openclaw-intro", response, {
ttl: 86400,
tags: ["faq", "openclaw"]
});
// 按标签失效
await agent.cache.invalidateByTag("openclaw");
💡 最佳实践
✅ 缓存策略选择
| 场景 | 推荐策略 | 预估节省 |
|---|---|---|
| 客服 FAQ | 语义缓存 | 50-70% |
| 代码生成 | 精确缓存(短 TTL) | 10-20% |
| 内容翻译 | 精确缓存(长 TTL) | 40-60% |
| 数据分析 | 不推荐缓存 | N/A |
| 实时资讯 | 语义缓存(短 TTL) | 20-30% |
⚠️ 注意事项
- 时效性 - 新闻、价格等实时内容不要长缓存
- 一致性 - 工具调用结果可能变化,缓存需失效
- 隐私 - 用户私人数据不要缓存到共享存储
- 阈值调优 - 语义缓存阈值太低会返回错误答案
📊 成本节约估算
# 假设:每天 10,000 次 API 调用
# 平均每次调用 $0.003 (GPT-4o-mini)
# 语义缓存命中率 40%
无缓存成本 = 10,000 × $0.003 = $30/天
缓存命中 = 4,000 次免计算
实际成本 = 6,000 × $0.003 = $18/天
每日节省 = $12
每月节省 = $360
每年节省 = $4,380 🎉
# 加上响应速度提升(50ms → 5ms)
# 用户体验提升 + 并发能力提升