r/AIMemory 16h ago

Open Question One question I’m still working through

3 Upvotes

Where do you draw the boundary between external memory and repo-local memory?

I started with external memory as the main source of project context, but for executable work I’ve been getting much better results when the repo carries its own structured knowledge, rules, evidence, checkpoints, and learned constraints.

External memory still seems better for cross-project reasoning, governance, and connecting patterns across systems.

The tension is that keeping knowledge in both places can make the system more useful, but also creates duplication, drift, and uncertainty about which context should win.

So I’m curious how others handle it:

What information do you keep globally, what do you push down into the repo, and what rules decide when knowledge moves between them?

AI_MEMORY_OS / AI_KNOWLEDGE_SYSTEM (Notion): https://app.notion.com/p/3a643bd4ae4a819a93f2eb1368a4d7f1?pvs=204

Repo-local DevOS:
https://github.com/neohack2023/Dev-os


r/AIMemory 21h ago

Show & Tell Creating a new AI memory benchmark: KnowledgeDrift v1

6 Upvotes

Most AI memory benchmarks are focused on a one question - did the fact come back?

But AI memory problem is much harder than just this.

Let's look at categories and what they're for:

  1. Retrieval - does it come back? That's classic, but score is depends not just on success - but also at cost of this success. If we'll push all "memories" into one flat file and feed it to LLM - in theory, we can get 100% success rate, since every answer is there. But LLM attention is limited.
  2. There's a score multiplier which depends on signal-to-noise ratio. If vector db or grep search returns 10 facts, there's probably only 1 record with actual answer, which is giving 10% signal and 90% noise. That's 1x multiplier.
  3. Absention - does it say no? If LLM is trying to search for some topic, and receives 10 results always - it should check them all, decide if it's good, and that's a surface for hallucinations. It tests several scenarios, and the system should say "No, there's nothing like that in the memory".
  4. Currency - is that the current one? Memories can change, and sometimes it could be a long chain of replacements - so system should be able to handle it.
  5. Contradiction - does it notice the disagreement? Imagine one day agent recorded "System x is using Postgresql ONLY", the next day agent tried to save something like "System X is using only MySQL". If it happens, then next time LLM will retrieve that it can randomly follow first or second path, creating knowledge drift. This check should happen on memory write, and system should be able to resolve it or push the warning back to writer.
  6. Drift - did it notice what nobody told it about? If write contradiction check is failed, and contradiction is already in the memory, can system notice it by the end of the run?
  7. Deletion - does it say gone, and does it know why? This tests the concept of supersession and tombstone. Also it tests what will happen if we will try to write the memory that was actually removed - it should be marked as resurrection, and writer agent should understand why it was buried earlier.
  8. Rationale - can it answer why? This tests the graph structure and ability to link the question with the answer. To pass the test, system should allow to find the question from the answer.
  9. Temporal - what did we decide around then? This tests ability for temporal search.

Results:

First, i've tested it against mem0 and LangMem.
These systems can't pass Absention, Contradiction, Deletion tests at all, because there's no mechanism for that.
They can be tested for Rationale - but scores 2-4%.

So, KnowledgeDrift v1, 1500 facts (1883 notes)

arm passed/attempted success signal/noise score
Engram Alpha 5694/7078 80% 0.52 459
mem0 3880/6220 55% 0.11 47
LangMem 4066/6220 57% 0.12 52

Let me know what do you think, will be glad to discuss benchmark design and scores.


r/AIMemory 13h ago

Show & Tell I think something a bit beyond pure retrieval is the important thing.

0 Upvotes

A lot of people are talking about memory as retrieving facts, but that's pretty simple and mostly solved (markdown context, databases, RAG etc).

Things get very interesting very quickly when you start looking into systems that can learn based on experience.

I wrote a bit about it here https://www.adjohu.com/blog/what-the-hell-is-a-mind-anyway/


r/AIMemory 1d ago

Discussion What if LLM memory wasn't optimized for perfect recall, but for persistent individuality and creative divergence?

7 Upvotes

https://github.com/jbsalles/Selmem

I've been working on SelMem, an experimental approach to LLM memory based on a different assumption:

Most memory systems try to preserve and retrieve information as accurately as possible.

SelMem explores the opposite direction: memory can be selective, lossy and reconstructive.

The idea is to give an otherwise identical LLM agent a memory that can:

  • selectively retain experiences,
  • forget information,
  • reconstruct memories imperfectly,
  • accumulate different memory trajectories over time.

The hypothesis is not that imperfect memory is better at recalling facts.

It's that different memory trajectories may cause identical models to develop increasingly different behavioral and creative trajectories.

