AI 见闻
精选· 重要性 3/5

Claude-thermos:保持Claude会话缓存温暖,节省约20%费用

Hacker News (AI)··s0ck_r4w·约 4 分钟阅读
社区热度 109
中文导读

Claude-thermos是一个轻量级工具,通过在子代理运行时自动刷新主代理的提示缓存,避免因缓存过期导致的高昂重编码费用,实测可节省约22%的账单。

停止为重建Claude Code缓存付费。当您的主智能体等待子智能体超过5分钟时,其提示缓存会悄然过期,下一轮对话将以写入速率重新编码整个对话,而不是以低价从缓存读取。在涉及多个子智能体的长会话中,这大约占您账单的20%。

claude-thermos 保持缓存温暖,让您永远不必支付这笔额外费用。像平常一样运行Claude Code,但通过 claude-thermos 和 uvx:uvx claude-thermos # 代替:

claudeuvx claude-thermos -p "修复bug" # 任何claude参数直接传递需要Python 3.11+ 以及 PATH 中的 claude CLI。仅此而已。预热在后台自动运行。

要禁用它而不更改命令,设置 CLAUDE_WARMER_DISABLE=1。调优(全部可选):Claude Code的提示缓存使用5分钟TTL。每次对话,只要缓存存活,整个对话历史就会以输入价格的0.1倍从缓存提供,而不是以全价重新发送。

如果同一前缀的请求间隔超过5分钟,缓存就会过期。造成这种间隔的主要触发因素不是您的思考时间,而是主智能体被运行超过5分钟的子智能体阻塞。子智能体有不同的系统提示词和工具集,因此其请求有不同的缓存前缀,永远不会刷新主智能体的缓存。

当子智能体工作时,主智能体的缓存历史未被触及;超过5分钟就消失了。

当子智能体返回时,主智能体恢复一个字节相同、仅追加的历史记录,却发现缓存丢失,被迫以1.25倍的写入速率进行完全重编码。此时历史记录已经很大,因此重编码代价高昂:单次重写20万到50万token。

在大约185个本地会话中测量,这些重建占总账单的约22%,这些钱花在了重新编码刚刚缓存过的内容上。claude-thermos 在一个小型本地反向代理后启动Claude Code(它将 ANTHROPIC_BASE_URL 指向一个回环端口;

所有流量仍然流向真正的Anthropic API)。- 观察。代理监控 /v1/messages 流量,并将其分组为会话和谱系(lineage),一个谱系对应一个缓存前缀,由模型+工具集+系统文本键控。

第一个带有工具的谱系是主智能体;其余是子智能体。- 检测危险窗口。当主谱系空闲且子智能体正在运行时,主前缀有过期风险。- 预热。在5分钟TTL内的间隔,它将主智能体的最后一个真实请求作为预热请求重放:相同的可缓存前缀,但 max_tokens: 1 且不流式传输。

单个token被丢弃;重点是预填充,它读取并刷新完整的缓存前缀。预热请求直接发送到API,从不经过代理,因此不会干扰真实流量。- 结果。当子智能体完成时,主智能体的缓存仍然温暖。

它支付廉价的读取而不是完全重写。每次预热花费一次缓存读取(0.1倍);它阻止的每次重写本应花费一次写入(1.25倍)在更大的前缀上,因此这笔交易对您非常有利。

每个会话写入:~/.claude-thermos/logs/<session_id>/├── events.jsonl # 仅追加的结构化事件流└── summary.json # 汇总总数,

在会话结束时写入events.jsonl 记录每个请求/响应的token使用情况以及每个预热决策(warm_fired,warm_result,cap_reached,resume_detected 等)。

summary.json 是您通常读取的汇总:所有三个成本数字均以基础输入token单位(token计数已按其缓存乘数加权)。

要将 net_savings 转换为美元,乘以您模型每个输入token的价格:节省的美元 ≈ net_savings × (输入token价格)例如,输入价格为每百万token 3美元,net_savings 为1,200,000,则约为1,200,

000 × 3 / 1,000,000 = 3.60美元,该会话节省了这么多。

原文出处
Show HN: Claude-thermos keeps your Claude session warm for you

本文为机器翻译辅以 AI 润色,仅供参考。原始事实以原文为准。

相关阅读