37 comments

[ 3.7 ms ] story [ 60.7 ms ] thread
no open code plugin? This seems like something that should just run in the background. It's well documented that it should just be a skill agents can use when they get into various fruitless states.

The "biological" memory strength shouldn't just be a time thing, and even then, the time of the AI agent should only be conformed to the AI's lifetime and not the actual clock. Look up https://stackoverflow.com/questions/3523442/difference-betwe... monotonic clock. If you want a decay, it shouldn't be related to an actual clock, but it's work time.

But memory is more about triggers than it is about anything else. So you should absolutely have memory triggers based on location. Something like a path hash. So whever an agent is working and remembering things it should be tightly compacted to that location; only where a "compaction" happens should these memories become more and more generalized to locations.

The types of memory that often are more prominent are like this, whether it's sports or GUIs, physical location triggers much more intrinsics than conscious memory. Focus on how to trigger recall based on project paths, filenames in the path, file path names, etc.

Cool project. I like the neuroscience analogy with decay and consolidation.

I've been working on a related problem from the other direction: Claude Code and Codex already persist full session transcripts, but there's no good way to search across them. So I built ccrider (https://github.com/neilberkman/ccrider). It indexes existing sessions into SQLite FTS5 and exposes an MCP server so agents can query their own conversation history without a separate memory layer. Basically treating it as a retrieval problem rather than a storage problem.

Aren't tools like claude already store context by project in file system? Also any reason use "capture" instead of "export" (an obvious opposite of import)?
yegge has a cool solution for this in gastown: the current agent is able to hold a seance with the previous one
hmm the repo doesnt mention this at all but this name and problem domain brings up HippoRAG https://arxiv.org/abs/2405.14831 <- any relation? seems odd to miss out this exactly similarly named paper with related techniques.
How does it select what to forget? Let's say I land a PR that introduces a sharp change, migrating from one thing to another. An exponential decay won't catch this. Biological learning makes sense when things we observe similar things repeatedly in order to learn patterns. I am skeptical that it applies to learning the commits of one code base.
I think this is a very important question, and it makes it clear that memory systems are less about fact retrieval, and more about knowledge classification. Memories systems are not document stores -- which to be fair this hippo system does recognize and motivates by exponential decay, recall strengthening and "sleep" consolidation.

I personally don't think a memory system should try to "select what to forget", but to store everythign and live with the contradictions inherent in history. Having said that, we need to ascribe a certain confidence to each memory at storage time, where something uncertain is described as such, and when contradicting information gets stored, it reduces the confidence even further -- this on top of time decay and retreival bumps in confidence. E. T. Jaynes argued that this could be achieved in machines through Bayesian updating, say a beta distribution is stored for each memory and upon storing knowledge that confirms this memory, the beta distribution is updated to have more confidence (the original is the prior).

If every memory has a Bayesian prior denoting confidence, and this is surfaced when recalling, then the LLM itself can decide how to sythesize the different memories. Together with a "remembered on" field, the LLM can grok that the database schema was changed, or a certain design pattern was discarded (for example).

(Full disclosure, I have developed a memory system myself which I will post here in a couple days, with a slightly different target audience than hippo).

I would look at information theory for inspiration; notions of information gain and surprisal.
The biggest issue I have with these systems is, I don't want a blanket memory. I want everything to be embedded in skills and progressively discovered when they are required.

I've been playing around with doing that with a cron job for a "dream" sequence.

I really want to get them out of main context asap, and where they belong, into skills.

https://github.com/notque/claude-code-toolkit

Blanket memory doesn't scale, totally agree. I built something similar in Atmita (https://atmita.com). Agents see short summaries of each other instead of full memory dumps, and automation run logs live in their own layer.
I think explicit post-training is going to be needed to make this kind of approach effective.

As this repo notes is "The secret to good memory isn't remembering more. It's knowing what to forget." But knowing what is likely to be important in the future implies a working model of the future and your place in it. It's a fully AGI complete problem: "Given my current state and goals, what am I going to find important conditioned on the likelihood of any particular future...". Anyone working with these agents knows they are hopelessly bad at modeling their own capabilities much less projecting that forward.

wow, i checked the repo and we have similar ideas)

we're building swarm-like agent memory agents share memories across rooms and nodes. Reading Steiner + Time Leap Capsules (yeah, Steins;Gate easter eggs lol).

your consolidation and decay mechanics are close to what we want. might integrate similar approach.

a working group of ~300 senior eng are experimenting with different skills for stuff like this: https://swg.fyi/mom
Oh hey, something I know something about!

I've long held the belief that if you want to simulate human behaviour, you need human-like memory storage, because so much of our behaviour is influenced by how our memories work. Even something as stupid as walking into between rooms and forgetting why you went there, is a behaviour that would otherwise have to be simulated directly but can be indirectly simulated by the memory of why an Agent is moving from room to room having a chance of disappearing.

Now, as for how useful this will be for something that isn't trying to directly simulate a human and is trying to be "superintelligent", I'm not entirely sure, but I am excited that someone is exploring it.

https://ieeexplore.ieee.org/abstract/document/5952114 https://ieeexplore.ieee.org/abstract/document/5548405 https://ieeexplore.ieee.org/abstract/document/5953964

I never did get many citations for these, maybe I just wasn't very good at "marketing" my papers.

The memory system I am working on is specifically targeted at simulating human memory and retrieval patterns, including memory consolidation during sleep cycles. I would love to discuss the topic more with you - I'll look into getting access to your papers.
[flagged]
Thank you so much for all the feedback! I really appreciate it and have implemented the majority of them. Please check out v0.10.0!
We're exploring related ideas in embodied AI rather than LLM agents. MH-FLOCKE uses Izhikevich spiking neurons with R-STDP to control quadruped locomotion — the memory is in the synaptic weights, not in a vector store.

The brain persists across sessions: stop the robot, restart it, synaptic weights reload and it continues from where it left off. Decay happens naturally through R-STDP — synapses that don't contribute to reward weaken over time. No explicit forgetting mechanism needed.

Currently running on a Unitree Go2 (MuJoCo) and a 100€ Freenove robot dog (Raspberry Pi 4, real hardware). Same architecture, different bodies.

github.com/MarcHesse/mhflocke

Are there any natrual ways of swapping from clock time to agent "active time"? For some agents that are running intermittently I might want to keep those memories longer (in clock time).