Wyszukiwanie pamięci
memory_search znajduje trafne notatki z Twoich plików pamięci, nawet wtedy, gdy
sformułowanie różni się od oryginalnego tekstu. Działa przez indeksowanie pamięci na małe
fragmenty i przeszukiwanie ich przy użyciu embeddingów, słów kluczowych albo obu metod naraz.
Szybki start
Jeśli masz skonfigurowany klucz API OpenAI, Gemini, Voyage lub Mistral, wyszukiwanie pamięci
działa automatycznie. Aby jawnie ustawić dostawcę:
{
agents: {
defaults: {
memorySearch: {
provider: "openai", // or "gemini", "local", "ollama", etc.
},
},
},
}
W przypadku lokalnych embeddingów bez klucza API użyj provider: "local" (wymaga
node-llama-cpp).
Obsługiwani dostawcy
| Dostawca | ID | Wymaga klucza API | Uwagi |
|---|
| OpenAI | openai | Tak | Wykrywany automatycznie, szybki |
| Gemini | gemini | Tak | Obsługuje indeksowanie obrazów/audio |
| Voyage | voyage | Tak | Wykrywany automatycznie |
| Mistral | mistral | Tak | Wykrywany automatycznie |
| Ollama | ollama | Nie | Lokalny, trzeba ustawić jawnie |
| Local | local | Nie | Model GGUF, pobranie ~0.6 GB |
Jak działa wyszukiwanie
OpenClaw uruchamia równolegle dwie ścieżki wyszukiwania i scala wyniki:
- Wyszukiwanie wektorowe znajduje notatki o podobnym znaczeniu („gateway host” pasuje do
„maszyna, na której działa OpenClaw”).
- Wyszukiwanie słów kluczowych BM25 znajduje dokładne dopasowania (identyfikatory, ciągi błędów, klucze konfiguracji).
Jeśli dostępna jest tylko jedna ścieżka (brak embeddingów albo brak FTS), druga nie jest używana.
Poprawianie jakości wyszukiwania
Dwie opcjonalne funkcje pomagają, gdy masz dużą historię notatek:
Zanikanie czasowe
Stare notatki stopniowo tracą wagę w rankingu, dzięki czemu najpierw pojawiają się nowsze informacje.
Przy domyślnym okresie półtrwania wynoszącym 30 dni notatka z zeszłego miesiąca uzyskuje 50% swojej
oryginalnej wagi. Zawsze aktualne pliki, takie jak MEMORY.md, nigdy nie podlegają zanikaniu.
Włącz zanikanie czasowe, jeśli Twój agent ma miesiące codziennych notatek, a nieaktualne
informacje ciągle wyprzedzają nowszy kontekst.
MMR (różnorodność)
Ogranicza nadmiarowe wyniki. Jeśli pięć notatek wspomina tę samą konfigurację routera, MMR
zapewnia, że najlepsze wyniki obejmują różne tematy zamiast się powtarzać.
Włącz MMR, jeśli memory_search ciągle zwraca niemal identyczne fragmenty z
różnych dziennych notatek.
Włącz oba
{
agents: {
defaults: {
memorySearch: {
query: {
hybrid: {
mmr: { enabled: true },
temporalDecay: { enabled: true },
},
},
},
},
},
}
Pamięć multimodalna
Dzięki Gemini Embedding 2 możesz indeksować obrazy i pliki audio razem z
Markdown. Zapytania wyszukiwania pozostają tekstowe, ale dopasowują się do treści wizualnych i dźwiękowych. Zobacz dokumentację konfiguracji pamięci, aby
poznać konfigurację.
Wyszukiwanie pamięci sesji
Opcjonalnie możesz indeksować transkrypty sesji, aby memory_search mogło przywoływać
wcześniejsze rozmowy. Ta funkcja jest opcjonalna przez
memorySearch.experimental.sessionMemory. Szczegóły znajdziesz w
dokumentacji konfiguracji.
Rozwiązywanie problemów
Brak wyników? Uruchom openclaw memory status, aby sprawdzić indeks. Jeśli jest pusty, uruchom
openclaw memory index --force.
Tylko dopasowania słów kluczowych? Twój dostawca embeddingów może nie być skonfigurowany. Sprawdź
openclaw memory status --deep.
Nie można znaleźć tekstu CJK? Odbuduj indeks FTS za pomocą
openclaw memory index --force.
Dalsza lektura