pi-kiro-cache-key
v1.0.1
Published
pi extension: inject metadata.user_id so Anthropic-compatible proxies honor prompt caching
Downloads
367
Maintainers
Readme
pi-kiro-cache-key
给 pi 的扩展:为 Anthropic 兼容反代补上 metadata.user_id,让 prompt caching 生效。
为什么需要
部分 Anthropic 兼容反代(如 kiro 系)拿 metadata.user_id 当 prompt cache 的 key。缺这个字段,反代就无视 cache_control,每轮对话全量重算整个 prompt。pi 只在 options.metadata.user_id 有值时才发这个字段,而它默认没有赋值来源,所以缓存一直不命中。
实测(93k token 上下文):
修复前 input=93,207 cacheWrite=0 cacheRead=0
修复后 input=0 cacheWrite=37,411 cacheRead=0 ← 第 1 轮建缓存
input=0 cacheWrite=14 cacheRead=37,413 ← 第 2 轮命中安装
pi install npm:pi-kiro-cache-key或直接从 git 装(不经 npm):
pi install git:github.com/zhengziyi0117/pi-kiro-cache-key想先试不装:
pi -e git:github.com/zhengziyi0117/pi-kiro-cache-key装完在 pi 里 /reload,或重启 pi。
配置
默认只对 provider 名为 kiro 的请求生效。改 extensions/kiro-cache-key.ts 里这一行,可填多个:
const PROVIDERS = new Set(["kiro"]);provider 名就是 ~/.pi/agent/models.json 里 providers 下的键名。
生效确认
footer 会多出 R(cacheRead)、W(cacheWrite)、CH(命中率)三项:
↑876k ↓2.1k R37.4k W14 CH99.9% 9.3%/1.0M说明
user_id格式照抄 Claude Code 实际发出的内容:{"device_id":"...","account_uuid":"","session_id":"..."}。session_id用 pi 自己的 session id,所以缓存是会话级的 —— 会话内多轮命中,换会话重建。Claude Code 行为一致。device_id是 hostname 的 sha256,不含任何凭证。- payload 里已有
metadata.user_id时不覆盖。
License
MIT
