最近kiro复活了,根据大佬的开源项目加入了缓存,分享出来给佬们玩一下

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社...
最近kiro复活了,根据大佬的开源项目加入了缓存,分享出来给佬们玩一下
最近kiro复活了,根据大佬的开源项目加入了缓存,分享出来给佬们玩一下
本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:
  • 我的帖子已经打上 开源推广 标签:
  • 我的开源项目完整开源,无未开源部分:
  • 我的开源项目已链接认可 LINUX DO 社区:
  • 我帖子内的项目介绍,AI生成、润色内容部分已截图发出:
  • 以上选择我承诺是永久有效的,接受社区和佬友监督:

以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出


image

正文:

▎ 项目地址:GitHub - M-JYuan/kiro.rs: A Kiro Client in Rust · GitHub
▎ 镜像:myuan6/kiro-rs:latest
▎ 原项目:hank9999/kiro.rs (GitHub - hank9999/kiro.rs: A Kiro Client in Rust · GitHub)(本贴所有功能、架构、代码地基全部归原作者)

先说清楚

这是 @hank9999 (hank9999 · GitHub) 大佬 kiro.rs (GitHub - hank9999/kiro.rs: A Kiro Client in Rust · GitHub)
的二开,代码地基完全是原作者的,我只是在自用过程中加了一个比较核心的东西 —— prompt cache 支持。

为什么要加 cache

用过 Anthropic 原生 API 的应该都知道 cache_control + cache_read_input_tokens 这套机制 —— 对于长 system prompt、固定工具集、多轮对话场景,缓存命中能把 input token 算到
1/10 的价格。

但 Kiro 上游本身没有这套计费语义,所以无论你的客户端怎么打 cache_control 标记,响应里 cache_read_input_tokens 永远是 0。客户端(尤其是 Claude Code / Cline
这类)看到「永远不命中」会:

  • UI 上显示成本一直在涨,体感很差
  • 部分客户端会因此走「无 cache」的请求构造策略,反而让请求更冗余

这个 fork 加了什么

在代理层加了一个本地 cache 状态追踪器(anthropic/cache_tracker.rs),核心思路:

  1. 按凭据做前缀指纹
    对请求里 tools / system / messages 每个 block 算 SHA-256 累积前缀指纹,等于把「请求前缀」变成一个稳定可比的哈希链。

  2. 严格对齐 Anthropic 真实 TTL 语义

  • 命中不续期(Anthropic 真实 TTL 是从首次写入算的,sliding TTL 会让本地数字虚高,跟你实际省下来的钱对不上)
  • 支持 5min / 1h 两档 TTL,跟 cache_control.ttl 字段保持一致
  • 最小可缓存 token 数也按模型分(Opus 4096 / Haiku-3 2048 / 其他 1024),对齐 Anthropic 官方门槛
  1. 处理真实场景的坑
  • billing header 漂移:Claude Code 会在 system 里塞带版本号的 x-anthropic-billing-header,每次都不一样。如果直接哈希,你的 cache 永远
    miss。这里做了规范化,把这一行替换成固定占位符再算指纹
  • 多轮对话前缀延伸:第 N 轮请求会命中第 N-1 轮的 prefix,逐轮往上累积
  • tool 变更失效下游:工具定义改了,后面整个 prefix chain 全部失效,行为跟 Anthropic 原生一致
  • lookback 限制 10:不会把整个对话历史都翻一遍,避免长会话下性能爆炸
  1. 可开关 + 可配 TTL

{
“promptCacheTtlSeconds”: 300,
“promptCacheAccountingEnabled”: true
}

不想用可以一键关掉,关掉后行为退回到上游原版。

效果

客户端那边:

  • cache_read_input_tokens / cache_creation_input_tokens 字段开始有真实数字
  • Claude Code 这类客户端的成本统计 UI 终于不再「线性暴涨」
  • 多轮对话场景明显感知到「重复内容不再被反复计费」

需要强调一下:Kiro 上游计费逻辑不会变,这只是给客户端一个符合 Anthropic 语义的「账面视图」,让 UI / 客户端策略能正常工作。

顺带修的几个小问题

既然 fork 出来了,顺手把自用踩到的几个小坑也一起处理了,不展开:

  • retry 不再撞回刚失败的同一个凭据
  • 新凭据加入时不会被 LB 瞬间打爆
  • balance 缓存加周期刷新(原版实测 24h 没刷过)
  • credentialRpm: 0 真的禁用本地限流(原版的 0 反而落回默认值)

用法

docker pull myuan6/kiro-rs:latest

配置 100% 兼容上游,cache 默认开启,不想用就 promptCacheAccountingEnabled: false。

致谢

觉得好用请优先去给原项目点 star,我这边只是个人小改。有 bug 欢迎在 fork 仓库提 issue。

3 个帖子 - 3 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文