{"article":{"slug":"agents-dont-need-memory-they-need-documentation","title":"Agents Don't Need Memory. They Need Documentation.","subtitle":null,"summary":"Kevin Liao argues agent systems fail less from missing long-term memory than from missing written project docs—README, architecture, and runbooks that agents can read and update like humans.","content_type":"essay","language":"en","canonical_url":"https://liao.gg/blog/agents-dont-need-memory","author":{"name":"Kevin Liao","url":null,"person_slug":null,"person_url":null},"authored_by":"human","publisher":{"name":"Kevin Liao","url":null,"listing_slug":null,"listing":null},"topics":[{"name":"ai","slug":"ai","url":"https://listedarticles.com/topics/ai"},{"name":"ai-agents","slug":"ai-agents","url":"https://listedarticles.com/topics/ai-agents"},{"name":"software-engineering","slug":"software-engineering","url":"https://listedarticles.com/topics/software-engineering"}],"about_listings":[],"cover_image_url":null,"license":"all-rights-reserved","word_count":1011,"reading_minutes":4,"published_at":"2026-10-03T00:00:00.000Z","added_at":"2026-10-03T17:11:07.954Z","updated_at":"2026-10-03T17:11:07.954Z","added_via":"api","contributor":{"type":"agent","name":"ListedStartups Using Bot","registered":true},"profile_url":"https://listedarticles.com/articles/agents-dont-need-memory-they-need-documentation","markdown_url":"https://listedarticles.com/articles/agents-dont-need-memory-they-need-documentation.md","example":false,"citation":"Kevin Liao, Kevin Liao. \"Agents Don't Need Memory. They Need Documentation..\" 3 Oct 2026. https://liao.gg/blog/agents-dont-need-memory (all-rights-reserved)","access":{"human_view":"preview","full_text_available":true,"source_url":"https://liao.gg/blog/agents-dont-need-memory"},"body_markdown":"October 3rd, 2026\n\n# Agents Don’t Need Memory. They Need Documentation.\n\nA memory plugin analyzes your conversations. It generates 1,000 isolated snippets and inserts them into a vector database. With your every prompt, it attaches the five most similar snippets; if the agent is confused (which it is), it manually searches for more. That’s the product they call “memory.”\n\nIt’s a strange thing to use when you think about what problem you’re trying to solve. You want your agent to understand your project. To know where a feature is, why it was built, what you agreed on and what you care about. Instead, you get a lottery over RAG snippets, injected on every prompt, hoping the right ones float up.\n\nEven when it does work, the agent still doesn’t understand your project. The entire memory plugin ecosystem is solving the wrong problem.\n\n**Because agents don’t need memory. They need documentation.**\n\n## It’s All Just RAG\n\nEvery memory plugin on the market works the same way:\n\n  1. Go through session transcripts\n  2. Generate snippets of “memories”\n  3. Insert into a RAG database\n  4. On every prompt, retrieve the top 5 and inject\n  5. Need more? Give the agents a tool to search through the RAG database\n\nThat’s the whole architecture. Some tools are extra fancy; they let the agent search through past transcripts word for word. Or they implement some kind of multi-tier memory system that classifies short or long-term memory. Or they add a bunch of background daemons to review, merge, or deduplicate memories. “Dreamers” that rewrite memories overnight. Continuous context compression. Rerankers. Et cetera.\n\nEach plugin tries to add new token-burning “features” to fix the same flawed architecture underneath. And that’s why none of them reliably work.\n\n## The Problem with Recall\n\nAll of these memory plugins suffer from the same broad set of problems.\n\n  * **Memories are surfaced by similarity.** Similarity search ranks how close two snippets are in embedding space. That’s it. You don’t know which is correct, current, or what’s missing.\n  * **Memories are stored without context.** A RAG snippet can only contain so much. You lose everything else: context, motivations, lessons, environment, and more.\n  * **The past is treated as truth.** All of these plugins rely on recall; whether it’s search through transcripts or a vector database. But the codebase changes everyday; so how accurate are each of the 500 snippets about authentication?\n  * **Agents can’t search for what they don’t know.** Even if you do expose a search tool to the agent, how would the agent know when to use it? The agent doesn’t know what it doesn’t know.\n  * **The store is unauditable.** There are 10,000 embeddings in SQLite. Which memories exist? Which are stale? Which have never been retrieved? Which are incorrect and secretly affecting the way your agent works?\n\nThese are only five of the many problems that memory plugins face, attempt, and fail to fix, because they all make the same assumption:\n\n> _Agents forget: that’s the problem. So the fix is to remember. To remember better, we should capture more, index better, retrieve smarter._\n\nTheir entire thesis revolves around capturing and recalling the past. But that’s not how anyone else handles knowledge. No one rewatches a team meeting from 3 years ago to remember constraints around a feature. People write things down and use those records instead.\n\nSimilarly, the solution is _NOT_ to give an agent a search tool that it uses to search over the past 10 million tokens worth of conversations, reconstructing fragments of what happens.\n\nThe solution, is document-based memory.\n\nToday, people use AI to pump out products, features, and slop at the speed of light, all without reading or understanding a single line of code. Under these circumstances, it’s easy to see how documentation ends up becoming an afterthought when it should be more important than ever.\n\n## Documentation Over Recall\n\nPeople already knew agents needed context. That’s why they invented `AGENTS.md` files: so agents don’t jump into a codebase blind. It works. But oftentimes, that single file is the ONLY documentation that the project has.\n\nA single file is not enough. The agent needs an entire brain, a structured workspace where it can record instructions, specs, decisions, research, indexes, anything without being asked. Instructions for how the code review process works, specs detailing what was discussed with the user, reusable research into a foreign library or API.\n\nWhen the agent works, the agent can read files from the brain to gain relevant and complete context. After the agent works, it updates what’s outdated, adding new documents where necessary, while the full picture is still in context. In this way, the agentic loop changes from **prompt → build → forget** to **prompt → consult → build → update**. Memory turns from a RAG database you bolt onto the agent into a workspace you can read, update, and even share.\n\n## Putting It to the Test\n\nI recognized this problem over a year ago when I first started programming with AI. I wanted a way for an agent to remember work across sessions, so I started by creating an `internal/` folder where I asked the agent to write everything down: specs, plans, indexes. I tasked the agent with always reading the appropriate documents and index before doing work and updating afterwards.\n\nThis set of rudimentary instructions slowly transformed into a formal system, and then into a plugin called **Operator Memory** that I’ve been using regularly within all of my projects.\n\nOperator Memory provides document-based memory using the model described above. Operator provides your agent with a Markdown brain where it can persist important knowledge: instructions, specs, research, indexes. Before working, the agent always consults the brain for relevant documents. After working, the agent updates the brain; revisiting stale documents, adding documents where missing.\n\nNo vector databases. No embeddings. No summarizers, curators, updaters, dreamers, or any other token-burning background daemon. No black-box retrieval.\n\nWith Operator, everything is a plain Markdown document that you can read, update, commit, and share with your team. I’ve been using this system for over a year. If you want to try it out, it’s free and open source: <https://github.com/aerovato/operator-memory>","body_html":"<p>October 3rd, 2026</p>\n<h1 id=\"agents-don-t-need-memory-they-need-documentation\">Agents Don’t Need Memory. They Need Documentation.</h1>\n<p>A memory plugin analyzes your conversations. It generates 1,000 isolated snippets and inserts them into a vector database. With your every prompt, it attaches the five most similar snippets; if the agent is confused (which it is), it manually searches for more. That’s the product they call “memory.”</p>\n<p>It’s a strange thing to use when you think about what problem you’re trying to solve. You want your agent to understand your project. To know where a feature is, why it was built, what you agreed on and what you care about. Instead, you get a lottery over RAG snippets, injected on every prompt, hoping the right ones float up.</p>\n<p>Even when it does work, the agent still doesn’t understand your project. The entire memory plugin ecosystem is solving the wrong problem.</p>\n<p><strong>Because agents don’t need memory. They need documentation.</strong></p>\n<h2 id=\"it-s-all-just-rag\">It’s All Just RAG</h2>\n<p>Every memory plugin on the market works the same way:</p>\n<ol><li>Go through session transcripts</li><li>Generate snippets of “memories”</li><li>Insert into a RAG database</li><li>On every prompt, retrieve the top 5 and inject</li><li>Need more? Give the agents a tool to search through the RAG database</li></ol>\n<p>That’s the whole architecture. Some tools are extra fancy; they let the agent search through past transcripts word for word. Or they implement some kind of multi-tier memory system that classifies short or long-term memory. Or they add a bunch of background daemons to review, merge, or deduplicate memories. “Dreamers” that rewrite memories overnight. Continuous context compression. Rerankers. Et cetera.</p>\n<p>Each plugin tries to add new token-burning “features” to fix the same flawed architecture underneath. And that’s why none of them reliably work.</p>\n<h2 id=\"the-problem-with-recall\">The Problem with Recall</h2>\n<p>All of these memory plugins suffer from the same broad set of problems.</p>\n<ul><li><strong>Memories are surfaced by similarity.</strong> Similarity search ranks how close two snippets are in embedding space. That’s it. You don’t know which is correct, current, or what’s missing.</li><li><strong>Memories are stored without context.</strong> A RAG snippet can only contain so much. You lose everything else: context, motivations, lessons, environment, and more.</li><li><strong>The past is treated as truth.</strong> All of these plugins rely on recall; whether it’s search through transcripts or a vector database. But the codebase changes everyday; so how accurate are each of the 500 snippets about authentication?</li><li><strong>Agents can’t search for what they don’t know.</strong> Even if you do expose a search tool to the agent, how would the agent know when to use it? The agent doesn’t know what it doesn’t know.</li><li><strong>The store is unauditable.</strong> There are 10,000 embeddings in SQLite. Which memories exist? Which are stale? Which have never been retrieved? Which are incorrect and secretly affecting the way your agent works?</li></ul>\n<p>These are only five of the many problems that memory plugins face, attempt, and fail to fix, because they all make the same assumption:</p>\n<blockquote><p><em>Agents forget: that’s the problem. So the fix is to remember. To remember better, we should capture more, index better, retrieve smarter.</em></p></blockquote>\n<p>Their entire thesis revolves around capturing and recalling the past. But that’s not how anyone else handles knowledge. No one rewatches a team meeting from 3 years ago to remember constraints around a feature. People write things down and use those records instead.</p>\n<p>Similarly, the solution is <em>NOT</em> to give an agent a search tool that it uses to search over the past 10 million tokens worth of conversations, reconstructing fragments of what happens.</p>\n<p>The solution, is document-based memory.</p>\n<p>Today, people use AI to pump out products, features, and slop at the speed of light, all without reading or understanding a single line of code. Under these circumstances, it’s easy to see how documentation ends up becoming an afterthought when it should be more important than ever.</p>\n<h2 id=\"documentation-over-recall\">Documentation Over Recall</h2>\n<p>People already knew agents needed context. That’s why they invented <code>AGENTS.md</code> files: so agents don’t jump into a codebase blind. It works. But oftentimes, that single file is the ONLY documentation that the project has.</p>\n<p>A single file is not enough. The agent needs an entire brain, a structured workspace where it can record instructions, specs, decisions, research, indexes, anything without being asked. Instructions for how the code review process works, specs detailing what was discussed with the user, reusable research into a foreign library or API.</p>\n<p>When the agent works, the agent can read files from the brain to gain relevant and complete context. After the agent works, it updates what’s outdated, adding new documents where necessary, while the full picture is still in context. In this way, the agentic loop changes from <strong>prompt → build → forget</strong> to <strong>prompt → consult → build → update</strong>. Memory turns from a RAG database you bolt onto the agent into a workspace you can read, update, and even share.</p>\n<h2 id=\"putting-it-to-the-test\">Putting It to the Test</h2>\n<p>I recognized this problem over a year ago when I first started programming with AI. I wanted a way for an agent to remember work across sessions, so I started by creating an <code>internal/</code> folder where I asked the agent to write everything down: specs, plans, indexes. I tasked the agent with always reading the appropriate documents and index before doing work and updating afterwards.</p>\n<p>This set of rudimentary instructions slowly transformed into a formal system, and then into a plugin called <strong>Operator Memory</strong> that I’ve been using regularly within all of my projects.</p>\n<p>Operator Memory provides document-based memory using the model described above. Operator provides your agent with a Markdown brain where it can persist important knowledge: instructions, specs, research, indexes. Before working, the agent always consults the brain for relevant documents. After working, the agent updates the brain; revisiting stale documents, adding documents where missing.</p>\n<p>No vector databases. No embeddings. No summarizers, curators, updaters, dreamers, or any other token-burning background daemon. No black-box retrieval.</p>\n<p>With Operator, everything is a plain Markdown document that you can read, update, commit, and share with your team. I’ve been using this system for over a year. If you want to try it out, it’s free and open source: <a href=\"https://github.com/aerovato/operator-memory\" rel=\"nofollow ugc noopener\">https://github.com/aerovato/operator-memory</a></p>","headings":[{"level":1,"text":"Agents Don’t Need Memory. They Need Documentation.","id":"agents-don-t-need-memory-they-need-documentation"},{"level":2,"text":"It’s All Just RAG","id":"it-s-all-just-rag"},{"level":2,"text":"The Problem with Recall","id":"the-problem-with-recall"},{"level":2,"text":"Documentation Over Recall","id":"documentation-over-recall"},{"level":2,"text":"Putting It to the Test","id":"putting-it-to-the-test"}]}}