Blog

Wie RockBot sich erinnert: Der Aufbau einer Speicherarchitektur in einem KI-Agenten

Rockford Lhotka

Rockford Lhotka

Aktualisiert März 17, 2026
8 Minuten

Auf einen Blick

  • RockBot ist ein Cloud-natives Framework für den Aufbau sicherer KI- und Multiagentensysteme
  • Die meisten KI-Modelle behalten den Speicher nicht über mehrere Sitzungen hinweg bei. RockBot wurde mit einer dreistufigen Speicherarchitektur entwickelt um dieses Problem zu lösen
  • Das Gesprächsgedächtnis bewahrt den kurzfristigen Kontext innerhalb einer Sitzung mithilfe eines Schiebefenster-Modells.
  • Das Langzeitgedächtnis behält strukturierte Benutzerpräferenzen, Projektkontext und Anti-Patterns über mehrere Sitzungen hinweg bei.
  • Der Arbeitsspeicher dient als temporärer Scratch-Speicher für große Tool-Ausgaben, Übergaben von Unteragenten und Hintergrundaufgaben.

Lesen Sie den ersten Beitrag aus dieser Serie: Einführung in RockBot: Ein Cloud-natives KI-Agenten-Framework →.

Viele KI-Modelle haben keinen dauerhaften Speicher. Jedes Gespräch beginnt neu. Sie erinnern sich nicht daran, was Sie ihnen gestern, letzte Woche oder vor fünf Minuten in einem anderen Chatfenster gesagt haben. Für einen gelegentlichen Assistenten ist das in Ordnung, aber für einen autonomen Agenten, der Ihnen über einen längeren Zeitraum zur Seite stehen soll, ist das ein grundlegendes Problem.

Ich habe einen KI-Agenten namens RockBot entwickelt, und eine der interessantesten Herausforderungen bei der Entwicklung war es, herauszufinden, wie das Gedächtnis funktionieren soll. Nicht nur der Chatverlauf - sondern ein echtes Gedächtnis. Die Art, die es dem Agenten ermöglicht, Ihre Vorlieben zu kennen, den Kontext vergangener Unterhaltungen abzurufen, temporäre Scratch-Daten zu verwalten und große Ergebnisse zwischen Teilaufgaben weiterzugeben.

Ich habe mich für eine dreistufige Speicherarchitektur entschieden. Jede Ebene dient einem bestimmten Zweck und hat unterschiedliche Eigenschaften in Bezug auf Lebensdauer, Umfang und Speicherung.

Ebene Eins: Gesprächsgedächtnis

Die unmittelbarste Form des Gedächtnisses ist die Verfolgung des aktuellen Gesprächs. Wenn Sie sagen: "Erinnern Sie mich daran, worüber wir gerade gesprochen haben", muss der Agent in der Lage sein, darauf zu antworten, ohne alles noch einmal durch das Modell laufen zu lassen.

RockBot behält ein gleitendes Fenster mit den letzten 50 Zügen pro Sitzung. Wenn die Konversation wächst, werden die ältesten Züge stillschweigend gelöscht, damit der Kontext überschaubar bleibt. Sitzungen, die eine Stunde lang inaktiv waren, werden automatisch gelöscht.

Diese Ebene ist absichtlich flüchtig - sie existiert nur im Speicher und überlebt einen Neustart nicht. Das ist gewollt. Der Gesprächskontext ist spezifisch für eine Sitzung und muss nicht ewig bestehen bleiben. Wenn Sie morgen wiederkommen und eine neue Sitzung beginnen, sollte der Agent Sie begrüßen, ohne davon auszugehen, dass Sie sich mitten in derselben Unterhaltung befinden, die Sie gestern geführt haben.

Ebene zwei: Langzeitgedächtnis

An dieser Stelle wird es interessant. Das Langzeitgedächtnis ist über Sitzungen, Neustarts und die Zeit hinweg beständig. Es ist das Äquivalent des Agenten, der tatsächlich etwas über Sie lernt.

Fakten werden als einzelne Einträge gespeichert, die in Kategorien organisiert sind. Zum Beispiel:

  • user-preferences/timezone - "Benutzer ist in Chicago (Amerika/Chicago)"
  • Benutzerpräferenzen/Kommunikationsstil - "Bevorzugt knappe Antworten; braucht keine schrittweisen Erklärungen für vertraute Themen"
  • project-context/rockbot - Fakten über das Rockbot-Projekt selbst
  • Anti-Patterns/E-Mail - Dinge, die der Agent gelernt hat, im Umgang mit E-Mails nicht zu tun