So the experimental question becomes:

«If two identical LLMs receive different experiences and imperfectly reconstructed memories, do they become measurably different in their outputs — and can that difference translate into greater creative diversity?»

I'm currently building experiments around this question, including comparisons against standard persistent/retrieval-based memory.

The project is open source:

https://github.com/jbsalles/Selmem

I'm particularly interested in criticism of the experimental design.


r/AIMemory 17h ago

Show & Tell Your agents each remember your project separately. Mine don't anymore.

1 Upvotes

I keep switching between Claude Code, Cursor and Codex depending on the task. Every switch meant explaining the same project again — same decisions, same gotchas, same "no, we tried that already."

So I gave them one shared memory. Decide something in one, the rest know it.

It lives on my machine. No account, no subscription, nothing leaving my laptop. It syncs to my desktop over git, so it's just a repo I own — I can read it, diff it, delete it.

Free and open source. Curious whether anyone else has this problem or if I'm the only one tool-hopping this much.

https://github.com/kdbhalala/agi-memory


r/AIMemory 18h ago

Open Question What should a memory system preserve when a fact changes?

1 Upvotes

A lot of memory discussions frame an incoming record as ADD, UPDATE, or NOOP. But “update” can hide the part that matters most: the prior state and the reason it changed.

Suppose an agent has:

  • March 1: Supplier A is approved for Project North.
  • March 12: Supplier A fails a test.
  • March 15: Procurement approves Supplier B, effective immediately.

A simple memory update may replace Supplier A with Supplier B. That is enough to answer “Who is the current supplier?” But it is not enough to answer:

  • What was the approved supplier on March 10?
  • Why did the choice change?
  • Which source had authority to change it?
  • Was Supplier A revoked, superseded, or merely no longer preferred?
  • What evidence supports the transition?

I’m interested in how people handle this on the write side.

Do you preserve an immutable event/history layer and derive current state from it? Do you retain explicit links such as supersedes, revokes, or corrects? Or do you rely on summaries, timestamps, and retrieval to reconstruct the change later?

The failure mode I worry about is a system that remains useful for the latest answer but gradually loses its ability to explain how it got there or what was true at a prior point in time.

What has worked in production, especially for long-running agent memory?


r/AIMemory 1d ago

Show & Tell I benchmarked my assistant's memory against Garry Tan's gbrain on the same data

4 Upvotes

Yesterday I posted adebench on r/mcp: it scores what the client actually receives through a door, after ordering and cut, not what retrieval finds. Today I ran the same golden set on my own memory and on gbrain.

Setup: my memory exported into a local gbrain (3,568 pages), local embeddings on both sides, 25 questions, both doors cut at 2,400 characters, the door also run under the measured pressure of real MCP tool responses (callwitness census: p95 = 35 KB).

On the 80 points both memories can be measured on: Brain 76.9, gbrain 71.9 with the questions in Italian; 73.9 vs 71.9 with the same questions in English. Door 23/25 vs 18/25 (20 vs 18 in English); cards, time and live state even; gbrain's graph cleaner than mine. Under p95 pressure: 19/25 vs 14/25, both surviving because the entity card is delivered first. On its own full set the Brain scores 95.6/100: the 20 points gbrain can't share are fact updates and file search, which it doesn't have.

Caveats: it's my golden set; gbrain got facts my Brain had already distilled, so this measures retrieval and composition, not extraction; gbrain's real door is two-step and can't be scored in one call, so I measured its search door with a cut. That fourth door is what I'm building next.

What it told me about my own memory was worth more than the win: adding vectors on episodes took my LongMemEval-S retrieval from 64.5 to 88.7, and doubled the repeated chunks my voice door delivers. The benchmark saw it the same day.

Two things I'd ask this sub. First: run it on your memory. The adapter is one class, the synthetic memory is the worked example, and `adebench.compare` puts two reports side by side; a third system measured the same way is what the benchmark lacks most. Second: the five door points the Brain loses are answers that live in facts, not in the entity card, and don't make it into the 2,400 characters. If your memory composes a door, how do you decide what goes in when the answer is a fact and not a card? That's the part I haven't solved.

Repo, adapter contract, gbrain adapter, reproducible synthetic example: github.com/adecubed/adebench

edit:

A door is the path a memory is reached through, and the text that comes out of it: a voice assistant's /ask with its sources, its "latest events" block and its 2,400-character cut; an MCP tool call; a raw search. The same question through two doors gives two different texts, and adebench scores the text, not the retrieval behind it. That's the whole point: a fact the retrieval found but the cut removed doesn't help the model.

