Über Unterhaltungen hinweg erinnern
Aktivieren Sie für einen persönlichen oder vollständig vertrauenswürdigen Agenten mit einer Einstellung pro Agent den begrenzten Abruf aus dessen anderen privaten Unterhaltungen:session.dmScope muss
nicht gesetzt oder "main" sein, und keine Bindung darf session.dmScope überschreiben. Jede konfigurierte
DM-Isolierung deaktiviert sie standardmäßig. Ein explizites true oder false hat immer Vorrang. Wenn
die Funktion aktiviert ist, indiziert OpenClaw die Sitzungstranskripte dieses Agenten und führt vor geeigneten privaten Antworten einen Active-Memory-Abrufdurchlauf aus. Der Durchlauf kann
relevante Transkriptauszüge aus anderen privaten Unterhaltungen desselben Agenten lesen.
Die Unterhaltung, die gerade beantwortet wird, ist ausgeschlossen.
Die Datenschutzgrenze ist fest definiert:
- Private direkte und dauerhafte explizite UI-Unterhaltungen können einander abrufen
- Gruppen und Kanäle sind weder Abrufquellen noch Abrufziele
- Die Transkripte eines anderen Agenten sind niemals zulässig
- Unbekannte oder archivierte Transkripte ohne ausreichende Unterhaltungsmetadaten werden abgelehnt
tools.sessions.visibility erweitert oder ein breiterer Zugriff auf das Tool sessions_* gewährt. Der gemeinsam genutzte
Arbeitsbereichsspeicher (MEMORY.md und memory/*.md) behält sein bisheriges Verhalten bei.
Active Memory muss aktiviert bleiben. Der Abruf fügt geeigneten Antworten einen begrenzten blockierenden Schritt hinzu; bei Zeitüberschreitung, nicht verfügbarer Suche und leeren Ergebnissen wird
die Antwort jeweils ohne abgerufenen Transkriptkontext fortgesetzt. Der integrierte Speicher-Provider von OpenClaw
unterstützt diesen geschützten Transkriptabrufpfad sowohl mit dem integrierten
als auch mit dem QMD-Backend. Andere Speicher-Provider behalten ihr eigenes Abrufverhalten bei, erhalten jedoch
nicht automatisch eine Autorisierung für private Transkripte. openclaw doctor
meldet einen nicht unterstützten Provider oder ein fehlendes Tool memory_search.
Schnellstart für erweitertes Active Memory
Fügen Sie Folgendes als erweiterte sichere Standardeinstellung inopenclaw.json ein: Plugin aktiviert, auf
main begrenzt, nur Direktnachrichtensitzungen, Modell von der Sitzung übernommen.
plugins.entries.* (einschließlich active-memory.config) gehört zur Konfigurationskategorie ohne
Neustart:
Der Gateway lädt die Plugin-Laufzeit automatisch neu, und es ist kein manueller Neustart
erforderlich. Wenn Sie dennoch einen vollständigen Neustart erzwingen möchten, führen Sie Folgendes aus:
plugins.entries.active-memory.enabled: trueaktiviert das Pluginconfig.agents: ["main"]aktiviert ausschließlich den Agentenmainconfig.allowedChatTypes: ["direct"]begrenzt die Funktion auf Direktnachrichtensitzungen (Gruppen/Kanäle müssen explizit aktiviert werden)config.model(optional) legt ein eigenes Abrufmodell fest; wenn nicht gesetzt, wird das aktuelle Sitzungsmodell übernommenconfig.modelFallbackwird nur verwendet, wenn weder ein explizites noch ein übernommenes Modell aufgelöst werden kannconfig.fastModeüberschreibt optional den schnellen Modus für den Abruf, ohne den Hauptagenten zu ändernconfig.promptStyle: "balanced"ist die Standardeinstellung für den Modusrecent- Active Memory wird weiterhin nur für geeignete interaktive dauerhafte Chatsitzungen ausgeführt (siehe Ausführungsbedingungen)
Funktionsweise
Der blockierende Sub-Agent kann nur die konfigurierten Tools zum Abrufen von Erinnerungen aufrufen (siehe Speicher-Tools). Wenn die Verbindung zwischen der Abfrage und dem verfügbaren Speicher schwach ist, gibt erNONE zurück, und die Hauptantwort wird
ohne zusätzlichen Kontext fortgesetzt.
Active Memory ist eine Funktion zur Anreicherung von Unterhaltungen und keine plattformweite
Inferenzfunktion:
Verwenden Sie die Funktion, wenn die Sitzung dauerhaft und benutzerorientiert ist, der Agent über
relevanten Langzeitspeicher zum Durchsuchen verfügt und Kontinuität/Personalisierung
wichtiger sind als die reine Deterministik des Prompts: stabile Präferenzen, wiederkehrende Gewohnheiten,
langfristiger Kontext, der auf natürliche Weise bereitgestellt werden soll. Die Funktion eignet sich schlecht für
Automatisierung, interne Worker, einmalige API-Aufgaben oder Bereiche, in denen verborgene
Personalisierung überraschend wäre.
Ausführungsbedingungen
Active Memory verfügt über zwei Aktivierungspfade:- Über Unterhaltungen hinweg erinnern richtet sich automatisch an Agenten, deren
effektive Einstellung
memory.search.rememberAcrossConversationsaktiviert ist, jedoch nur für private direkte oder dauerhafte explizite UI-Unterhaltungen. - Erweitertes Active Memory richtet sich an die in
plugins.entries.active-memory.config.agentsaufgeführten Agenten-IDs und wendet die Steuerelemente des Plugins für Chattyp und Chat-ID an.
/active-memory off pausiert beide
Pfade für diese Unterhaltung. Wenn eine Bedingung nicht erfüllt ist, wird Active Memory
für diesen Durchlauf nicht ausgeführt, und die Hauptantwort bleibt unbeeinflusst.
Sitzungstypen
config.allowedChatTypes steuert, für welche Arten von Unterhaltungen der
erweiterte Active-Memory-Pfad ausgeführt werden darf. Der Umfang von „Über Unterhaltungen hinweg erinnern“ kann dadurch nicht erweitert werden:
Diese Produkteinstellung bleibt auf private Unterhaltungen beschränkt, selbst wenn erweitertes Active Memory
in Gruppen oder Kanälen zugelassen ist. Standard:
direct, group, channel, explicit (portalartige Sitzungen
mit einer nicht transparenten Sitzungs-ID, zum Beispiel agent:main:explicit:portal-123).
Direktnachrichtensitzungen werden standardmäßig ausgeführt; Gruppen-, Kanal- und explizite Sitzungen
müssen aktiviert werden:
config.allowedChatIds und config.deniedChatIds hinzu:
allowedChatIdsist eine Positivliste aufgelöster Unterhaltungs-IDs. Wenn sie nicht leer ist, wird Active Memory nur für Sitzungen ausgeführt, deren Unterhaltungs-ID in der Liste enthalten ist. Dadurch wird jeder zulässige Chattyp gleichzeitig eingeschränkt, einschließlich Direktnachrichten. Um alle Direktnachrichten beizubehalten und nur Gruppen einzuschränken, fügen Sie die IDs der direkten Gesprächspartner ebenfalls zuallowedChatIdshinzu, oder begrenzen SieallowedChatTypesauf die getestete Einführung für Gruppen/Kanäle.deniedChatIdsist eine Sperrliste, die stets Vorrang vorallowedChatTypesundallowedChatIdshat.
chat_id/open_id, Telegram-Chat-ID, Slack-Kanal-ID). Beim Abgleich wird
nicht zwischen Groß- und Kleinschreibung unterschieden. Wenn allowedChatIds nicht leer ist und OpenClaw
keine Unterhaltungs-ID für die Sitzung auflösen kann, überspringt Active Memory den Durchlauf,
anstatt zu raten.
Sitzungsschalter
Pausieren oder setzen Sie Active Memory für die aktuelle Chatsitzung fort, ohne die Konfiguration zu bearbeiten:plugins.entries.active-memory.config.enabled noch die Einstellung
memory.search.rememberAcrossConversations eines Agenten oder eine andere globale
Konfiguration.
Um die Funktion stattdessen für alle Sitzungen zu pausieren oder fortzusetzen, verwenden Sie die globale Form (erfordert
Eigentümer oder operator.admin):
plugins.entries.active-memory.config.enabled, lässt jedoch
plugins.entries.active-memory.enabled aktiviert, sodass der Befehl weiterhin
verfügbar bleibt, um Active Memory später wieder zu aktivieren.
Sichtbarkeit
Standardmäßig fügt Active Memory ein verborgenes, nicht vertrauenswürdiges Prompt-Präfix ein, das in der normalen Antwort nicht angezeigt wird. Aktivieren Sie die Sitzungsschalter, die der gewünschten Ausgabe entsprechen:/verbose onfügt eine Statuszeile hinzu:🧩 Active Memory: status=ok elapsed=842ms query=recent summary=34 chars/trace onfügt eine Debug-Zusammenfassung hinzu:🔎 Active Memory Debug: Lemon pepper wings with blue cheese.
/trace raw zeigt der nachverfolgte Block Model Input (User Role) das unverarbeitete
verborgene Präfix:
Abfragemodi
config.queryMode steuert, wie viel von der Unterhaltung der blockierende Sub-Agent
sieht. Wählen Sie den kleinsten Modus, der Folgefragen weiterhin zuverlässig beantwortet; erhöhen Sie
timeoutMs mit zunehmender Kontextgröße von message über recent bis full.
- message
- recent
- vollständig
Nur die neueste Benutzernachricht wird gesendet.Verwenden Sie diese Einstellung, wenn Sie das schnellste Verhalten und die stärkste Gewichtung auf den Abruf stabiler
Präferenzen wünschen und Folgedurchläufe keinen Unterhaltungskontext
benötigen. Beginnen Sie für
config.timeoutMs bei etwa 3000–5000 ms.Prompt-Stile
config.promptStyle steuert, wie bereitwillig oder streng der Sub-Agent beim
Zurückgeben von Erinnerungen vorgeht:
Standardzuordnung, wenn
config.promptStyle nicht festgelegt ist:
config.promptStyle überschreibt die Zuordnung immer.
Modell-Fallback-Richtlinie
Wennconfig.model nicht festgelegt ist, löst Active Memory ein Modell in dieser Reihenfolge auf:
config.modelFallbackPolicy ist ein veraltetes Kompatibilitätsfeld, das für
ältere Konfigurationen beibehalten wird; es ändert das Laufzeitverhalten nicht mehr — modelFallback ist
ausschließlich die letzte Option in der obigen Kette und kein Laufzeit-Failover, das
ein anderes Modell einsetzt, wenn beim aufgelösten Modell ein Fehler auftritt.
Geschwindigkeitsempfehlungen
config.model nicht festzulegen (also das Sitzungsmodell zu übernehmen), ist der sicherste
Standard: Dadurch werden Ihre bestehenden Präferenzen für Provider, Authentifizierung und Modell übernommen. Für
geringere Latenz sollten Sie stattdessen ein dediziertes schnelles Modell verwenden — die Abrufqualität ist wichtig,
doch die Latenz ist hier wichtiger als im Hauptantwortpfad, und die Tool-Oberfläche
ist schmal (nur Tools zum Erinnerungsabruf).
Gute Optionen für schnelle Modelle:
cerebras/gpt-oss-120b, ein dediziertes Abrufmodell mit niedriger Latenzgoogle/gemini-3-flash, ein Fallback mit niedriger Latenz, ohne Ihr primäres Chatmodell zu ändern- Ihr normales Sitzungsmodell, indem Sie
config.modelnicht festlegen
Cerebras-Einrichtung
chat/completions-Zugriff für das gewählte
Modell verfügt — die Sichtbarkeit von /v1/models allein garantiert dies nicht.
Erinnerungs-Tools
config.toolsAllow legt die konkreten Tool-Namen fest, die der blockierende Sub-Agent
für erweitertes Active Memory aufrufen darf. Die Standardwerte hängen vom aktuellen Erinnerungs-Provider ab:
Wenn keines der konfigurierten Tools verfügbar ist oder die Ausführung des Sub-Agenten fehlschlägt,
überspringt Active Memory den Abruf für diesen Durchlauf, und die Hauptantwort wird
ohne Erinnerungskontext fortgesetzt. Bei benutzerdefinierten Abruf-Tools gelten nicht leere, für das Modell sichtbare
Tool-Ausgaben als Abrufbeleg, sofern strukturierte Ergebnisfelder nicht
ausdrücklich ein leeres Ergebnis oder einen Fehler melden.
toolsAllow akzeptiert ausschließlich konkrete Namen von Erinnerungs-Tools: Platzhalter, group:*-Einträge
und zentrale Agenten-Tools (read, exec, message, web_search und
ähnliche) werden vor dem Start des verborgenen Sub-Agenten stillschweigend herausgefiltert.
Integrierter Speicher
Kein expliziter Wert fürtoolsAllow erforderlich:
LanceDB-Speicher
Nach der Installation und Konfiguration von LanceDB verwendet Active Memory automatischmemory_recall; ein expliziter Wert für toolsAllow ist nicht erforderlich:
memory.search.rememberAcrossConversations stellt private Sitzungs-
transkripte nicht über memory_recall bereit. Verwenden Sie den automatischen Abruf von LanceDB oder die erweiterte
Konfiguration oben, wenn LanceDB der aktive Erinnerungs-Provider ist.
Lossless Claw
Lossless Claw ist ein externes Kontext-Engine-Plugin (openclaw plugins install @martian-engineering/lossless-claw) mit eigenen Abruf-Tools. Richten Sie es zunächst als
Kontext-Engine ein; siehe Kontext-Engine. Verweisen Sie Active Memory anschließend
auf dessen Tools:
lcm_expand hier nicht zu toolsAllow hinzu; Lossless Claw verwendet es als
Tool auf niedrigerer Ebene für die delegierte Erweiterung, nicht für den übergeordneten
Active-Memory-Sub-Agenten. Lossless Claw verändert die Kontextzusammenstellung, ohne
den aktuellen Erinnerungs-Provider zu ersetzen. Behalten Sie memory_search in toolsAllow,
wenn Sie zusätzlich rememberAcrossConversations verwenden; eine reine LCM-Tool-Liste bleibt
für erweitertes Active Memory gültig, deaktiviert jedoch den produktinternen Pfad zum Abruf von Transkripten.
Erweiterte Ausweichmöglichkeiten
Nicht Teil der empfohlenen Einrichtung.config.thinking überschreibt die Denkstufe des Sub-Agenten (Standard: "off",
da Active Memory im Antwortpfad ausgeführt wird und zusätzliche Denkzeit unmittelbar
zu einer für Benutzer sichtbaren Latenz führt):
config.fastMode überschreibt den schnellen Modus nur für den blockierenden Erinnerungs-Sub-Agenten.
Verwenden Sie true, false oder "auto"; lassen Sie den Wert nicht festgelegt, um die normalen
Standardwerte für Agent, Sitzung und Modell zu übernehmen. "auto" verwendet den konfigurierten
fastAutoOnSeconds-Grenzwert des Abrufmodells:
config.promptAppend fügt Operatoranweisungen nach dem Standard-Prompt
und vor dem Unterhaltungskontext hinzu — kombinieren Sie dies mit einem benutzerdefinierten toolsAllow, wenn
ein nicht zum Kern gehörendes Erinnerungs-Plugin eine bestimmte Tool-Reihenfolge oder Anfragegestaltung benötigt:
config.promptOverride ersetzt den Standard-Prompt vollständig (der Unterhaltungs-
kontext wird anschließend weiterhin angefügt). Nicht empfohlen, außer Sie testen bewusst
einen anderen Abrufvertrag — der Standard-Prompt ist darauf abgestimmt, entweder
NONE oder kompakten Kontext mit Benutzerfakten für das Hauptmodell zurückzugeben:
Transkriptpersistenz
Ausführungen blockierender Sub-Agenten erstellen während des Aufrufs ein echtessession.jsonl-Transkript.
Standardmäßig wird es in ein temporäres Verzeichnis geschrieben und unmittelbar
nach Abschluss der Ausführung gelöscht.
So behalten Sie diese Transkripte zur Fehlerbehebung auf dem Datenträger:
config.transcriptDir. Verwenden Sie dies
mit Bedacht: Transkripte können sich in stark ausgelasteten Sitzungen schnell ansammeln, der Abfragemodus full
dupliziert einen großen Teil des Unterhaltungskontexts, und diese Transkripte enthalten
verborgenen Prompt-Kontext sowie abgerufene Erinnerungen.
Konfiguration
Die gesamte Active-Memory-Konfiguration befindet sich unterplugins.entries.active-memory.
Nützliche Felder zur Feinabstimmung:
Empfohlene Einrichtung
Beginnen Sie mitrecent:
/verbose on für die Statuszeile und /trace on für die Debug-Zusammenfassung
— beide werden nach der Hauptantwort als Folgenachricht gesendet, nicht
davor. Wechseln Sie anschließend für geringere Latenz zu message oder zu full, wenn der zusätzliche Kontext
die langsamere Ausführung des Sub-Agenten wert ist.
Karenzzeit beim Kaltstart
Vor v2026.5.2 verlängerte das PlugintimeoutMs während des Kaltstarts stillschweigend um zusätzliche 30000
ms, sodass sich das Aufwärmen des Modells, das Laden des Einbettungsindex und der erste
Abruf ein größeres gemeinsames Budget teilen konnten. Mit v2026.5.2 wurde diese Karenzzeit hinter eine
explizite setupGraceTimeoutMs-Konfiguration verschoben: timeoutMs ist nun standardmäßig das Budget für die Abrufarbeit,
sofern Sie die Karenzzeit nicht ausdrücklich aktivieren. Der blockierende Hook umschließt dieses Budget mit
zwei festen Phasen: bis zu 1500 ms für die Vorabprüfung von Sitzung und Konfiguration, bevor der Abruf
beginnt, und anschließend separate feste 1500 ms für den Abschluss des Abbruchs und die Wiederherstellung des Transkripts,
nachdem die Abrufarbeit beendet wurde. Keine der beiden Zeitspannen verlängert die Modell- oder Toolausführung.
Wenn Sie von v2026.4.x aktualisiert und timeoutMs für die alte
Welt mit impliziter Kulanz angepasst haben (der empfohlene Startwert
timeoutMs: 15000 ist ein Beispiel), legen Sie setupGraceTimeoutMs: 30000 fest, um
das effektive Budget von vor v5.2 wiederherzustellen:
timeoutMs + setupGraceTimeoutMs + 3000 ms (das
konfigurierte Budget für die Recall-Verarbeitung zuzüglich bis zu 1500 ms
für den Preflight und einer festen Abschlussfrist von 1500 ms nach dem
Recall). Der eingebettete Recall-Runner verwendet dasselbe effektive
Timeout-Budget, sodass setupGraceTimeoutMs sowohl den äußeren Watchdog für
die Prompt-Erstellung als auch den inneren blockierenden Recall-Lauf
abdeckt.
Für ressourcenbeschränkte Gateways, bei denen die Kaltstartlatenz als
Kompromiss akzeptiert wird, funktionieren auch niedrigere Werte
(5000-15000 ms) — der Kompromiss besteht in einer höheren
Wahrscheinlichkeit, dass der allererste Recall nach einem Gateway-Neustart
ein leeres Ergebnis zurückgibt, während das Aufwärmen abgeschlossen wird.
Fehlerbehebung
Wenn Active Memory nicht dort angezeigt wird, wo Sie es erwarten:- Vergewissern Sie sich, dass das Plugin unter
plugins.entries.active-memory.enabledaktiviert ist. - Vergewissern Sie sich für Remember über mehrere Unterhaltungen hinweg, dass die effektive
Einstellung
memory.search.rememberAcrossConversationsdes Agenten aktiviert ist, führen Sieopenclaw doctoraus, um zu prüfen, ob der aktuelle Memory-Provider den geschützten Transcript-Recall unterstützt, und vergewissern Sie sich, dassconfig.toolsAllowbei expliziter Konfigurationmemory_searchenthält. Vergewissern Sie sich für erweitertes Active Memory, dass die Agenten-ID inconfig.agentsaufgeführt ist. - Vergewissern Sie sich, dass Sie über eine geeignete interaktive, persistente Unterhaltung testen.
- Beachten Sie, dass Gruppen und Kanäle niemals unterhaltungsübergreifenden Transcript-Recall verwenden.
- Aktivieren Sie
config.logging: trueund beobachten Sie die Gateway-Protokolle. - Prüfen Sie mit
openclaw status --deep, ob die Memory-Suche selbst funktioniert.
maxSummaryChars. Wenn Active Memory zu langsam ist, senken Sie
queryMode oder timeoutMs, oder reduzieren Sie die Anzahl
der letzten Gesprächsrunden und die Zeichenobergrenzen pro Runde.
Häufige Probleme
Erweitertes Active Memory nutzt die Recall-Pipeline des konfigurierten Memory-Plugins. Daher sind die meisten unerwarteten Recall-Ergebnisse Probleme des Embedding-Providers und keine Active-Memory-Fehler. Der standardmäßige Pfadmemory-core verwendet memory_search und
memory_get; der Slot memory-lancedb verwendet
memory_recall. Wenn Sie ein anderes Memory-Plugin verwenden,
vergewissern Sie sich, dass config.toolsAllow die Tools nennt, die dieses
Plugin tatsächlich registriert. Remember über mehrere Unterhaltungen hinweg
ist enger gefasst: Der aktuelle Memory-Provider muss den geschützten
Recall-Pfad von OpenClaw für denselben Agenten und private Sitzungen
unterstützen.
Embedding-Provider wurde gewechselt oder funktioniert nicht mehr
Embedding-Provider wurde gewechselt oder funktioniert nicht mehr
Wenn
memory.search.provider nicht gesetzt ist, verwendet OpenClaw
OpenAI-Embeddings. Legen Sie memory.search.provider explizit für Embeddings
von Bedrock, DeepInfra, Gemini, GitHub Copilot, LM Studio, lokal,
Mistral, Ollama, Voyage oder OpenAI-kompatible Embeddings fest. Wenn der
konfigurierte Provider nicht ausgeführt werden kann, kann
memory_search auf eine rein lexikalische Abfrage zurückfallen;
Laufzeitfehler nach der Auswahl eines Providers lösen keinen
automatischen Fallback aus.Legen Sie ein optionales memory.search.fallback nur fest, wenn Sie bewusst
einen einzelnen Fallback wünschen. Die vollständige Liste der Provider
und Beispiele finden Sie unter
Memory-Suche.Recall wirkt langsam, leer oder inkonsistent
Recall wirkt langsam, leer oder inkonsistent
- Aktivieren Sie
/trace on, um die Plugin-eigene Debug-Zusammenfassung von Active Memory in der Sitzung anzuzeigen. - Aktivieren Sie
/verbose on, um nach jeder Antwort zusätzlich die Statuszeile🧩 Active Memory: ...anzuzeigen. - Achten Sie in den Gateway-Protokollen auf
active-memory: ... start|done,memory sync failed (search-bootstrap)oder Embedding-Fehler des Providers. - Führen Sie
openclaw status --deepaus, um das Backend der Memory-Suche und den Zustand des Index zu prüfen. - Wenn Sie
ollamaverwenden, vergewissern Sie sich, dass das Embedding-Modell installiert ist (ollama list).
Der erste Recall nach einem Gateway-Neustart gibt `status=timeout` zurück
Der erste Recall nach einem Gateway-Neustart gibt `status=timeout` zurück
Ab v2026.5.2 kann der Lauf das konfigurierte Budget
timeoutMs erreichen und status=timeout mit leerer Ausgabe
zurückgeben, wenn die Kaltstarteinrichtung (Aufwärmen des Modells +
Laden des Embedding-Index) beim Auslösen des ersten Recalls noch nicht
abgeschlossen ist. Die Gateway-Protokolle zeigen
active-memory timeout after Nms etwa bei der ersten geeigneten Antwort nach einem
Neustart.Den empfohlenen Wert für setupGraceTimeoutMs finden Sie unter
Kaltstart-Kulanz im Abschnitt „Empfohlene
Einrichtung“.