Sofortiges Vergessen nach Ende der Unterhaltung: MindForge entwickelt eine lokale Agent-Gedächtnisdatenbank.
Wie lange kann ein KI-Agent sich an Sie erinnern? Die Antwort der meisten Produkte lautet: Bis zum Ende dieser Unterhaltung.
Am 8. November veröffentlichte das Open-Source-Projekt MindForge die Version v6.4.0, um genau dieses Problem zu lösen: Es stattet Agenten mit einem Gedächtnissystem aus, das langfristig gespeichert, bei Bedarf sofort abgerufen werden kann und vollständig auf dem lokalen Gerät verbleibt. Das Projekt wird von Gu Fengyu alleine gewartet. Er wurde im Januar 2008 geboren, ist 18 Jahre alt und besucht derzeit eine berufsbildende Mittelschule. Seit der Einrichtung des Projekts am 30. März hat er 59.000 Zeilen Python-Code für das Kernpaket geschrieben, insgesamt 83.000 Zeilen einschließlich der Tests.
Das Gedächtnisverlustproblem von Agenten liegt nicht daran, dass das Modell nicht intelligent genug ist
Heutzutage gibt es zwei gängige Ansätze: Die historischen Unterhaltungen in das Kontextfenster einzufügen oder das Gedächtnis in einer Vektordatenbank in der Cloud zu hosten. Das Problem des ersten Ansatzes sind die Rechenkosten: Je länger die Unterhaltung ist, desto mehr Token werden bei jeder Anfrage übermittelt, und auch bei einer Erweiterung des Fensters gibt es eine Obergrenze. Das Problem des zweiten Ansatzes liegt nicht in der Technik, sondern im Speicherort: Die Fakten über den Nutzer verlassen das Gerät des Nutzers, und bei jedem Abruf ist ein zusätzlicher Netzwerkroundtrip erforderlich.
Noch problematischer ist, dass das Abrufen von Gedächtnisinhalten nicht dasselbe ist wie das Abrufen aus einer Wissensdatenbank. Bei RAG geht es darum, „welcher Teil des Materials diese Frage beantworten kann“, während das Gedächtnis die Frage beantworten muss: „Welche Fakten über diese Person sind derzeit noch gültig?“. Fakten können veralten oder sich widersprechen: Man wohnte letzten Monat in Yancheng und ist diesen Monat nach Nanjing gezogen; vor drei Monaten überlegte man sich, eine Katze zu halten, hat dies aber später wegen einer Allergie aufgegeben. Bei einer reinen Ähnlichkeitssortierung gibt das System veraltete und widersprüchliche Gedächtnisinhalte gemeinsam zurück.
Daher konzentriert sich MindForge nicht darauf, „mehr zu speichern“, sondern auf die „Verwaltung des Lebenszyklus“ – was erinnert werden soll, was vergessen werden soll und wem man vertraut, wenn zwei Gedächtnisinhalte widersprechen.
Gedächtnis auf dem lokalen Gerät belassen: Vier-Schichten-Struktur, Mehrwege-Abruf und eine einzige SQLite-Datei
Sein erstes Designprinzip ist der lokale Vorrang. Für die Speicherung wird SQLite mit FTS5 verwendet, die gesamte Gedächtnisdatenbank besteht aus einer einzigen Datei, die mit der Umgebung migriert werden kann. Da sie nicht von der Cloud abhängig ist, gibt es keine Netzwerklatenz und keine zusätzlichen Kosten für das Datenhosting.
Strukturell ist das Gedächtnis in vier Schichten unterteilt: sensorisch, kurzfristig, langfristig und dauerhaft. Neue Inhalte gelangen zuerst in die kurzfristige Schicht und steigen dann entsprechend ihrer Wichtigkeit und Zugriffshäufigkeit entlang der Ebbinghaus-Vergessenskurve allmählich auf oder nehmen ab. Hochwertige Einträge werden wiederholt verstärkt und gelangen in die langfristige oder sogar dauerhafte Schicht, während minderwertige Einträge natürlich ausblenden. Diese Schichtung bestimmt, „was vergessen werden soll“, anstatt alle Inhalte flach in einem Vektorindex abzulegen.
Auf der Abrufseite wird keine einzelne Vektorsuche verwendet. Gemäß dem Design werden die Ergebnisse aus Vektorsuche, FTS5-Volltextsuche, TF-IDF, Fuzzy-Matching, Abfrageerweiterung und Cross-Encoder-Umordnung zu einer einzigen Sortierung zusammengeführt, die dann mit Gewichtungen für Abdeckung, Wichtigkeit, Zugriffshäufigkeit und Zeitabfall überlagert wird. Nach außen werden vier Schnittstellen bereitgestellt: MCP, Python SDK, Befehlszeile und REST. Allein für MCP sind 87 Tools registriert, die Befehlszeile hat über 200 Unterbefehle, sodass der Agent-Client ohne Änderung der Architektur angeschlossen werden kann. Der Hauptinhalt des Gedächtnisses wird mit AES-256-GCM verschlüsselt auf die Festplatte geschrieben; die Schlüsselableitung wurde in Version v6.3.1 von PBKDF2 auf scrypt umgestellt. Der Datenschutz ist in vier Stufen unterteilt, wobei Gedächtnisinhalte der Stufe STRICT bei normalen Abrufen nicht zurückgegeben werden.
Auf einem Cloud-Host mit 2-Kern-CPU und 3 GB Arbeitsspeicher (Python 3.12, ohne installierte optionale Vektorerweiterung) erzielte dieses System folgende Werte: 1219 von allen Tests wurden bestanden, 1 wurde übersprungen, die Dauer betrug 208 Sekunden, was mit den im Repository angegebenen 1220 Tests übereinstimmt. Das Schreiben von 10.000 Gedächtniseinträgen im Batch-Modus dauerte 396 Millisekunden, was etwa 25.000 Einträgen pro Sekunde entspricht. In einer Datenbank mit 100.000 Einträgen beträgt der Median des Schreibvorgangs für einen einzelnen Eintrag 11,8 Millisekunden, der Median des Abrufvorgangs 4,7 Millisekunden und P95 66 Millisekunden. Die gesamte Datenbankdatei ist 52,8 MB groß, durchschnittlich 553 Byte pro Gedächtniseintrag.
Eine weitere Testgruppe prüft die Genauigkeit des Abrufs: Es wurden 300 Kundendatensätze mit eindeutigen Vertragsnummern geschrieben, dann 50 Abfragen mit den Nummern durchgeführt, wobei die ersten zehn Ergebnisse alle das Ziel trafen. Nachdem ein Gedächtniseintrag als STRICT markiert wurde, gibt die gleiche Abfrage ihn nicht mehr zurück – die Datenschutzstufung ist keine Angabe in der Dokumentation, sondern eine tatsächliche Filterung im Abrufpfad. Fakten über mehrere Sitzungen hinweg können ebenfalls abgerufen werden: Zuerst wird notiert „Ich überlege mir, eine Britisch-Kurzhaar-Katze zu halten, mache mir aber Sorgen um den Haarausfall“, und nach einigen Sitzungen fragt man „Wie hieß das vorherige Projekt?“, das System kann aus alten Einträgen herausfinden, dass „das Projekt in MindForge umbenannt wurde, früher hieß es ClawMemory“.
Es hat auch klare Mängel. Wenn keine Vektorerweiterung installiert ist, bleiben nur drei Abrufwege übrig, sodass man bei einer anders formulierten Frage den Eintrag nicht mehr abrufen kann: Wenn man nach „Was muss man bei der Katzenhaltung beachten“ sucht, um den oben genannten Eintrag über die Britisch-Kurzhaar-Katze abzurufen, ist das Ergebnis leer. Die Extraktion von Entitäten aus gesprochenem Chinesisch ist ebenfalls nicht stabil: Wenn man das System bittet, aus vier Gedächtniseinträgen einen Wissensgraphen zu extrahieren, ist die Anzahl der Entitäten 0. Wenn man „wohnt in Yancheng“ in „zieht nach Nanjing“ ändert, wird der Konflikt nicht erkannt. Diese Funktionen sind im Code vorhanden, aber die Abdeckung für chinesische Alltagslogik ist noch unzureichend. Der Autor hat in der Dokumentation die Abrufbeschränkungen des Null-Abhängigkeits-Modus markiert und die „sechs Abrufwege“ nicht als Standardfunktion festgelegt.
Ein bemerkenswertes Detail ist die Latenz. Die eigenen Benchmarks des Projekts zeigen, dass der Median des Schreibvorgangs bei direktem Aufruf innerhalb der Engine 2,0 Millisekunden und der des Abrufvorgangs 2,9 Millisekunden beträgt, während er bei Aufruf über einen Unterprozess der Befehlszeile auf 698 Millisekunden ansteigt – der Unterschied stammt fast vollständig aus dem Start des Python-Interpreters. Daher wurde in v6.4.0 ein residenter Daemon-Prozess hinzugefügt, der die Engine in einem langlebigen Prozess hält, sodass die einzelne Anfrage auf 2,5 Millisekunden sinkt. Solche Probleme lassen sich nicht aus einer Funktionsliste ablesen, sie ergeben sich erst aus der tatsächlichen Nutzung.
Eine Person, sieben Monate und ein noch nicht umgesetzter Geschäftsplan
Der Zeitablauf ist klar: Das Projekt wurde am 30. März 2026 eingerichtet; die erste öffentliche Einreichung erfolgte am 17. Juli, damals hieß es noch ClawMemory; Ende August löschte der Autor die von ihm geschriebene experimentelle herabgestufte Verschlüsselung mit der Begründung, dass die Sicherheitsstandards ihre Existenz nicht erlauben; am 2. Oktober wurde es in MindForge umbenannt; am 31. Oktober wurde in v6.0 der Multi-Agent-Gedächtnisraum offiziell eingeführt; am 8. November wurde v6.4.0 veröffentlicht. Der gesamte Prozess fand ohne Team und ohne Finanzierung statt.
Gu Fengyus Hintergrund ist nicht besonders glänzend: Er besucht eine berufsbildende Mittelschule, hat keine Abschlüsse von renommierten Universitäten und keine Berufserfahrung in großen Technologieunternehmen. Auf der Projektseite schreibt er direkt: „Der Bildungsabschluss kann nicht die Obergrenze eines Menschen definieren, aber der Code kann die Einstellung eines Menschen beweisen.“ Dieser Satz hat jugendlichen Charme, aber der Inhalt im Repository ist überprüfbar: Continuous Integration, 1220 Tests, reproduzierbare Benchmark-Skripte und ein spezielles Vergleichsverfahren zur Erkennung von Messartefakten wie „schnelleres verschlüsseltes Schreiben“.
Die Zielnutzer sind ebenfalls klar definiert: Agent-Teams, die Endgeräte- oder privatisierte Bereitstellungen durchführen, Branchenkunden, die verlangen, dass Daten das interne Netzwerk nicht verlassen, sowie unabhängige Entwickler, die keine zusätzlichen Cloud-Dienste für das Gedächtnis kaufen möchten. Das Geschäftsmodell befindet sich noch in der frühen Phase: Es wird unter der MIT-Lizenz als Open-Source veröffentlicht, die Kernfunktionen sind kostenlos. Mögliche Einnahmequellen sind die privatisierte Bereitstellung für Unternehmen und technischer Support, aber es ist noch kein fertiges Produkt. Derzeit gibt es keine Finanzierung, die Priorität besteht darin, die erste Veröffentlichung auf PyPI abzuschließen, danach die Vektordatenbank-Backend, das Web-Dashboard und das Plugin-Ökosystem zu ergänzen.
Das Schwierigste an einem Gedächtnissystem war noch nie das „Speichern“, sondern die Entscheidung, „was wert ist, erinnert zu werden und wann es vergessen werden soll“. Ein 18-jähriger Entwickler hat in sieben Monaten ein System geschaffen, das installiert, getestet und direkt von Agenten aufgerufen werden kann. Es ist noch weit von einem ausgereiften kommerziellen Produkt entfernt, aber es beweist zumindest eines: Um einem Agenten ein Gedächtnis zu geben, muss man nicht voraussetzen, dass Nutzer bereit sind, alles der Cloud anzuvertrauen.