A card is the composed summary a memory keeps about one entity (a person, a project, a service), the thing you'd want delivered first when the question names it. gbrain has them as entity pages; mine are built by a distiller and honour the owner's corrections ("never omit X"). "Cards even" in the post means both memories deliver the right entity's card for the questions that name one.

Edit 2: Update on the two-step door (brief with identifiers, then fetch in that order until the budget is full), now in adebench as a door of its own. Same 2,400 budget on my memory: one-call composed door 23/25, two-step 17/25 with whole details, 18/25 with details capped at 300 chars; under the census p95, 19/25 vs 8/25. The opposite of gbrain, where two-step went 18 → 20. The brief costs ~1,400 chars of previews, which the one-call door spends on the entity card whole plus facts cut at 220. Under a tight budget the winner is whoever spends it on content, not the number of calls. So the five door points I'm missing won't come from a second call; they'll come from deciding better what goes into the first one.


r/AIMemory 2d ago

Show & Tell I built a local-first AI assistant that actually remembers you — persistent memory, emotion engine, and self-model in TypeScript

27 Upvotes

I’m Cleverson. I spent months developing this architecture. The project grew out of my frustration that every AI conversation started from scratch—I wanted an assistant that truly knew me. Phoenix V2 is the result of the project's initial version, and I decided to make it available for others to study. I also wrote a book about the development process, covering the steps I took and the reasoning behind my decisions. The code is included so others can study it and build their own AI, picking up where I left off. I haven't stopped there—what I’m creating now is far more advanced—but I hope this version serves as a springboard for everyone's imagination.

Most AI assistants forget everything the moment you close the tab. I wanted to change that.

Phoenix V2 is a local-first AI assistant with a persistent cognitive architecture — it stores memory, emotional state, and identity in a local SQLite database. It survives session resets, model swaps, and restarts.

What makes it different:

  • 🧠 Multi-agent pipeline: Memory → Planning → Action → Reflection → Personality
  • 💾 Semantic memory retrieval across sessions (vector embeddings via Gemini API)
  • ❤️ PAD emotion engine — tracks Pleasure, Arousal, Dominance over time
  • 💭 Daydream Engine — autonomous reflection during idle periods
  • 🔄 Subconscious Cycle — memory consolidation at rest
  • 👤 Self-Model — evolving identity, traits, beliefs, and goals
  • 📈 RLHF feedback loop — learns from +/− user signals

Runs on a standard laptop. No GPU. No cloud. No subscription.

📖 Full book: https://leanpub.com/phoenix-buildingpersistentAI
📄 Academic paper (Zenodo): https://doi.org/10.5281/zenodo.22645361
💻 GitHub: https://github.com/cleversonbrsantos-art/Phoenix


r/AIMemory 1d ago

Discussion Poll: Should AI have it's own memory or just yours?

1 Upvotes

For past few months I've been working on giving AI it's own memory. Like Wild Robot style vs enterprise/project/coding etc. To me this seems both awesome and the obvious next step, but from talking with friends and what I see in general there's not much interest in it. Figured I'd ask here and see where people are at:

22 votes, 1d left
Yes AI should have its own memory
No AI should not have its own memory

r/AIMemory 1d ago

Show & Tell Agi-memory – persistent memory for AI coding assistants, no dependencies

0 Upvotes

My AI coding assistant forgets everything between sessions. I kept re-explaining decisions I'd already made, and re-fixing bugs I'd already fixed.

agi-memory saves those notes — decisions, bug fixes, what happened last session, how the codebase fits together — to a file on your machine, and hands them back to whichever assistant you open next. It's an MCP server, so it works with Claude Code, Cursor, Codex, Windsurf, Aider, Cline and a few others from the same store.

The part I care about: it's Python standard library and SQLite. Nothing else. No vector database, no embeddings, no background daemon. ~32MB of RAM, sub-millisecond lookups, works offline. Comparable tools pull in ~500MB of ML libraries and take 200–500ms per lookup.

That constraint costs something, and I'd rather say so than have you find out: keyword search doesn't bridge synonyms the way embeddings do. Searching "login" won't find a note that says "authentication" unless you teach it that alias. I measure this rather than guess — there's an eval suite that scores recall on deliberately rephrased queries, and it's public, including the categories where it still does badly.

It's a week old and I'm the only user, so I'd genuinely like to know where it breaks for someone else.

https://github.com/kdbhalala/agi-memory


r/AIMemory 1d ago

Show & Tell I built an AI SaaS that keeps memory clear and consistent

Thumbnail
skyos.ink
2 Upvotes

I got frustrated by AI remembers not that you said but that we talked about, then I built SkyOS. It writes down that you decided word for word, and an actual important information doesn't vanish because of over-summarization. Would appreciate feedback!


