Ein Gedächtnis, das seine Meinung ändern kann

Letzten Monat hat Ihr Kunde seine Bestelldatenbank von Postgres auf MariaDB umgestellt. Sie haben es dem Agenten gesagt, und er hat es notiert. Diesen Monat fragen Sie beiläufig, welche Datenbank der Bestellservice nutzt — und er antwortet ohne Zögern Postgres. Wenn Sie nachsehen, ist der neuere Fakt da, der ältere steht auch noch da, und keiner von beiden sagt Ihnen, welchem Sie glauben sollen. Das Schwierige am Gedächtnis war nie das Speichern. Es ist das Meinung-Ändern: Die Welt bewegt sich, eine Notiz stellt sich als falsch heraus, eine Aussage gilt nicht mehr — und „vergessen“ sollte nicht heißen „der Text steht immer noch in der Datei“.
Der lokale Faktenspeicher holographic hat in den letzten Wochen genau diese Hälfte gefüllt. Früher lebte er als gebündelter Provider im Hermes-Baum; am 11. Oktober zog er in das eigene Repository seines Maintainers und wird seither als Katalog-Plugin ausgeliefert, und am 13. Oktober wurde er auf 0.13.0 gehoben. Dieses Upgrade brachte mehr als eine neue Adresse.
Vom Überschreiben zur Revision: fünf Aktionen
Bis vor Kurzem gab es ungefähr zwei Dinge, die Sie mit einem gemerkten Fakt tun konnten: einen hinzufügen oder ihn löschen und neu anlegen. Die zweite Option änderte still die id des Fakts, sodass alles, was auf diese id zeigte, brach. Ein Fakt hat jetzt seine eigene Historie, und die Aktionen teilen sich in fünf Wege:
| Aktion | Wann Sie sie nutzen | Was sie bedeutet |
|---|---|---|
change |
die Welt hat sich bewegt (dieselbe Sache, neue Antwort) | eine neue Version desselben Fakts; die id bleibt |
correct |
die Notiz war schon beim Schreiben falsch | eine Korrektur; die überholte Formulierung erscheint nicht mehr |
end |
gilt nicht mehr, war aber nie falsch | abschließen, die Historie behalten |
revert |
Sie wollen die letzte Änderung rückgängig machen | zurück zur vorherigen Version |
history |
Sie wollen sehen, was dieser Fakt durchgemacht hat | listet jede Version |
Kompatibilität ist geregelt: Die alten Schreibweisen funktionieren weiter. add supersedes wird als change behandelt (und ändert die id nicht mehr), update content als correct und remove als forget. Ihre bestehenden Skripte müssen nicht umgeschrieben werden.
Die Frage „was dachten wir damals“: as_of
Sobald es eine Historie gibt, taucht eine neue Frage auf: Wollen Sie wissen, was jetzt gilt, oder was Sie am 10. September geglaubt haben? Die beiden Antworten können auseinandergehen, und während eines Incidents brauchen Sie meistens die zweite.
Search und list akzeptieren daher ein as_of-Argument wie as_of: 2026-09-10. Es antwortet nur aus den Versionen, die an diesem Datum galten, und liefert eine separate undetermined-Liste für Fakten, deren Zustand an diesem Datum nicht feststellbar ist. Ein unbekannter Anfang wird als unbekannt gemeldet, statt erfunden zu werden — das ist der Teil, der Beachtung verdient. Das Standard-Search sieht weiterhin nur aktuelle Fakten: Historischer Text liegt in einer eigenen Tabelle und einem eigenen Index und verunreinigt die alltäglichen Ergebnisse also nie.
Jede Version hält außerdem fest, wo sie geschrieben wurde — Plattform, Chat- oder Thread-id, Session-id sowie id und Name des Autors des Turns. Chat-Titel werden nie gespeichert, die Herkunft zieht also nicht still Ihre Gruppennamen in die Datenbank.
Wirklich vergessen
Auf vielen Systemen setzt „löschen“ nur ein Flag, während der Text in der Datei und in Backups bleibt. forget geht weiter: Der Fakt und jede seiner Versionen werden entfernt, beide Volltext-Indizes neu aufgebaut, die Operation läuft mit secure_delete, danach folgen ein VACUUM und das Kürzen des WAL — das Ziel ist, dass der Text die Datei verlässt und nicht nur die Abfrageergebnisse.
Was übrig bleibt, ist ein Grabstein mit der id und einem gehashten Schlüssel, nie der Text. Das hindert die Auto-Extraktion daran, den Fakt wiederauferstehen zu lassen, und erlaubt anderen Tools, ihre eigenen Kopien anhand der id zu bereinigen. Die Kosten sollte man klar benennen: Das lässt sich nicht rückgängig machen.
Ein Bot, viele unabhängige Gruppen: scope: chat und scope: thread
Wenn Ihr Bot in mehreren Kundengruppen sitzt, ist es riskant, jeden Fakt in eine einzige Datenbank zu stopfen. scope: chat gibt jedem Gespräch seine eigene Datenbank; scope: thread geht eine Ebene feiner, pro Forum-Thema. Beide nutzen die Chat- und Thread-ids, die der Core ohnehin an Memory-Provider übergibt — keine Core-Änderungen und keine eigene Routing-Logik.
Drei Sicherheitslinien: Credentials, Bilder, nicht vertrauenswürdiger Text
Ein Memory-Store hat eine leicht übersehene Angriffsfläche: Alles, was er hält, wird in jeden späteren Turn injiziert. Schreiben allein reicht deshalb nicht — Inhalte werden auch auf dem Weg nach draußen geprüft.
- Credentials mit Wert werden nie gespeichert. Ein Credential-Wort mit dem Wert daneben (
password hunter2,API key sk-…) wird mit Begründung abgelehnt; das Wort allein bleibt ein legitimer Fakt („Ich nutze einen Passwort-Manager“). 0.13.0 hat das Fenster auf drei Wörter erweitert und dabei Fehlalarme reduziert:the token is 0.125 USDist ein Preis, kein Passwort. - Ein Bild ist kein Fakt. Markdown- oder HTML-Bildsyntax wird nie als Fakt behandelt, weil der Client, der sie rendert, diese Adresse selbst abruft und Daten im Pfad oder im Query-String mitreisen können.
- Der Recall prüft vor dem Injizieren erneut. In 0.13.0 wird ein Fakt auf dem Weg nach draußen noch einmal geprüft: Chat-Rollen- oder Tool-Call-Markup, instruktionsartige Formulierungen, ein Credential mit Wert, unsichtbare Zeichen und Bilder halten einen Fakt aus dem Recall heraus, protokolliert einmal pro Prozess. Beachten Sie, dass das nichts löscht —
search,listundhistoryzeigen ihn weiterhin, denn Sie haben gefragt, und Sie dürfen ihn korrigieren oder vergessen.
Eine Falle, die man kennen sollte: Schreibvorgänge aus Cron
Wenn Sie die Memory-Pflege zeitgesteuert laufen lassen — etwa ein nächtliches Aufräumen —, gab es einen Bug, der lange still blieb: Seit 0.2.0 wirkten Memory-Schreibvorgänge aus einem Cron-Job einfach nicht. Der Core übergibt agent_context: "cron", und das Plugin behandelte jeden solchen Kontext als read-only, sodass Ihr Wartungsjob weiter Erfolg meldete, während er nichts speicherte. Das nächtliche Konsolidierungs-Plugin gehört zu der Sorte, die hier hineinläuft.
Das ist jetzt getrennt: Explizite fact_store- und fact_feedback-Aufrufe aus Cron schreiben wieder (cron_writes, standardmäßig an), während automatische Schreibvorgänge — Auto-Extraktion, Mirroring, Recall-Zähler — dort aus bleiben. Ein manuelles Aufräumskript kann seine Aufgabe erledigen, ohne unbeaufsichtigt still Fakten anzuhäufen.
Zum Umzug: Für Sie gibt es nichts zu tun
Holographic lebte früher im Core-Baum (plugins/memory/holographic/); seit dem 11. Oktober ist es ein Katalog-Plugin, gepflegt von itpartypattaya. Die gute Nachricht: Nur der Code hat die Adresse gewechselt:
- der Provider-Name ist unverändert —
memory.provider: holographicfunktioniert weiter; - der Config-Abschnitt ist unverändert — weiterhin
plugins.hermes-memory-store; - die Datenbank ist unverändert — weiterhin
$HERMES_HOME/memory_store.dboder das von Ihnen gesetztedb_path; - die Tools sind unverändert.
Der Upgrade-Pfad ist automatisch: hermes update installiert das Katalog-Plugin für jedes Profil-Home, das den Provider nennt, und wenn Sie über die Desktop-App aktualisieren, installiert der Agent es und sagt es Ihnen beim ersten Start. Wenn die Installation nicht möglich ist, bleiben Sie nicht still gedächtnislos — mit security.allow_lazy_installs: false, offline oder bei abgelehnter Installation nennt die Warnung den genauen Befehl hermes plugins install holographic für dieses Profil. Zwei Befehle bestätigen den Zustand:
hermes memory status
hermes plugins list
Der vollständige Installations- und Wechselablauf:
hermes plugins install holographic # aus dem Plugin-Katalog
hermes memory setup # Provider interaktiv wählen
# oder direkt setzen:
hermes config set memory.provider holographic
Die Mechanik des Umzugs entspricht dem, was wir in Memory-Provider verlassen den Core geschrieben haben; der Unterschied ist diesmal, was das Plugin danach zugewachsen ist. (Wenn Sie die Zwischenkopie von Nous Research aus ihrem eigenen Repository installiert haben, bringt Sie hermes plugins update holographic auf den Katalogeintrag, und Ihre Daten bleiben, wo sie sind.)
Wie es sich vergleicht
| Option | Was gespeichert wird | Am besten für |
|---|---|---|
| Eingebautes MEMORY.md / USER.md | Präferenzen und Fakten, die Sie immer geladen haben wollen | alle (immer aktiv) |
| holographic (dieser Artikel) | ein lokaler SQLite-Faktenspeicher mit Versionshistorie und Vertrauenswerten | vollständig lokal, wenn Sie Revisionen und echtes Löschen brauchen |
| Semantisches Gedächtnis (LanceDB) | Langzeitgedächtnis, per Vektorähnlichkeit abgerufen | Recall nach Bedeutung statt nach Fakt |
| Nächtliche Konsolidierung (Dreaming) | bestätigt über Nacht Kandidaten-Fakten und schlägt vor, was bleiben soll | Sie halten bereits einen Faktenspeicher und wollen, dass er konvergiert |
Mehrsprachiger Recall hat ebenfalls zugelegt. Vereinfachtes und traditionelles Chinesisch werden als jeweils andere Schreibweise erkannt, japanische Schreibvarianten treffen sich, deutsche Komposita werden in beide Richtungen getrennt, russische Wörter gleicher Wurzel kommen aus einem Wörterbuch, und englische, spanische, französische sowie portugiesische Wortformen sind abgedeckt — Daten aus Open English Wordnet, jieba, SudachiDict, Wikidata Lexemes und DerivBase.Ru, unter den Lizenzen CC BY 4.0, MIT, Apache-2.0 bzw. CC0. Die Blind-Set-Zahlen des Maintainers: Chinesische Fragen in der jeweils anderen Schrift gingen von 33 % auf 100 % Recall, russische Fragen gleicher Wurzel von 83 % auf 92 %. Diese Zahlen sind Messungen des Maintainers — nützlich, kein Evangelium. Wenn Sie weniger Rauschen wollen, sind recall_indicator (standardmäßig an) und auto_extract (standardmäßig aus) die beiden Schalter, zu denen Sie greifen; Vertrauen steigt um +0,05 bei hilfreichem Feedback und sinkt um −0,10 bei unhilfreichem.
Die Kurzfassung
- Die Welt ändert sich, und Notizen stellen sich als falsch heraus. Ein Gedächtnis, das sich selbst revidieren kann, verdient den Namen:
change/correct/end/revertbehalten die Versionen, undas_ofbringt Sie zurück zu dem, was an einem bestimmten Tag galt. - Vergessen ist eine destruktive Operation: jede Version, jeder Index, jeder Rest in der Datei, übrig bleibt ein Grabstein ohne Text — und es lässt sich nicht rückgängig machen.
- Inhalte vor dem Injizieren erneut zu prüfen, macht diesen Speicher vertrauenswürdig: Credentials, Bilder und imperativ klingender Text reisen nie unbemerkt in den nächsten Turn.
- Wenn holographic schon konfiguriert ist, verlangt das Upgrade nichts von Ihnen. Wenn nicht, ist es jetzt ein Katalog-Plugin, und ein Befehl installiert es.