opencode-cache-injector
v1.0.0
Published
OpenCode plugin that enables prompt caching for multiple API providers by injecting metadata.user_id
Downloads
24
Maintainers
Readme
opencode-cache-injector
OpenCode 插件,为 Claude API 中转站启用 Prompt 缓存功能。
为什么需要
许多 Claude API 中转站要求请求中必须包含 metadata.user_id 字段才能启用 Prompt 缓存。
没有此插件:每次请求都按全价计费 💸
使用此插件:自动注入 user_id,启用缓存,节省费用 ✨
特点
- ✅ 自动生成唯一 user_id - 基于项目和会话自动生成
- ✅ 支持调试日志 - 方便排查问题
- ✅ CLI 切换工具 - 快速切换 provider
安装
pnpm install opencode-cache-injector
# 或
npm install opencode-cache-injector配置
1. 在 opencode.json 中添加插件
{
"plugin": ["opencode-cache-injector"]
}2. 设置环境变量
export OPENCODE_CACHE_PRIMARY_PROVIDER="your-provider-id"your-provider-id 是你在 opencode.json 中配置的 provider 名称。
CLI 切换工具
全局安装 CLI 工具,快速切换 provider:
npm install -g opencode-cache-switch使用:
cache-switch效果:
🔄 OpenCode Cache Injector - Provider Switch
📍 Current provider: foxcode-aws
? Select provider for cache injection:
❯ foxcode-ultra
foxcode-aws
foxcode-droid
...选择后会询问是否写入 shell 配置文件。
环境变量
| 变量名 | 说明 | 默认值 |
|--------|------|--------|
| OPENCODE_CACHE_PRIMARY_PROVIDER | Provider ID,必须设置 | 无 |
| OPENCODE_CACHE_INJECTOR_DEBUG | 启用调试日志 | false |
工作原理
插件使用 OpenCode 的 auth.loader hook,拦截指定 provider 的 API 请求,自动注入 metadata.user_id:
{
"model": "claude-...",
"messages": [...],
"metadata": {
"user_id": "user_{projectId}_account__session_{sessionId}"
}
}user_id 格式:user_{projectId}_account__session_{sessionId}
projectId:当前项目的唯一标识sessionId:当前会话的唯一标识
这样可以确保同一项目、同一会话的请求使用相同的 user_id,从而命中缓存。
注意事项
💡 关于
litellmProxy:当使用 LiteLLM 代理时,建议在 provider 配置中设置litellmProxy: true。
致谢
本插件的实现思路参考了 @x7yue 的 opencode-foxcode-aws-cache 项目。
许可证
MIT