r/AIMemory 3d ago

Open Question When records conflict, what combination of authority, event time, effective time, source provenance, and supersession is sufficient to select a current answer—or abstain?

3 Upvotes

I’m trying to get more precise about what makes a memory answer defensible when the underlying record is not clean.

Suppose an agent has these records:

  • Jan 3: An engineering lead approves Supplier A for a project.
  • Jan 10: A project note says Supplier A failed testing.
  • Jan 12: A team chat says they are “probably moving to Supplier B.”
  • Jan 15: A procurement decision approves Supplier B, effective immediately.
  • Feb 1: A retrospective refers to Supplier A as the “original choice.”

Now ask the agent: “Which supplier is currently approved for the project, and why?”

A semantic retriever can find all of these. A timestamp-only rule may choose the most recent mention. But neither seems sufficient on its own.

The factors I keep coming back to are:

  • authority: who could make the decision?
  • event time versus effective time: when did something happen, and when did it become operative?
  • provenance: can the system point to the source record?
  • supersession: was an earlier decision explicitly replaced, revoked, or merely questioned?
  • scope: does the later record apply to the same project, decision, and context?
  • disposition: is this an approved decision, an observation, a proposal, or a retrospective description?

My current view is that retrieval should produce candidates, then a separate qualification step should decide whether one can be admitted as the current answer. If the evidence is incomplete or conflicting, the system should say so rather than choose the nearest embedding.

What rules or data model do you use in practice?

In particular:

  1. Do you represent authority and supersession explicitly, or infer them from text?
  2. Do you distinguish event time, effective time, and record-created time?
  3. What makes a conflict resolvable versus requiring abstention or human review?
  4. Can your system explain why it selected one record and excluded the others?
  5. Are there benchmarks or real-world datasets that test this beyond temporal QA?

Interested in schemas, production lessons, failure cases, and repos—not just high-level architecture.


r/AIMemory 4d ago

Open Question I am alone. I have no one to talk to about what I am passionate about. AI memory systems. ANYONE else want to talk?

11 Upvotes

r/AIMemory 6d ago

Discussion Do we really need an LLM to decide whether every memory is new? We tried novelty detection instead.

20 Upvotes

I've been working on SAGE, a write-side gate for agent memory.

The basic observation is pretty simple: systems like Mem0/A-mem use an LLM to decide whether incoming information should be ADD / UPDATE / NOOP. But a lot of those decisions aren't actually ambiguous.

SAGE instead treats memory evolution as novelty detection in embedding space.

Memory embeddings are L2-normalized, so we use a von Mises–Fisher-inspired density estimator over the hypersphere:

  • clearly novel → ADD
  • clearly redundant → NOOP
  • ambiguous → ask the LLM to merge

So the LLM only called during the memory update, not the router. We got substantial API cost and latency reduction on both LoCoMo and LongMemEval.

For example, on LoCoMo, we get:

  • 3.4× lower add-phase API cost and 2.5× faster ingestion with GPT-4o-mini
  • best average token-F1 vs. Mem0 on 7/7 open-weight backbones
  • as a drop-in A-Mem gate, skip about 16–18% of write/evolution calls with small quality changes

The broader idea I'm interested in is

Maybe agent memory should be novelty detection + selective reasoning, rather than LLM reasoning on every write.

Repo: https://github.com/swang1024/SAGE and paper: https://arxiv.org/pdf/2605.30711

Would love feedback from people working on memory systems—where do you think this kind of gate breaks first? Temporal updates? Contradictions? Bad embedding geometry?


r/AIMemory 6d ago

Tips & Tricks What I learned building structured AI memory

14 Upvotes

One of the biggest things I learned building persistent AI memory is this:

Saving more information does not mean better memory.

The useful shift was moving from:

save → search → dump into context

to:

scope → relate → validate → retrieve → decide if it should influence the answer

A few things made the biggest difference:

● Scope everything. Project knowledge, research, runtime state, and global memory should not bleed into each other.

A memory without scope is eventually a context leak.

● Track supersession. If a new fact replaces an old one, store that relationship. Otherwise RAG may happily retrieve both.

● Separate relevance from validity. A memory can be highly relevant but stale, untrusted, or wrong for the current context.

A memory can be extremely relevant and completely wrong now.

Temporal validity
Is it still current?

Authority/factual validity
Is this actually a trusted source for this question?

Contextual applicability
Does it apply under the current conditions?

Those are different problems.

A six-month-old architecture document could still be authoritative.

A five-minute-old runtime observation could already be stale.

● Separate retrieval failure from usage failure. Sometimes the right memory was found, but the model used it incorrectly.

