Sessions and memory
Geheugen zoeken
memory_search vindt relevante notities uit je geheugenbestanden, zelfs wanneer de
formulering afwijkt van de oorspronkelijke tekst. Het werkt door geheugen in kleine
stukken te indexeren en die te doorzoeken met embeddings, trefwoorden, of beide.
Snel starten
Als je een GitHub Copilot-abonnement of een geconfigureerde API-sleutel voor OpenAI, Gemini, Voyage of Mistral hebt, werkt geheugenzoekfunctie automatisch. Om een provider expliciet in te stellen:
{
agents: {
defaults: {
memorySearch: {
provider: "openai", // or "gemini", "local", "ollama", etc.
},
},
},
}
Voor set-ups met meerdere eindpunten kan provider ook een aangepaste
models.providers.<id>-vermelding zijn, zoals ollama-5080, wanneer die provider
api: "ollama" of een andere eigenaar van een embedding-adapter instelt.
Voor lokale embeddings zonder API-sleutel stel je provider: "local" in. Source-checkouts
kunnen nog steeds goedkeuring voor native builds vereisen: pnpm approve-builds en daarna
pnpm rebuild node-llama-cpp.
Sommige OpenAI-compatibele embedding-eindpunten vereisen asymmetrische labels zoals
input_type: "query" voor zoekopdrachten en input_type: "document" of "passage"
voor geïndexeerde stukken. Configureer die met memorySearch.queryInputType en
memorySearch.documentInputType; zie de referentie voor geheugenconfiguratie.
Ondersteunde providers
| Provider | ID | API-sleutel vereist | Notities |
|---|---|---|---|
| Bedrock | bedrock |
Nee | Automatisch gedetecteerd wanneer de AWS-referentieketen wordt opgelost |
| Gemini | gemini |
Ja | Ondersteunt indexering van afbeeldingen/audio |
| GitHub Copilot | github-copilot |
Nee | Automatisch gedetecteerd, gebruikt Copilot-abonnement |
| Lokaal | local |
Nee | GGUF-model, download van ~0,6 GB |
| Mistral | mistral |
Ja | Automatisch gedetecteerd |
| Ollama | ollama |
Nee | Lokaal, moet expliciet worden ingesteld |
| OpenAI | openai |
Ja | Automatisch gedetecteerd, snel |
| Voyage | voyage |
Ja | Automatisch gedetecteerd |
Hoe zoeken werkt
OpenClaw voert twee ophaalpaden parallel uit en voegt de resultaten samen:
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"]
- Vectorzoekfunctie vindt notities met een vergelijkbare betekenis ("gateway host" komt overeen met "the machine running OpenClaw").
- BM25-trefwoordzoekfunctie vindt exacte overeenkomsten (ID's, foutstrings, configuratie- sleutels).
Als slechts één pad beschikbaar is (geen embeddings of geen FTS), wordt alleen het andere uitgevoerd.
Wanneer embeddings niet beschikbaar zijn, gebruikt OpenClaw nog steeds lexicale rangschikking over FTS-resultaten in plaats van alleen terug te vallen op ruwe exacte-overeenkomstvolgorde. Die gedegradeerde modus geeft stukken met sterkere dekking van zoektermen en relevante bestandspaden meer gewicht, waardoor recall nuttig blijft, zelfs zonder sqlite-vec of een embedding-provider.
Zoekkwaliteit verbeteren
Twee optionele functies helpen wanneer je een grote geschiedenis met notities hebt:
Tijdverval
Oude notities verliezen geleidelijk rangschikkingsgewicht, zodat recente informatie eerst naar voren komt.
Met de standaard halfwaardetijd van 30 dagen scoort een notitie van vorige maand 50% van
haar oorspronkelijke gewicht. Evergreen-bestanden zoals MEMORY.md vervallen nooit.
MMR (diversiteit)
Vermindert redundante resultaten. Als vijf notities allemaal dezelfde routerconfiguratie noemen, zorgt MMR ervoor dat de topresultaten verschillende onderwerpen behandelen in plaats van te herhalen.
Beide inschakelen
{
agents: {
defaults: {
memorySearch: {
query: {
hybrid: {
mmr: { enabled: true },
temporalDecay: { enabled: true },
},
},
},
},
},
}
Multimodaal geheugen
Met Gemini Embedding 2 kun je afbeeldingen en audiobestanden naast Markdown indexeren. Zoekopdrachten blijven tekst, maar ze matchen met visuele en audio- inhoud. Zie de referentie voor geheugenconfiguratie voor instelling.
Geheugenzoekfunctie voor sessies
Je kunt optioneel sessietranscripten indexeren, zodat memory_search
eerdere gesprekken kan terughalen. Dit is opt-in via
memorySearch.experimental.sessionMemory. Zie de
configuratiereferentie voor details.
Probleemoplossing
Geen resultaten? Voer openclaw memory status uit om de index te controleren. Als die leeg is, voer dan
openclaw memory index --force uit.
Alleen trefwoordovereenkomsten? Je embedding-provider is mogelijk niet geconfigureerd. Controleer
openclaw memory status --deep.
Time-out bij lokale embeddings? ollama, lmstudio en local gebruiken standaard een langere
inline batchtime-out. Als de host gewoon traag is, stel dan
agents.defaults.memorySearch.sync.embeddingBatchTimeoutSeconds in en voer opnieuw
openclaw memory index --force uit.
CJK-tekst niet gevonden? Bouw de FTS-index opnieuw op met
openclaw memory index --force.
Verder lezen
- Active Memory -- subagentgeheugen voor interactieve chatsessies
- Geheugen -- bestandsindeling, backends, tools
- Referentie voor geheugenconfiguratie -- alle configuratieknoppen