opencode icon indicating copy to clipboard operation
opencode copied to clipboard

feat: display Google Gemini cached token stats

Open thisisryanswift opened this issue 1 week ago • 8 comments

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:

  1. Add @google/generative-ai dependency
  2. Use GoogleAICacheManager to create/update/delete caches with TTL
  3. Pass cache name via providerOptions.google.cachedContent

This is a bigger lift but would give guaranteed savings. See:

thisisryanswift avatar Jan 04 '26 20:01 thisisryanswift