Diese letzte Kategorie ist eine meiner Lieblingskategorien. Anti-Patterns sind eine spezielle Speicherklasse, die Fehler aufzeichnet - "Tun Sie nicht X, weil Y, sondern Z." Wenn der Agent einen Fehler macht und korrigiert wird, wird die Korrektur in einen Anti-Pattern-Eintrag umgewandelt, so dass derselbe Fehler nicht noch einmal passieren kann.

Rückruf auf Schritt und Tritt

Der knifflige Teil des Langzeitgedächtnisses ist nicht das Speichern, sondern das Wissen, wann es auftauchen soll. Sie können nicht jedes Mal Hunderte von Speichereinträgen in den Kontext des Modells einfügen, das ist teuer und verrauscht. Stattdessen verwendet RockBot das BM25-Ranking (derselbe Algorithmus, der hinter vielen Dokumentensuchsystemen steht), um die relevantesten Erinnerungen auf der Grundlage dessen zu finden, was der Benutzer gerade sagt, und gibt nur die besten Ergebnisse ein.

Außerdem gibt es einen Delta-Injektionsmechanismus: Sobald ein Speichereintrag in die aktuelle Sitzung eingefügt wurde, wird er nicht mehr angezeigt. Dadurch wird verhindert, dass sich dieselben Fakten im Laufe des Gesprächs immer wieder wiederholen, und es können ganz natürlich neue, andere Einträge auftauchen, wenn sich das Thema ändert.

Beim allerersten Durchgang einer Sitzung - bevor es genügend Signale gibt, um eine sinnvolle Stichwortsuche durchzuführen - greift der Agent auf eine kleine Handvoll zufälliger Einträge zurück, um den Kontext herzustellen. Auf diese Weise wird sichergestellt, dass er immer eine gewisse Grundlage für das hat, was er über Sie weiß, selbst zu Beginn.

Speicheranreicherung

Wenn der Agent etwas im Langzeitgedächtnis speichert, wird nicht einfach nur der Rohtext entsorgt. Ein Schritt zur Anreicherung im Hintergrund verwendet den LLM selbst, um den Inhalt zu erweitern und in gut strukturierte, fokussierte Einträge zu organisieren, bevor er sie auf die Festplatte schreibt. Der ursprüngliche Text könnte lauten: "Der Benutzer bevorzugt Besprechungen am frühen Morgen" und der Anreicherungsschritt könnte einen richtig kategorisierten, getaggten Eintrag mit den richtigen Metadaten erzeugen. Der LLM-Aufruf zur Anreicherung hat absichtlich keinen Zugriff auf Speicherwerkzeuge - andernfalls könnten Sie in eine Endlosschleife von Erinnerungen geraten, die Erinnerungen erzeugen.

Stufe 3: Arbeitsgedächtnis

Der Arbeitsspeicher ist der Scratch-Speicher des Agenten. Er ist global, in Namespaces unterteilt und temporär (mit konfigurierbaren TTLs, die standardmäßig fünf Minuten betragen).

Der Hauptanwendungsfall ist der Umgang mit Dingen, die zu groß oder zu vorübergehend für die anderen Ebenen sind. Ein paar konkrete Beispiele:

Großes Werkzeug Ergebnisse. Manchmal liefert ein Tool-Aufruf eine umfangreiche Nutzlast - eine Webseite, eine API-Antwort mit Hunderten von Elementen, einen langen E-Mail-Thread. Das in den Gesprächskontext zu packen, würde Token verbrauchen und alles verlangsamen. Stattdessen speichert der Agent die Daten im Arbeitsspeicher und behält nur einen Verweis. Spätere Turns können sie bei Bedarf abrufen.

Übergabe von Subagentendaten. RockBot unterstützt das Spawnen von Subagenten, um komplexe Forschungs- oder Mehrschrittaufgaben parallel zu bearbeiten. Wenn ein Subagent fertig ist, hat er möglicherweise ein großes Ergebnis produziert. Anstatt zu versuchen, dieses in einer einzigen Nachricht zurückzugeben, schreibt der Subagent seine Ausgabe in seinen eigenen Arbeitsspeicher-Namensraum (subagent/{taskId}/result) und der primäre Agent wird darüber informiert, wo er sie finden kann. Der primäre Agent ruft dann nur das ab, was er braucht, wenn er es braucht.

