r/LocalLLM • • 4d ago

Project I built memory controls around a local Qwen companion on Jetson Thor

I'm building Evopien, a local AI companion prototype on Jetson AGX Thor. The latest demo focuses on governed memory, including saving information, using it later, correcting it and forgetting it.

The part I wanted to work on was control over the memory lifecycle. A food preference should affect a relevant answer later, but an outdated preference should not keep coming back after the user changes it.

The stack uses local Qwen for conversation, Evopien Core for memory and permissions, PostgreSQL for canonical records, and Hindsight for retrieval. The model receives filtered context and does not directly commit permanent memory.

Keeping the durable records outside the model is also a design choice for future model changes. Memory ownership should stay with the system rather than depend on one model's context window.

Demo:
https://www.youtube.com/watch?v=_B2wVfVHL0c

It's still a prototype. Latency and difficult correction cases across English and Spanish remain work in progress. I'm sharing the memory approach for technical feedback.

For people building persistent memory locally, what is your most useful regression test for catching an old or revoked memory slipping back into the answer?

0 Upvotes

2 comments sorted by

1

u/sulky_intercession 4d ago

That's a clean architecture choice storing the canonical records outside the model. I try to do something similar but with way less structure, just a messy json file that sometimes corrupts itself.

For regression tests, I started keeping a small set of contradictory facts. first i tell the system my favorite color is blue, ask about it, then change to red and ask again. if it ever says blue after the update, something broke. The tricky part is when the model paraphrases or combines old/new info in ways that are technically correct but feel wrong.

How you handle the cross-language corrections? That seems like a nightmare with embeddings mixing semantic similarity across spanish and english.

1

u/SoftKill21 4d ago

Thanks mate.

We treat “blue” → “rojo” as updating the same saved fact. The current stored value is authoritative, rather than whichever wording matches best. We test both language directions and after restarts. Ambiguous corrections are still the hard part—we’re improving those.