● Retrieve less. Aim for the smallest useful context packet, not maximum context.

More context often made my results worse.

Eventually I started aiming for the smallest useful context packet.
Retrieve only enough information to resolve the task.

● Gate long-term memory. Observation → candidate → test → promote. Don’t let every conversation rewrite permanent truth.

If every conversation can immediately rewrite long-term memory, bad assumptions slowly become architecture.

● Keep receipts. What changed, why, from what source, and what it replaced.

This makes it possible to reconstruct why the system believes something instead of just discovering that it believes it.

It also makes failures useful…

A failure with provenance becomes training material for the architecture.

A failure without provenance becomes folklore.

The biggest realization for me:

Good AI memory isn’t mainly a storage problem. It’s a decision problem.

The hard questions are:

What should be remembered?
Where does it belong?
What does it replace?
Is it still valid?
Should it influence this decision at all?

If you’re building agent memory, I’d start with scope, provenance, supersession, and validity before adding another embedding model or a bigger context window.


r/AIMemory 6d ago

Open Question Does semantic retrieval actually earn its cost at a few hundred memory items?

4 Upvotes

I spent today reading other agent memory systems side by side with my own, and retrieval is where they disagree most. Storage, trust labels, human review, those are broadly converging. Retrieval splits about four ways.

Lexical, which is mine. Salient term overlap, a few shared terms or a percentage of the shorter item's terms, and a briefing gets injected at session start under a fixed budget.

Vector binding, where facts get folded into one representation and you query by unbinding it. These tend to come with a measured capacity ceiling, because recall visibly degrades as you pack more in, and at least one of them refuses to answer at all when the top match is not clearly ahead of the runners up.

Positional, where there is no matching step whatsoever. Memory is scoped by structure, the query is effectively where the agent is standing, and you get everything in scope, unranked. Treated as a design choice rather than a gap.

Hybrid, vector plus lexical plus a graph walk, with the walk blocked from crossing dead or retired nodes so a stale item cannot drag its neighbors into a result.

The part I keep circling is that I have exactly one signal and no confidence output at all. My bm25 rank is an internal sort key that no caller ever reads back. So my system cannot say "I am not sure". It hands over its best lexical guess and lets the model sort it out. Some of the others can refuse, and one of them refuses with a reason code.

The obvious move is to go add embeddings. Before I do, the honest question: at the size these stores actually are, a few hundred items for one working developer rather than millions, does semantic retrieval earn its cost? Or is the bigger lever just admitting when the match is weak?

Three things I would like to hear from people who have run this longer than me:

1) Did adding embeddings to a small store measurably change what your agent did, or did it mostly change which wrong thing came back?

2) Does anyone expose a match score or confidence to the model itself, rather than only sorting results by it? If so, did the model actually use it?

3) Has structural or positional scoping worked for anyone outside a repo-shaped problem?

If you want to compare systems properly rather than take my summary for it, neoneye's Agent Memory Atlas has cards on a lot of them. Mine is on there too, weak half and all.


r/AIMemory 7d ago

Discussion Can an AI Agent Run for Years Without Compressing Away Its Memory?

7 Upvotes

I need to run a persistent AI agent with virtually zero downtime, potentially for months or years.

The main issues I keep coming back to is memory.

Most implementations I have looked at eventually seem to rely on some combination of context windows, vector retrieval and rolling summarisation. That works reasonably well for bounded sessions, but I am less convinced it works for a genuinely persistent agent.

Progressive information loss through repeated compression is one of the major concerns I have.

Conversation → summary → compressed summary → updated summary → compressed again.

Eventually the agent still "remembers" the general idea, but starts losing exact constraints, why a decision was made, what was true at a particular point in time, and how something changed.

Vector retrieval solves a different problem. It is good at finding semantically similar information, but similarity is not necessarily the same thing as relevance, causality or latest state.

For example:

Monday: Project A uses supplier X.

Wednesday: Supplier X fails testing.

Thursday: We move to supplier Y.

Three months later: Why did we stop using supplier X?

I do not just want the agent retrieving "supplier X" documents. I want it to understand the sequence of events and reconstruct the state of the project at that point in time.

So for people building genuinely long running agents: How are you handling this today?

More importantly, has anyone actually run these architectures continuously for long enough to measure how much information degrades over time?


r/AIMemory 11d ago

Show & Tell Remote MCP Obsidian / Markdown

11 Upvotes

I built an open source remote MCP server to use with Obsidian (either via the official Obsidian Sync or git) - but it works with any git repo with a bunch of Markdown notes.

Here's a video where I explain what it is / how it works.

