Sessions and memory
Speichersuche
memory_search findet relevante Notizen in Ihren Speicherdateien, selbst wenn die
Formulierung vom Originaltext abweicht. Dabei wird der Speicher in kleine Abschnitte unterteilt und
mit Embeddings, Schlüsselwörtern oder beidem durchsucht.
Schnellstart
OpenClaw verwendet standardmäßig OpenAI-Embeddings. Um einen anderen Provider zu verwenden, legen Sie ihn explizit fest:
{ memory: { search: { provider: "openai", // oder "gemini", "voyage", "mistral", "bedrock", "local", "ollama", "lmstudio", "github-copilot", "openai-compatible" }, },}provider kann auch auf einen benutzerdefinierten models.providers.<id>-Eintrag verweisen (zum
Beispiel ollama-5080), sofern dieser Eintrag api auf "ollama" oder
eine andere Provider-ID mit einem Speicher-Embedding-Adapter setzt.
Installieren Sie für lokale Embeddings ohne API-Schlüssel das offizielle llama.cpp-Provider-
Plugin und setzen Sie provider: "local":
openclaw plugins install @openclaw/llama-cpp-providerQuellcode-Checkouts benötigen weiterhin die Genehmigung nativer Builds: pnpm approve-builds, danach
pnpm rebuild node-llama-cpp.
Einige OpenAI-kompatible Embedding-Endpunkte erfordern asymmetrische input_type-
Bezeichnungen, etwa "query" für Suchvorgänge und "document"/"passage" für indexierte
Abschnitte. Legen Sie diese mit queryInputType und documentInputType fest; siehe
Referenz zur Speicherkonfiguration.
Unterstützte Provider
| Provider | ID | API-Schlüssel erforderlich | Hinweise |
|---|---|---|---|
| Bedrock | bedrock |
Nein | Verwendet die AWS-Anmeldedatenkette |
| DeepInfra | deepinfra |
Ja | Standardmodell BAAI/bge-m3 |
| Gemini | gemini |
Ja | Unterstützt Bild-/Audioindexierung |
| GitHub Copilot | github-copilot |
Nein | Verwendet Ihr Copilot-Abonnement |
| Lokal | local |
Nein | GGUF-Modell, automatischer Download von ~0.6 GB |
| LM Studio | lmstudio |
Nein | Lokaler/selbst gehosteter Server |
| Mistral | mistral |
Ja | |
| Ollama | ollama |
Nein | Lokaler/selbst gehosteter Server |
| OpenAI | openai |
Ja | Standard |
| OpenAI-kompatibel | openai-compatible |
Üblicherweise | Generischer /v1/embeddings-Endpunkt |
| Voyage | voyage |
Ja |
Funktionsweise der Suche
OpenClaw führt zwei Abrufpfade parallel aus und führt die Ergebnisse zusammen:
flowchart LR
Q["Abfrage"] --> E["Embedding"]
Q --> T["Tokenisierung"]
E --> VS["Vektorsuche"]
T --> BM["BM25-Suche"]
VS --> M["Gewichtete Zusammenführung"]
BM --> M
M --> R["Beste Ergebnisse"]- Vektorsuche findet ähnliche Bedeutungen („Gateway-Host“ entspricht „der Maschine, auf der OpenClaw ausgeführt wird“).
- BM25-Schlüsselwortsuche findet exakte Begriffe (IDs, Fehlermeldungen, Konfigurations- schlüssel).
- Dateinamensuche indexiert Pfade getrennt von den Inhalten der Notizen. Exakte vollständige Pfade, Basisdateinamen und Dateinamenstämme werden höher eingestuft als teilweise Pfadübereinstimmungen, während Ausschnitte und Schlüsselwortbewertungen des Inhalts weiterhin aus dem Notizinhalt stammen.
Wenn nur ein Pfad verfügbar ist, wird dieser allein ausgeführt.
Nur-FTS-Modus. Setzen Sie provider: "none", um Embeddings gezielt zu deaktivieren
und ausschließlich mit Schlüsselwörtern zu suchen. Wenn provider nicht gesetzt oder auf "auto"
gesetzt ist, wird ebenfalls ohne Fehler auf eine reine Schlüsselwortbewertung zurückgegriffen, falls keine Embedding-Authentifizierung konfiguriert ist;
dasselbe gilt für provider: "local" (den GGUF/llama.cpp-
Provider), wenn dieser fehlschlägt.
Expliziter Provider nicht verfügbar. Wenn Sie einen anderen Provider explizit angeben
(zum Beispiel openai, ollama, gemini) und dieser zum
Zeitpunkt der Anfrage nicht verfügbar ist (ungültige Authentifizierung, Netzwerkfehler), meldet memory_search den Speicher als
nicht verfügbar, statt unbemerkt auf reine FTS-Ergebnisse zurückzufallen. Dadurch bleibt ein
fehlerhaft konfigurierter Provider sichtbar. Setzen Sie provider: "none" für einen bewusst
ausschließlich FTS-basierten Abruf oder korrigieren Sie die Provider-/Authentifizierungskonfiguration, um die semantische
Bewertung wiederherzustellen.
Verbesserung der Suchqualität
Zwei optionale Funktionen helfen bei einem umfangreichen Notizverlauf.
Zeitlicher Verfall
Alte Notizen verlieren schrittweise an Bewertungsgewicht, sodass aktuelle Informationen zuerst erscheinen.
Bei der standardmäßigen Halbwertszeit von 30 Tagen erreicht eine Notiz vom letzten Monat 50 % ihres
ursprünglichen Gewichts. MEMORY.md und andere undatierte Dateien unter memory/ sind
dauerhaft relevant und unterliegen keinem Verfall; nur datierte memory/YYYY-MM-DD.md-Dateien verfallen.
MMR (Diversität)
Reduziert redundante Ergebnisse. Wenn fünf Notizen dieselbe Router-Konfiguration erwähnen, stellt MMR sicher, dass die besten Ergebnisse unterschiedliche Themen abdecken, statt sich zu wiederholen.
Beide aktivieren
{ memory: { search: { query: { hybrid: { mmr: { enabled: true }, temporalDecay: { enabled: true }, }, }, }, },}Multimodaler Speicher
Mit gemini-embedding-2-preview können Sie Bilder und Audio zusammen mit
Markdown indexieren. Dies gilt nur für Dateien unter memory.search.extraPaths; die standardmäßigen
Speicherstammverzeichnisse (MEMORY.md, memory/*.md) bleiben auf Markdown beschränkt. Suchanfragen
bleiben textbasiert, werden aber mit visuellen und akustischen Inhalten abgeglichen. Informationen zur Einrichtung finden Sie in der
Referenz zur Speicherkonfiguration.
Sitzungsspeichersuche
Verwenden Sie für den exakten Volltextabruf aus Sitzungstranskripten sessions_search
und öffnen Sie anschließend ein Ergebnis mit sessions_history. Die Sitzungsspeichersuche bleibt die semantische,
experimentelle Ergänzung.
Optional können Sie Sitzungstranskripte indexieren, damit memory_search frühere
Unterhaltungen abrufen kann. Dies ist optional: Setzen Sie experimental.sessionMemory: true und fügen Sie
"sessions" zu sources hinzu (der Standardwert sources ist ["memory"]).
Sitzungstreffer berücksichtigen tools.sessions.visibility: Der Standardwert "tree" stellt die
aktuelle Sitzung, von ihr erzeugte Sitzungen und Sitzungen desselben Agents in Gruppen bereit, die
über die Umgebungsgruppenwahrnehmung beobachtet werden. Mit session.dmScope: "main" teilt eine Mehrbenutzer-
DM-Einrichtung diese Hauptsitzung, sodass dorthin weitergeleitete Benutzer Inhalte
aus den von ihr beobachteten Gruppen abrufen können. Verwenden Sie für die DM-Isolierung ein peer-spezifisches dmScope oder setzen Sie
die Sichtbarkeit auf "self", um Umgebungslesevorgänge aus beobachteten Sitzungen zu deaktivieren. Andere
nicht zugehörige Sitzungen desselben Agents erfordern weiterhin die Sichtbarkeit "agent".
Bei Verwendung des QMD-Backends müssen Sie außerdem memory.qmd.sessions.enabled: true setzen, damit
Transkripte in die QMD-Sammlung exportiert werden; experimental.sessionMemory
und sources allein exportieren keine Transkripte nach QMD. Siehe
Konfigurationsreferenz.
Fehlerbehebung
Keine Ergebnisse? Führen Sie openclaw memory status aus, um den Index zu überprüfen. Wenn er leer ist, führen Sie
openclaw memory index --force aus.
Nur Schlüsselworttreffer? Ihr Embedding-Provider ist möglicherweise nicht konfiguriert. Überprüfen Sie
openclaw memory status --deep.
Zeitüberschreitung bei lokalen Embeddings? ollama, lmstudio und local verwenden längere
Provider-eigene Batch-Zeitlimits. Überprüfen Sie den Zustand des Providers und führen Sie
openclaw memory index --force erneut aus.
CJK-Text wird nicht gefunden? Erstellen Sie den FTS-Index neu mit
openclaw memory index --force.