Memory is not search
Search retrieves something you already know how to ask for. Good agenet memory has a harder job: it should surface useful context before you know the exact words, files, or concepts that matter.
If you ask for [[John Smith]], grep finds notes that mention him. A vector database can find passages semantically close to the phrase “John Smith.” But the useful memory might be a strategy note that never names John at all: a repeated concern in user interviews, a decision log about a product constraint, or an old journal entry where the same underlying question first appeared.
Enzyme brings the agent into the conceptual neighborhood that matters in the moment.
Three different jobs
| Approach | Good at | Misses |
|---|---|---|
| Keyword search | Exact names, tags, file paths, quoted language | Ideas that changed names or never used the query words |
| Vector search | Passages that are semantically close to the prompt | Long-range connections that require knowing the workspace’s history |
| Enzyme catalysts | Source-grounded associative retrieval over the artifact trail | Requires an existing corpus with enough structure to learn from |
Enzyme does not replace search. Rather, it gives the agent a better way to decide what is worth searching around.
The [[John Smith]] example
Imagine a workspace where [[John Smith]] appears in three meeting notes. A normal search returns those three files. Useful, but narrow.
Enzyme sees more structure:
[[John Smith]]was active during a two-week burst.- Those notes share tags with
#sales-processand#trust. - A decision log from the same week changed the onboarding promise.
- A later user interview never mentions John, but repeats the same trust concern.
A catalyst generated from that trail might ask:
“Where did the sales process start promising certainty before the product could support it?”
Now the agent can retrieve John’s notes, the onboarding decision, and the later interview together. The value is not that the catalyst “knows John.” The value is that it found the underlying question John’s notes were part of.
Why catalysts are questions
Summaries freeze a conclusion. Questions keep retrieval alive.
A summary says:
John was involved in sales process changes.
A catalyst asks:
“What changed in the sales process when trust became the central objection?”
The question can keep finding new evidence as the workspace grows. When a fresh session note lands, enzyme refresh indexes it against the existing catalyst space. If the note resonates with the question, it can surface next time even if it uses different words.
What the agent does with this
A good agent should not dump catalyst text into the answer. It should use catalysts as probes:
- Run
enzyme petrito see active entities and current catalyst vocabulary. - Compose a
catalyzequery from the user’s prompt plus relevant catalyst language. - Read the returned files and explain why they matter.
- Write a compact session note or decision log if the conversation creates durable memory.
- Run or schedule refresh so the new artifact becomes retrievable later.
That loop is the difference between memory as a backend feature and memory as a maintained artifact system. The agent is not just fetching facts. It is navigating a source-grounded trail of what has mattered, changed, and recurred.
When search is enough
You should instruct your agent to use grep, ripgrep, or your editor when you need an exact reference. And to use vector search when you want semantically similar passages. But your agent should know to use Enzyme when the question depends on accumulated structure: projects, people, decisions, logs, time, and the connections between them.
Memory is not search. Search answers the words you supplied. Memory helps the agent notice which words, files, and questions should be in the room.