Skip to content

v1.2.0 — Fix kvCache: pass-2 reuses pass-1's cached KV (tool calls near-instant)

Latest

Choose a tag to compare

@bolajiev bolajiev released this 10 Jul 06:36

What's New

kvCache fix — tool calls should be dramatically faster

Pass-2 (the final answer after a tool call) was reprocessing the ENTIRE prompt from scratch because of two bugs:

  1. Different kvCache keys — pass-1 used key mySessionId, pass-2 used key ${mySessionId}:tools. Different keys = separate cache = pass-2 couldn't reuse pass-1's cached KV state.

  2. Different system prompts — pass-2 appended an extra instruction to the system prompt, changing the configHash (which the SDK uses for cache keying) → guaranteed cache miss.

Fix: Same kvCache key for both passes, and the extra instruction moved to a user message so the system prompt stays identical. Pass-2 now only processes the new tokens (tool result + instruction) on top of pass-1's cached state.

Client-side tool skip for tactics questions

Questions like 'Explain gegenpressing' or 'What is offside' now skip the tool schema entirely — no extra tokens, no tool-decision reasoning, no risk of accidental tool calls triggering pass-2.

Other improvements

  • Cancel inference when navigating away (no more background CPU waste)
  • Async SQLite writes (UI stays responsive after inference)
  • Elapsed time shown during prompt processing
  • Fast mode token budget capped at 512 for snappier responses