KDCube
← Our Journal

The chat widget grew a search feature over the whole conversation realm: what you said, what the assistant answered, and the working summaries it keeps per turn. One engine serves both readers — the agent recalling mid-turn and you looking for that answer from three weeks ago.

TWO READERS, ONE ENGINE You, in the chat sidebar search box WHERE ∩ WHEN ∩ WHAT KIND rank sliders (semantic · lexical · recency, 0–2) runs on Search, then jump back One search engine your conversations only — always candidates: scope ∩ time ∩ kinds three arms: semantic · lexical · trigram → RRF fusion + recency turn-level snippets, labeled by role The agent, mid-turn recall while it works react.memsearch conv: named service "what did we decide in May" is one search away Search recall Same candidates, same ranking, same identity boundary for both readers; the sliders at 1.0 rank exactly as the engine does on its own. A blank query with a date range flips to a chronological browse of that window.
Two readers, one engine: your search box and the agent's recall run the same candidates, ranking, and identity boundary.

You state the question before anything runs

Typing filters chat titles instantly and locally — that costs nothing. A deep search over message content runs only when you press Search, and the settings panel lets you shape it first as an intersection of three prerequisites:

  • WHERE — this chat or all your chats.
  • WHEN — any time, last 7/30/90 days, or an exact date range.
  • WHAT KIND — your messages, the assistant's answers, its working summaries; each an opt-in chip.

Rank sliders, with the math on a card

Under the hood a query runs three retrieval arms — semantic (finds paraphrases), lexical (nails exact words, names, codes), recency (lifts what you worked on lately) — fused by reciprocal-rank fusion. The new part: three sliders (0–2) put those arms in your hands. Looking for an error string verbatim? Push lexical. Sure it was this week? Push recency. At the default 1.0 each, results are exactly what the server would rank on its own. The ⓘ next to the sliders opens a short lesson: what each arm is good at, and the fusion worked through on a three-turn example — so the knobs are understood, never mystical.

When you remember when, but not what

Leave the query blank, set a date range, press Search: the widget switches to a chronological browse of everything in that window, newest first. "What was I doing the week before the release?" is now one gesture.

Snippets that say who said it — and a door back

Results group by conversation; every snippet is its own card with a role chip — you, assistant, or summary — so a match in the agent's working summary is labeled as exactly that, never dressed up as a reply. Each card shows its place ("turn 4 of 31"), the full timestamp, and a quiet relevance bar; sort flips between relevance and time. And every card has Bring me here: the conversation opens in the same chat view, scrolls to that exact turn, and flashes it briefly. Search that ends where the memory actually lives.

The searched user is always the signed-in user — the boundary is the session, on every request.