Sessions and memory
Speichersuche
memory_search findet relevante Notizen aus Ihren Speicherdateien, auch wenn die
Formulierung vom Originaltext abweicht. Es funktioniert, indem Speicher in kleine
Abschnitte indexiert und diese mithilfe von Embeddings, Schlüsselwörtern oder
beidem durchsucht werden.
Schnellstart
Wenn Sie ein GitHub Copilot-Abonnement, OpenAI, Gemini, Voyage oder einen Mistral-API-Schlüssel konfiguriert haben, funktioniert die Speichersuche automatisch. So legen Sie einen Provider explizit fest:
{
agents: {
defaults: {
memorySearch: {
provider: "openai", // or "gemini", "local", "ollama", etc.
},
},
},
}
Für Setups mit mehreren Endpunkten kann provider auch ein benutzerdefinierter
models.providers.<id>-Eintrag sein, z. B. ollama-5080, wenn dieser Provider
api: "ollama" oder einen anderen Eigentümer eines Embedding-Adapters festlegt.
Für lokale Embeddings ohne API-Schlüssel setzen Sie provider: "local".
Source-Checkouts können weiterhin eine Freigabe für native Builds erfordern:
pnpm approve-builds und dann pnpm rebuild node-llama-cpp.
Einige OpenAI-kompatible Embedding-Endpunkte erfordern asymmetrische Labels wie
input_type: "query" für Suchen und input_type: "document" oder "passage"
für indexierte Abschnitte. Konfigurieren Sie diese mit
memorySearch.queryInputType und memorySearch.documentInputType; siehe die
Referenz zur Speicherkonfiguration.
Unterstützte Provider
| Provider | ID | API-Schlüssel erforderlich | Hinweise |
|---|---|---|---|
| Bedrock | bedrock |
Nein | Automatisch erkannt, wenn die AWS-Anmeldekette aufgelöst wird |
| Gemini | gemini |
Ja | Unterstützt Bild-/Audioindexierung |
| GitHub Copilot | github-copilot |
Nein | Automatisch erkannt, verwendet das Copilot-Abonnement |
| Local | local |
Nein | GGUF-Modell, Download mit ~0,6 GB |
| Mistral | mistral |
Ja | Automatisch erkannt |
| Ollama | ollama |
Nein | Lokal, muss explizit festgelegt werden |
| OpenAI | openai |
Ja | Automatisch erkannt, schnell |
| Voyage | voyage |
Ja | Automatisch erkannt |
Funktionsweise der Suche
OpenClaw führt zwei Abrufpfade parallel aus und führt die Ergebnisse zusammen:
flowchart LR
Q["Query"] --> E["Embedding"]
Q --> T["Tokenize"]
E --> VS["Vector Search"]
T --> BM["BM25 Search"]
VS --> M["Weighted Merge"]
BM --> M
M --> R["Top Results"]
- Vektorsuche findet Notizen mit ähnlicher Bedeutung ("gateway host" passt zu "the machine running OpenClaw").
- BM25-Schlüsselwortsuche findet exakte Übereinstimmungen (IDs, Fehlerstrings, Konfigurationsschlüssel).
Wenn nur ein Pfad verfügbar ist (keine Embeddings oder kein FTS), wird der andere allein ausgeführt.
Wenn Embeddings nicht verfügbar sind, verwendet OpenClaw weiterhin lexikalisches
Ranking über FTS-Ergebnisse, anstatt nur auf rohe Reihenfolge nach exakter
Übereinstimmung zurückzufallen. Dieser eingeschränkte Modus wertet Abschnitte mit
stärkerer Abdeckung der Suchbegriffe und relevanten Dateipfaden höher, wodurch
der Abruf auch ohne sqlite-vec oder einen Embedding-Provider nützlich bleibt.
Suchqualität verbessern
Zwei optionale Funktionen helfen, wenn Sie einen großen Notizverlauf haben:
Zeitlicher Verfall
Alte Notizen verlieren nach und nach Ranking-Gewicht, damit aktuelle Informationen
zuerst erscheinen. Mit der standardmäßigen Halbwertszeit von 30 Tagen erzielt
eine Notiz vom letzten Monat 50 % ihres ursprünglichen Gewichts. Dauerhaft
relevante Dateien wie MEMORY.md verfallen nie.
MMR (Diversität)
Reduziert redundante Ergebnisse. Wenn fünf Notizen alle dieselbe Router-Konfiguration erwähnen, stellt MMR sicher, dass die Top-Ergebnisse verschiedene Themen abdecken, anstatt Wiederholungen zu liefern.
Beides aktivieren
{
agents: {
defaults: {
memorySearch: {
query: {
hybrid: {
mmr: { enabled: true },
temporalDecay: { enabled: true },
},
},
},
},
},
}
Multimodaler Speicher
Mit Gemini Embedding 2 können Sie Bilder und Audiodateien zusammen mit Markdown indexieren. Suchanfragen bleiben textbasiert, stimmen aber mit visuellen und Audioinhalten überein. Informationen zur Einrichtung finden Sie in der Referenz zur Speicherkonfiguration.
Speichersuche für Sitzungen
Sie können optional Sitzungstranskripte indexieren, damit memory_search sich an
frühere Unterhaltungen erinnern kann. Dies ist per Opt-in über
memorySearch.experimental.sessionMemory möglich. Details finden Sie in der
Konfigurationsreferenz.
Fehlerbehebung
Keine Ergebnisse? Führen Sie openclaw memory status aus, um den Index zu
prüfen. Wenn er leer ist, führen Sie openclaw memory index --force aus.
Nur Schlüsselworttreffer? Ihr Embedding-Provider ist möglicherweise nicht
konfiguriert. Prüfen Sie openclaw memory status --deep.
Lokale Embeddings laufen in ein Timeout? ollama, lmstudio und local
verwenden standardmäßig ein längeres Inline-Batch-Timeout. Wenn der Host einfach
langsam ist, setzen Sie
agents.defaults.memorySearch.sync.embeddingBatchTimeoutSeconds und führen Sie
openclaw memory index --force erneut aus.
CJK-Text nicht gefunden? Erstellen Sie den FTS-Index mit
openclaw memory index --force neu.
Weiterführende Informationen
- Active Memory -- Speicher von Sub-Agents für interaktive Chatsitzungen
- Speicher -- Dateilayout, Backends, Tools
- Referenz zur Speicherkonfiguration -- alle Konfigurationsoptionen