OpenCode plugin for stable, privacy-preserving prompt cache key and sticky session management.
Concept from JackDrogon/opencode-context-cache, reimplemented with auto-update and Magic Context compatibility.
OpenCode sessions can lose cache efficiency when session identifiers vary between providers, environments, or runs. This plugin standardizes cache key generation with predictable precedence and sends only a SHA256 digest upstream, so the AI provider sees a stable cache identity.
Observed result from a real run: input cache hit rate improved from a near-zero baseline to 97.99% (164736 / 168112).
npm install @jimmyyen/opencode-context-cacheAdd to your opencode.jsonc plugin array:
That's it — listed = enabled, removed = disabled. No provider options needed. The plugin auto-registers on the chat.params hook at import time.
If @cortexkit/magic-context is active, this plugin automatically switches to "Cache Locker" mode. It only writes to promptCacheKey and lets Magic Context handle the conversation_id. This ensures the plugin doesn't fight with the framework's own session management.
OPENCODE_PROMPT_CACHE_KEYenv varOPENCODE_STICKY_SESSION_IDenv var- Auto-generated
user@host:<absolute_cwd> - Existing model headers (
x-session-id,conversation_id,session_id) - OpenCode
sessionID
The key is SHA256-hashed before being sent to the server. Already-hashed values (64-char hex) are detected and passed through without re-hashing.
The plugin checks npm for a newer version on startup (once per hour, deduplicated across instances). To opt out:
export CODE_CONTEXT_CACHE_AUTOUPDATE=0export OPENCODE_CONTEXT_CACHE_DEBUG=1Logs are written to the plugin's directory (e.g., .../plugins/opencode-context-cache.log) with timestamps, PID, and key resolution details.
| Export | Type | Description |
|---|---|---|
OpenCodeContextCachePlugin (default) |
async factory | Main plugin factory |
EnhancedCachePlugin |
alias | Backward-compatible alias |
MIT. See LICENSE.
{ "$schema": "https://opencode.ai/config.json", "plugin": [ "@jimmyyen/opencode-context-cache" ] }