Member-only story
Memory and agentic RAG #
Every agent in this series so far has been amnesiac. A new run starts with a fresh history and ends with a write to nothing. The user can mention they prefer terse explanations on Monday, and on Tuesday the agent is back to wrapping every answer in three caveats. For demos this is fine. For an assistant a user actually depends on, it is the difference between a tool and a colleague.
This post adds memory. eugene-memory
ships two complementary stores, one trait, and a small amount of glue. The headline pattern is the one the Claude Code CLI uses: each memory is a markdown file with a YAML-ish frontmatter, all files live in a directory under ~/.claude/projects/<hash>/memory/
, an entrypoint called MEMORY.md
gets loaded into the system prompt verbatim, and individual memory files surface on demand through a cheap-model selector that reads only their one-line descriptions. Around that lives a VectorStore
trait for embedding-based retrieval, with a small in-memory implementation, ready to be swapped for Qdrant or pgvector when the file-based approach hits its ceiling.
Eugene v0.8 wires both into the agent loop through two new skills: remember
and recall
. The agent decides when each is called. The pattern is what the literature calls agentic RAG: retrieval is itself a tool, not a step every turn…