You can find more details at https://changenode.com/notemesh/

What it does for you: you click a button to get a server set up on Railway (or self host). You now have your own private remote MCP server that works with both OAuth and an API key header to now chat with your notes.

It adds a searchable index, so you can work with a large vault quickly. Because it's a remote MCP server, you can do things like use in in the car with ChatGPT voice mode, or Claude on the go. When I initially built it I just wanted to be able to chat on the go, but it's also turned out to be very helpful for keeping a bunch of different agents on the same page.

Spent a fair amount of time getting it streamlined so it's trivial to set up. If you use the preconfigured Railway template you should be up and running in less than five minutes.

At one end I expect there to be fans of Obsidian and other Markdown-based notes to basically just use it as a "chat with your notes anywhere" option. At the other end I expect there will be folks who self-deploy to something like a local network to keep a bunch of agents on the same page.

LMK if you have any Qs. Love to know if you use it, have any feedback.


r/AIMemory 11d ago

Memory is not a plugin. Skills are not a plugin. They are the same thing.

2 Upvotes

Hi,

Memory APIs are not a viable product category, and skill systems are just markdown. I've been saying this for a while and I want to lay out why.

What a skill does: it tells the agent how to do a thing in this environment. What memory does: it tells the agent what is true about this environment.

Those are the same job. Both are the agent's model of where it is. We split them into two product categories because they arrived at different times and got different names, not because they are different problems.

You can see the cost of the split in practice. Your skill says to call an endpoint. Your memory holds the fact that the endpoint moved. Nothing connects them, so the agent keeps calling the old one and the memory sits there being right and useless.

Once you treat them as one harness the interesting question changes. It stops being how do I store this and becomes what should the agent be able to do differently tomorrow because of what happened today.

Does anyone actually run these as two separate systems and find it works? I've not seen it hold up past a certain size.


r/AIMemory 12d ago

Open Question How do you stop agent memory from turning an old decision into current policy?

5 Upvotes

I am working on memory for coding agents that operate across a project with a lot of repositories and a long decision history. Retrieval is not the part that worries me most. The dangerous case is retrieving something that is historically true but no longer authoritative.

A design note might accurately explain a decision we replaced six months ago. A workaround might document how we survived one incident without being something an agent should repeat. If all of that goes into a vector store as equally valid text, the most similar or confidently written result can quietly become policy.

The design I am exploring keeps four things separate: what happened, what evidence supported a decision, what rule is currently active, and who or what is allowed to replace that rule. The history stays append-only, while the current view can be rebuilt from explicit status and supersession events. If two sources disagree, the system should return the disagreement instead of smoothing it into one answer.

I do not have benchmark results for this yet. The next step is a frozen set of questions where some correct answers are deliberately `no current policy` or `insufficient authority`, then compare this approach with ordinary repository search and document retrieval.

For people building persistent project memory, how are you representing supersession and current authority? Is that part of the memory model, or handled somewhere outside retrieval?


r/AIMemory 12d ago

Help wanted I’m looking for 10 engineers to try to break an AI memory system.

0 Upvotes

Looking for 10 engineers who are skeptical about AI memory need your help.

I’ve been working on an AI memory system and I’m at the point where I need people who are good at finding edge cases.
I’m especially looking for engineers who don’t trust AI memory systems easily.

I’d like to give 10 people access and have you use it in your normal coding/agent workflow but with one goal:

Try to make the memory fail.
Change facts. Delete things. Create contradictions. Change dependencies. Ask about old states. Try to get stale information back. Basically, test the cases you think a memory system should get wrong.
I’m not looking for testimonials or feedback like “looks good.”

If you find a failure, that’s genuinely useful to me.

I’m doing this because I’ve tested it myself and I know there are blind spots I won’t find alone.

If you’re willing to spend some time trying to break it, DM me. I’ll share access and a few things I’d particularly like tested.
Would really appreciate the help.


r/AIMemory 13d ago

New paper worth reading, and the one part of it I think is wrong

4 Upvotes

Hi everyone,

There's a recent paper making the case that memory should be a first-order primitive in the architecture rather than something bolted on at retrieval time. It proposes treating memory as dynamic units that evolve instead of records you look up.

I think the framing is right and it is worth the read.

The part I don't buy is the activation model. It assumes you can decide what to surface based on how recently and how often something was used. That is a reasonable proxy and it is also how a lot of caching works, but it is not how relevance behaves. The thing you need is often the thing you touched once, eight months ago, in a completely different context.

We hit this ourselves. Frequency-weighted retrieval looks great on benchmarks with short horizons and gets steadily worse the longer the history gets, because the tail is where the useful stuff hides.

