opencode
opencode copied to clipboard
feat: display Google Gemini cached token stats
feat: display Google Gemini cached token stats
Closes https://github.com/anomalyco/opencode/issues/6851
What
One-line fix to read cached token counts from Google's metadata so they show up in session stats.
Why
Google returns cached token counts in a different spot than Anthropic:
- Anthropic:
usage.cachedInputTokens - Google:
providerMetadata.google.usageMetadata.cachedContentTokenCount
Implicit caching was already working server-side (and saving money), we just weren't displaying it.
The fix
- const cachedInputTokens = input.usage.cachedInputTokens ?? 0
+ const cachedInputTokens = input.usage.cachedInputTokens ??
+ (input.metadata?.["google"] as any)?.usageMetadata?.cachedContentTokenCount ?? 0
Tested
Verified locally with a couple of gemini conversations.
Future: Explicit Caching
Google has two caching modes:
- Implicit (what we're using): Automatic, server-side, probabilistic
- Explicit: Guaranteed cache hits, requires managing cache objects
For explicit caching, we'd need:
- Add
@google/generative-aidependency - Use
GoogleAICacheManagerto create/update/delete caches with TTL - Pass cache name via
providerOptions.google.cachedContent
This is a bigger lift but would give guaranteed savings. See:
- Google caching docs
- Cline's implementation for reference