Naar hoofdinhoud gaan
memory_search vindt relevante notities uit je geheugenbestanden, zelfs wanneer de formulering afwijkt van de oorspronkelijke tekst. Het werkt door geheugen in kleine fragmenten te indexeren en die te doorzoeken met embeddings, trefwoorden of beide.

Snelstart

Geheugen zoeken gebruikt standaard OpenAI-embeddings. Stel expliciet een provider in om een andere embedding-backend te gebruiken:
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "openai", // or "gemini", "local", "ollama", "openai-compatible", etc.
      },
    },
  },
}
Voor setups met meerdere endpoints en geheugenspecifieke providers kan provider ook een aangepaste models.providers.<id>-vermelding zijn, zoals ollama-5080, wanneer die provider api: "ollama" of een andere eigenaar van een geheugen-embeddingadapter instelt. Installeer voor lokale embeddings zonder API-sleutel @openclaw/llama-cpp-provider en stel provider: "local" in. Broncheckouts kunnen nog steeds goedkeuring voor native builds vereisen: pnpm approve-builds en daarna pnpm rebuild node-llama-cpp. Sommige OpenAI-compatibele embedding-endpoints vereisen asymmetrische labels zoals input_type: "query" voor zoekopdrachten en input_type: "document" of "passage" voor geïndexeerde fragmenten. Configureer die met memorySearch.queryInputType en memorySearch.documentInputType; zie de referentie voor geheugenconfiguratie.

Ondersteunde providers

ProviderIDAPI-sleutel nodigOpmerkingen
BedrockbedrockNeeGebruikt AWS-credentialketen
DeepInfradeepinfraJaStandaard: BAAI/bge-m3
GeminigeminiJaOndersteunt indexering van afbeeldingen/audio
GitHub Copilotgithub-copilotNeeGebruikt Copilot-abonnement
LocallocalNeeGGUF-model, download van ~0,6 GB
MistralmistralJa
OllamaollamaNeeLokaal/zelf gehost
OpenAIopenaiJaStandaard
OpenAI-compatibleopenai-compatibleMeestalGenerieke /v1/embeddings
VoyagevoyageJa

Hoe zoeken werkt

OpenClaw voert twee ophaalpaden parallel uit en voegt de resultaten samen:
  • Vectorzoekopdracht vindt notities met een vergelijkbare betekenis (“gateway host” komt overeen met “the machine running OpenClaw”).
  • BM25-trefwoordzoekopdracht vindt exacte overeenkomsten (ID’s, foutstrings, config-sleutels).
Als er slechts één pad beschikbaar is, draait het andere pad alleen. Opzettelijke FTS-only-modus (provider: "none") en automatische/standaard providerselectie kunnen nog steeds lexicale rangschikking gebruiken wanneer embeddings niet beschikbaar zijn. Expliciete niet-lokale embeddingproviders zijn anders. Als je memorySearch.provider instelt op een concrete remote-backed provider en die provider tijdens runtime niet beschikbaar is, rapporteert memory_search geheugen als niet beschikbaar in plaats van stilzwijgend FTS-only-resultaten te gebruiken. Zo blijft een kapotte geconfigureerde semantische provider zichtbaar. Stel provider: "none" in voor bewuste FTS-only-herinnering, of los de provider-/auth-configuratie op om semantische rangschikking te herstellen.

Zoekkwaliteit verbeteren

Twee optionele functies helpen wanneer je een grote notitiegeschiedenis hebt:

Tijdverval

Oude notities verliezen geleidelijk rangschikkingsgewicht, zodat recente informatie eerst naar boven komt. Met de standaard halfwaardetijd van 30 dagen scoort een notitie van vorige maand 50% van het oorspronkelijke gewicht. Evergreen-bestanden zoals MEMORY.md worden nooit verlaagd.
Schakel tijdverval in als je agent maanden aan dagelijkse notities heeft en verouderde informatie steeds hoger scoort dan recente context.

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.
Schakel MMR in als memory_search steeds bijna-duplicaatfragmenten uit verschillende dagelijkse notities teruggeeft.

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 setup.

Sessiegeheugen zoeken

Je kunt optioneel sessietranscripten indexeren zodat memory_search eerdere gesprekken kan terughalen. Dit is opt-in via memorySearch.experimental.sessionMemory en sources: ["sessions"]; de standaard bronlijst bevat alleen geheugen. De experimentele vlag schakelt indexering van sessietranscripten in, terwijl sources bepaalt of sessiefragmenten worden doorzocht. Sessietreffers houden zich aan tools.sessions.visibility: de standaardinstelling tree stelt alleen de huidige sessie en sessies die daaruit zijn voortgekomen beschikbaar. Om een niet-gerelateerde same-agent, door de Gateway verzonden sessie uit een afzonderlijke DM-sessie terug te halen, verbreed je de zichtbaarheid bewust naar agent. Stel bij gebruik van QMD ook memory.qmd.sessions.enabled: true in, zodat transcripten worden geëxporteerd naar een QMD-collectie. Zie de configuratiereferentie voor details.

Problemen oplossen

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 embeddingprovider is mogelijk niet geconfigureerd. Controleer openclaw memory status --deep. Time-out bij lokale embeddings? ollama, lmstudio en local gebruiken standaard een langere inline batch-time-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

Gerelateerd