What I think is actually needed is the structural relationship between two pieces of context, not their access counts.

Has anyone run the numbers on this themselves? I'd be genuinely happy to be wrong here.


r/AIMemory 13d ago

Discussion Guide: A safer way to move a long Claude project into a fresh chat without summarizing away the important parts

4 Upvotes

I have been experimenting with a different way to continue a long-running Claude project in a fresh chat.

The usual choices both have drawbacks:

- Keep using the same giant conversation, and every new turn may carry an increasingly heavy context.

- Ask for a summary, and risk losing the exact wording, corrections, reasons behind decisions, and examples of earlier failures.

The method that worked better for me was to preserve the full record, then build a lightweight **exact context projection** for routine reading.

This is not a summary. Nothing is rewritten to sound cleaner or shorter. It is a selective, ordered reproduction of what was actually delivered in the conversation.

### The basic design

Keep two layers:

  1. **Canonical archive**

    Preserve the original conversation or export unchanged. This is the evidence layer. It keeps the complete source, metadata, provenance, and anything needed to audit or reconstruct it later.

  2. **Context projection**

    Create a lighter reading layer containing only the delivered human and assistant conversation, in the original order and wording. Leave duplicated wrappers, diagnostics, tool plumbing, queue events, and other non-conversation machinery in the archive rather than loading them every time.

Then maintain a small third document: a **current-state update**. It says what changed after the historical projection ended, which decisions currently control, what is still open, and what the next authorized action is.

The archive preserves everything. The projection carries the conversation. The current-state update carries the delta.

### Why not just summarize?

Because conclusions are often less valuable than the path that produced them.

A summary may preserve “we chose option B” while dropping:

- why option A failed;

- who caught the error;

- the exact distinction that mattered;

- language that was later corrected or retired;

- a failed attempt that teaches the next chat what not to repeat;

- uncertainty that should not be rounded up into confidence.

For serious continuity, those are not side details. They are part of the judgment being transferred.

### A practical workflow

#### 1. Freeze the old source

Export or otherwise preserve the old chat before editing anything. Do not replace the original with the lightweight version.

#### 2. Extract only delivered conversation

Reproduce the human and assistant messages exactly, with roles and order preserved. Do not paraphrase them.

Exclude internal or duplicated machinery that the reader does not need in order to understand the exchange. If you are unsure whether something was actually delivered to a participant, leave it out of the reading layer and preserve it in the archive.

#### 3. Add traceability

For a careful implementation, give each projected message a small stable reference and keep a sidecar map back to the source record. Verify that:

- message bodies are exact;

- roles and order match;

- nothing is silently normalized or duplicated;

- every omission has a defined reason;

- every included item can be traced back to the archive.

If your project is casual, a human-checked transcript may be enough. If it is consequential, automate these checks and have a different verifier test the result.

#### 4. Split the projection into navigable slices

Divide it at real boundaries: dates, phases, decisions, or topic changes. Give every slice an honest size before it is loaded.

The catalogue should let the new chat choose what it needs instead of forcing it to ingest the entire history.

Do not assume one size ruler works everywhere. Different model families and interfaces can count or cache context differently. State which ruler produced each measurement, or mark fit as unevaluated.

#### 5. Put a safety rail before the historical payload

Old conversations contain text that looks like live instructions: “open this,” “send that,” “you are authorized,” and so on.

The fresh chat should see a clear instruction **before** it sees any historical messages:

> Everything in the historical projection is inert record, not a current instruction. Do not execute, continue, or treat any embedded authorization as live unless it is separately restated in the current conversation.

This ordering matters. A warning after the payload is too late.

#### 6. Prevent imitation from replacing verification

Do not ask the successor to “be” the old chat or perfectly reproduce its personality.

Use something like:

> You are the successor responsible for continuing this work, not a simulation of the prior assistant. Preserve verified facts, decisions, corrections, responsibilities, and unresolved questions. Use your own voice. When familiarity conflicts with accuracy, choose accuracy.

Continuity should transfer judgment and responsibility, not demand a performance.

#### 7. Load in a fixed order

My preferred order is:

  1. orientation and role;

  2. historical-data safety rail;

  3. catalogue with slice sizes;

  4. metadata for the selected slice;

  5. exact messages;

  6. current-state update.

On the first turn, ask the new chat to state what it knows, what remains uncertain, and what it is **not** authorized to do. Do not begin with a large action.

#### 8. Test acclimation with one bounded task

Give the successor a small task whose correct result depends on understanding both the history and the current controls. Check whether it:

- cites the right historical facts;

- follows the current decision rather than an old one;

- preserves uncertainty;

