Zum Inhalt springen
Daniel Gietmann
← Blog
KI

Warum ich das Gedächtnis meiner Agents in Hindsight ablege

Wie ich Projektwissen zwischen mehreren Coding-Agents teile und warum ich mich für einen selbst gehosteten Hindsight-Server entschieden habe.

Ich nutze mehr als einen Coding-Agent. Claude Code, Grok, Pi, nächsten Monat vielleicht etwas anderes. Wenn das Gedächtnis in einem davon steckt, fängt der nächste bei null an. Das ist das ganze Problem.

Also habe ich mir die üblichen Optionen angesehen. Mem0. Das Gedächtnis, das Claude mitbringt. Ein lokales Plugin namens claude-mem. Einen selbstgebauten RAG-Haufen. Gelandet bin ich bei Hindsight, selbst gehostet unter meiner eigenen URL, mit einer Bank pro Repository. Hier ist, warum.

Was ich tatsächlich brauche

Ich brauche keinen Chatbot, der sich meine Lieblingsfarbe merkt. Ich brauche die Entscheidung von letzter Woche zu einer DNS-Zone, sobald ich dasselbe Repo in einem anderen Agent öffne.

Das heißt drei Dinge.

Der Speicher muss außerhalb des Tools liegen. Claudes eigenes Gedächtnis ist weg, sobald ich nicht in Claude bin.

Projekte müssen getrennt bleiben. Ein Fakt aus einem Kunden-Repo darf nicht in ein Nebenprojekt durchsickern, nur weil das Embedding nah genug dran war.

Schreiben und Lesen müssen langweilig sein. Wenn ich nach jedem nützlichen Schritt daran denken muss, add() aufzurufen, vergesse ich es.

Mem0

Mem0 ist der Name, den jeder kennt. Du schickst eine Unterhaltung hin, es extrahiert Fakten, später suchst du danach. Gehostet oder selbst gehostet. Ein Key in der Umgebung, fertig. Der Key liegt immer noch in meiner Shell.

Für ein einzelnes Produkt mit einer user_id ist das in Ordnung. Das Modell ist „ein Sack voller Erinnerungen pro Nutzer, vielleicht nach Metadaten gefiltert“. So arbeite ich nicht. Ich habe Dutzende Repos. Manche sind Kundenarbeit. Manche sind Experimente. Die sollten sich keinen Sack teilen.

Isolation kannst du mit Filtern vortäuschen. Filter sind weich. Ich habe oft genug gesehen, wie Agents die fast richtige Erinnerung aus dem falschen Projekt holen, um dem nicht mehr zu trauen.

Mem0 will außerdem aufgerufen werden. Der Agent (oder ein Wrapper) muss hinzufügen und suchen. Das funktioniert, bis du drei Clients hast und jeder Wrapper es ein bisschen anders macht. Dann hast du drei halb gefüllte Speicher.

Ich hatte es eine Weile in Grok aktiviert, aber es ist nie ein verlässlicher Teil meines Workflows geworden.

Das Gedächtnis im Tool

Claude merkt sich inzwischen Dinge. Cursor auch. Bequem, und eingesperrt.

Sobald ich dasselbe Repo in Grok geöffnet habe, war dieses Gedächtnis weg. Ich werde keine Einstellungen in jedes Produkt kopieren. Und ich will nicht, dass ein Anbieter die einzige Kopie von „warum dieser DNS-Eintrag so aussieht“ besitzt.

Nutz das eingebaute Gedächtnis für UI-Kleinigkeiten, wenn du willst. Architektur gehört da nicht rein.

claude-mem

Vor Hindsight hatte ich claude-mem laufen. Lokale Beobachtungen, sehr viele davon. Es gab das nur für Claude Code.

Als ich gewechselt bin, war die Datenbank noch da. Zehntausende Beobachtungen. Nützlich als Archiv, aber für die anderen Agents in meinem Workflow nicht erreichbar. Ich brauchte einen gemeinsamen Speicher, auf den jedes Tool zugreifen kann.

Ich habe das Plugin abgeschaltet und die Dateien behalten. Abfragen tue ich jetzt Hindsight.

Was Hindsight kann und die anderen nicht

Hindsight ist kein Vector Store mit hübscherer API. Du übergibst Rohmaterial (retain). Es extrahiert Fakten, Entitäten und Zeitpunkte. Später holst du es wieder ab (recall). Du kannst es nachdenken lassen (reflect). Im Hintergrund fasst es überlappende Fakten zu Beobachtungen zusammen, damit die Bank nicht einfach endlos als Rumpelkammer wächst.

Die Einheit, die mich interessiert, ist die Bank. Eine Bank ist eine harte Wand. Gedächtnis in my_websites taucht nicht in gietmanic-networking auf, außer ich lege es dort ab. Tags können innerhalb einer Bank filtern. Über die Wand kommen sie nicht.

Ich habe eine Bank pro Git-Repo, benannt nach dem Ordner. Claude, Grok und Pi zeigen alle auf denselben Server. Repo öffnen, Bank bekommen. Keine Kopie pro Tool. Kein „ich hab’s Claude letzte Woche gesagt“.

Ich hoste es selbst. MIT-Lizenz, Postgres, ein API-Key, eine kleine Kiste. Wenn das SaaS verschwindet, habe ich die Daten trotzdem. Das war mir wichtiger als ein Leaderboard-Screenshot.

Kostenlos im Sinne von „null Betrieb“ ist es nicht. Recall war langsam, bis ich aufgehört habe, den Reranker auf einer winzigen CPU laufen zu lassen. Das lag an mir, nicht an der Idee. Sobald er ausgelagert war, war es schnell genug, dass ich nicht mehr darüber nachgedacht habe.

Die anderen, kurz

RAG ist für Dokumente, die du schon geschrieben hast. Es schaut keiner Session zu und behält die Entscheidung. Suche über Repos nutze ich weiterhin. Das ist kein Gedächtnis.

Zep und ähnliche Graph-Speicher sind für lange Assistenten-Chats gebaut. Ich baue keinen Begleiter. Ich springe zwischen Codebasen hin und her.

Supermemory und die übrigen gehosteten „ein Gedächtnis für jede KI“-Tools wollen die Schicht sein. Ich habe schon eine Schicht. Ich wollte nur, dass sie mir gehört.

Warum Hindsight für mich gewinnt

Mem0 ist am ersten Tag einfacher. Das eingebaute Gedächtnis eines Produkts ist in der ersten Minute einfacher. In meinem Workflow brauchten beide Zusatzarbeit, um einen weiteren Agent zu unterstützen und Kundenprojekte getrennt zu halten.

Hindsight nicht, weil das Gedächtnis nicht im Agent steckt. Es ist ein Server mit Wänden. Ich wähle die Wand über den Ordner, in dem ich bin. Jedes Tool, das ich nutze, kann diese Wand lesen und beschreiben.

Deshalb habe ich es gewählt: Ich kann ein Tool schließen, ein anderes im selben Repository öffnen und mit demselben Projektgedächtnis weitermachen.