Ergebnisse der Patrouillenarbeit. RockBot verfügt über autonome "Patrouillen"-Aufgaben, die im Hintergrund nach einem Zeitplan ablaufen - E-Mails prüfen, Systeme überwachen und so weiter. Wenn eine Patrouille etwas findet, das eine Markierung wert ist, schreibt sie in den Arbeitsspeicher unter patrol/{taskName}/. Der primäre Agent kann bei der Bearbeitung einer Benutzernachricht eine Zusammenfassung dessen sehen, was die Patrouillenaufgaben gespeichert haben, ohne den gesamten Inhalt im Voraus laden zu müssen.

Namespace Design

Das Namensraumschema für das Arbeitsgedächtnis ist beabsichtigt:


Agenten können über Namespaces hinweg lesen - eine Benutzersitzung kann die Ausgabe eines Unteragenten abrufen oder prüfen, was eine Patrouillenaufgabe gespeichert hat. Aber Schreibvorgänge gehen immer in den eigenen Namensraum des Aufrufers. Das sorgt für Ordnung und verhindert, dass verschiedene Kontexte auf den Daten des anderen herumtrampeln.

Zu Beginn jeder Runde erhält der Agent ein leichtes Inventar dessen, was sich in seinem Arbeitsspeicher befindet - nur Schlüssel, TTLs und Kategorien, nicht den eigentlichen Inhalt. Auf diese Weise weiß er, was verfügbar ist, ohne die Kosten für das Laden aller Token zu tragen.

Der Traumdienst

Es gibt noch einen weiteren Punkt, den ich erwähnen möchte: einen Hintergrunddienst, den ich den "Dream Pass" nenne und der alle paar Stunden läuft, wenn der Agent ansonsten inaktiv ist.

Seine Aufgabe ist es, das Langzeitgedächtnis selbstständig zu pflegen. Er sucht nach doppelten oder fast doppelten Einträgen und führt sie zusammen, verfeinert Kategorien, löscht veraltete oder überholte Fakten und durchsucht das Gesprächsprotokoll nach wiederkehrenden Mustern, die zu dauerhaften Einstellungen werden sollen. Wenn Sie den Agenten dreimal in der gleichen Sache korrigiert haben, wird der Dream Pass dieses Muster erkennen und einen dauerhaften Einstellungseintrag erstellen, damit der Agent diesen Fehler nicht mehr macht.

Die Präferenzinferenz ist sentiment-gewichtet: eine starke Korrektur führt dazu, dass eine Präferenz nach einem Vorkommen gespeichert wird, eine beiläufige Anregung erfordert mehrere Instanzen, bevor sie zu etwas wird, das es wert ist, beibehalten zu werden.

Warum drei Ebenen?

Jede Ebene löst ein anderes Problem:

  • Beim Gesprächsgedächtnis geht es um die Kohärenz innerhalb einer Sitzung - damit der Agent das Gefühl hat, dass er aufpasst.
  • Beim Langzeitgedächtnis geht es um Kontinuität über die Zeit hinweg - damit der Agent das Gefühl hat, Sie tatsächlich zu kennen.
  • Beim Arbeitsgedächtnis geht es um praktische Fähigkeiten - es gibt dem Agenten einen Ort, an dem er Daten verarbeiten kann, die nicht in ein Gespräch passen.

Zusammen sorgen sie dafür, dass sich RockBot auf eine Weise verhält, die sich qualitativ von einem zustandslosen Chat-Assistenten unterscheidet. Er merkt sich Ihre Vorlieben, ohne dass Sie sie ihm erneut mitteilen müssen. Er kann große, komplexe Aufgaben bewältigen, ohne in Daten zu ersticken. Er kann Arbeit an Subagenten delegieren und die Ergebnisse sauber abrufen. Und er wird jeden Tag ein bisschen besser, in kleinen Schritten.

Das Einbauen eines Gedächtnisses in einen KI-Agenten gehört zu den Problemen, die auf den ersten Blick einfach aussehen - man speichert einfach einen Chatverlauf, richtig? - und sich dann in etwas viel Differenzierteres verwandelt, sobald man anfängt, es ernst zu nehmen. Ich denke, dass der dreistufige Ansatz ein gutes Gleichgewicht zwischen Fähigkeiten und Einfachheit schafft, und ich bin zufrieden mit der Entwicklung.

Verfasst von

Rockford Lhotka

Hello, I’m Rocky Lhotka, software architect, open source contributor, author, and speaker. I am VP of Strategy for Xebia-Microsoft Services USA and Chief Software Architect at Marimer LLC. Find me at; Mastodon: @rockylhotka@fosstodon.org GitHub: rockfordlhotka Link tree: Rockford Lhotka

Contact

Let’s discuss how we can support your journey.