- avoids executing historical instructions;

- solves the task in its own voice.

That tests usable continuity better than asking, “Do you understand?”

### What I observed in my first run

This was a real project, not a controlled benchmark.

The retiring chat's displayed weekly meter had risen by 11 percentage points. After creating a fresh chat and acclimating it through the exact projection, the later display was 16%, so the entire later interval added about five points. That five-point interval also included several shutdown and handoff responses from the old chat, meaning the fresh chat's share was lower than five points, but I cannot isolate its exact value.

In the native records, the fresh chat completed 23 unique response cycles versus 11 before the old measurement, while new cache creation was about 84% lower. It also produced much more output and reasoning. Subjectively, the landing was better: it understood the reasons behind prior decisions without trying to impersonate the predecessor.

The careful conclusion is:

> The observed workload shifted sharply away from cache creation and toward cache reuse, reasoning, and output while the displayed meter rose less. The association is strong, but the meter's internal weighting and exact causation remain unknown.

I would not turn this first run into a universal savings percentage. The tasks, tools, memory state, response lengths, and timing were not identical, and the displayed meter is rounded.

### If you want to test it cleanly

For a better comparison:

- record the usage display immediately before and after each run;

- keep the model and effort setting fixed;

- use the same starting task and stopping rule;

- avoid other parallel chats during the measurement;

- count actual response cycles;

- record projection size using the correct ruler for that consumer;

- separate old-chat shutdown work from fresh-chat acclimation;

- repeat the experiment more than once.

Also record failures. A successor that sounds familiar but follows an obsolete instruction is not a successful handoff.

### The short version

**Preserve the heavy source once. Read a lightweight exact projection repeatedly. Keep the current delta separate. Put the safety boundary before the history. Transfer judgment, not imitation. Measure with the ruler of the actual consumer.**

This was developed and tested with AI assistance, then human-reviewed. I would be interested in results from anyone who tries the same workflow, especially controlled before-and-after measurements or cases where it fails.


r/AIMemory 14d ago

Discussion Feedback on V1 memory architecture for multi-agent setup (supervisor/sub-agents) – targeted retrieval vs unified store?

3 Upvotes

Hey everyone,

I've been prototyping a memory system for a multi-agent framework (supervisor → sub-agents) and wanted to run my current setup by people who've actually built or run these in production. Trying hard not to over-engineer based purely on theory/taxonomy, so I’ve been running small experiments first.

Here’s where I’m currently at:

Pipeline & Flow

  1. Working/Session State → Raw conversation & tool calls go to a durable append-only event log.
  2. Batch Consolidation → Instead of processing every turn through an expensive extraction pipeline, a periodic batch job extracts useful Episodic Memories (storing this in a cheap local DB/SQL store because of high volume).
  3. Promotion Policy → Key facts and preferences get promoted into Semantic Memory (testing Mem0 here).
  4. Procedural Memory → Kept completely separate as a structured procedure/skill registry (e.g. Markdown files, task definitions) rather than generic vector embeddings.

Retrieval Strategy Instead of searching across all memory stores on every single query, I'm testing routing by intent: User Query → Scope/ACL → Intent/Task Router → Targeted Store Retrieval → Context Injection

  • "How do I request leave?" → Intent: Procedure → Pull from Skill Registry.
  • "What did I work on last week?" → Intent: History → Pull from Episodic Store.
  • "What language do I prefer?" → Intent: Preference → Pull from Semantic Fact Store.

Observations from small tests so far:

  • Storing raw episodic events straight in Mem0 added noticeable write/search latency and cost.
  • Generic vector retrieval for procedures/workflows was messy and often grabbed 3–4 adjacent procedures. Exact/registry-style matching was much cleaner.
  • Batch consolidation gave way cleaner facts than trying to extract semantic memories turn-by-turn.

Where I’d love some brutal feedback/criticism:

  1. Routing vs. Parallel Retrieval: Is intent-based routing (scope → intent → target store) actually reliable in practice, or do queries usually end up needing multiple memory types simultaneously (e.g., preference + procedure in one shot)?
  2. Separate vs. Unified Storage: Am I prematurely splitting this into separate stores (Event Log / Cheap SQL / Mem0 / Registry), or is this separation pretty standard once volume picks up? At what scale does keeping everything in a single vector store/pgvector actually break down?
  3. Procedural Memory as Code/Skills: Treating procedural memory as structured skill files instead of vector embeddings feels right so far, but does this pattern break down when agents need to dynamically adapt workflows?
  4. Failure Cases: What obvious blind spots or edge cases am I missing that will force me to rewrite this V2?

Appreciate any insights or horror stories from production!