sapix technical notes
← all notes

May 26, 2026

Knowing when to recall is the hard part

A memory you only retrieve when you already know to ask for it is barely a memory. So the trigger moved to the one place every tool call passes through.

The first version of Sapix could remember and could recall. It just never recalled on its own. I had to ask. And a memory that only shows up when you already know to reach for it is doing almost none of the work a memory is for. The whole point is that the right thing comes back when you would not have thought to look.

So the trigger had to move out of the conversation, where it depends on me noticing, and down into a layer that can watch quietly and speak when it should.

Every tool call passes through one place: the boundary between the assistant and Sapix, in practice the MCP layer. That is where the watching lives now. On the first call of a session it injects a brief of what matters today. Every so often, a checkpoint that asks the assistant to take stock. And when the conversation touches something linked to what Sapix already holds, it surfaces that link, unprompted.

I put it at the boundary instead of in a hook for one particular tool because of reach. A hook works in one client. The boundary works for every client that speaks the same protocol, with no extra wiring. Fix it once, everyone inherits it.

The real lesson is the same one as the intelligence-wall note: the model already knows how to use a memory once it has one. What it was missing was the instinct for when to go looking. That instinct is most of the game.

Honest caveat, since this is a field note and not a brochure: surfacing too much is its own failure. Some things connect to almost everything, and if Sapix pipes up every time one of them appears, the signal drowns in noise. The fix is salience, learning to quiet the connections too common to mean anything. I am still tuning that one, and it will get its own note.