Przejdź do głównej treści

Wyszukiwanie w pamięci

memory_search znajduje odpowiednie notatki z Twoich plików pamięci, nawet gdy sformułowania różnią się od oryginalnego tekstu. Działa poprzez indeksowanie pamięci na małe fragmenty i przeszukiwanie ich za pomocą embeddingów, słów kluczowych albo obu tych metod.

Szybki start

Jeśli masz skonfigurowany klucz API OpenAI, Gemini, Voyage lub Mistral, wyszukiwanie w 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

DostawcaIDWymaga klucza APIUwagi
OpenAIopenaiTakWykrywany automatycznie, szybki
GeminigeminiTakObsługuje indeksowanie obrazów/dźwięku
VoyagevoyageTakWykrywany automatycznie
MistralmistralTakWykrywany automatycznie
BedrockbedrockNieWykrywany automatycznie, gdy łańcuch poświadczeń AWS zostanie rozwiązany
OllamaollamaNieLokalny, trzeba ustawić jawnie
LocallocalNieModel GGUF, pobieranie ~0.6 GB

Jak działa wyszukiwanie

OpenClaw uruchamia równolegle dwie ścieżki pobierania wyników i scala ich rezultaty:
  • 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 (ID, ciągi błędów, klucze konfiguracji).
Jeśli dostępna jest tylko jedna ścieżka (brak embeddingów albo brak FTS), działa samodzielnie tylko druga.

Poprawa jakości wyszukiwania

Dwie opcjonalne funkcje pomagają, gdy masz dużą historię notatek:

Zanikanie czasowe

Starsze 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 ma wynik równy 50% swojej pierwotnej wagi. Pliki stałe, takie jak MEMORY.md, nigdy nie podlegają zanikaniu.
Włącz zanikanie czasowe, jeśli Twój agent ma wiele miesięcy codziennych notatek, a nieaktualne informacje stale wyprzedzają nowszy kontekst.

MMR (różnorodność)

Ogranicza powtarzające się wyniki. Jeśli pięć notatek wspomina tę samą konfigurację routera, MMR sprawia, że najwyższe wyniki obejmują różne tematy, zamiast się powtarzać.
Włącz MMR, jeśli memory_search stale zwraca niemal identyczne fragmenty z różnych codziennych notatek.

Włącz oba

{
  agents: {
    defaults: {
      memorySearch: {
        query: {
          hybrid: {
            mmr: { enabled: true },
            temporalDecay: { enabled: true },
          },
        },
      },
    },
  },
}

Pamięć multimodalna

Z Gemini Embedding 2 możesz indeksować obrazy i pliki audio obok plików Markdown. Zapytania wyszukiwania nadal pozostają tekstowe, ale dopasowują się do treści wizualnych i audio. Informacje o konfiguracji znajdziesz w dokumencie referencyjnym konfiguracji pamięci.

Wyszukiwanie w pamięci sesji

Możesz opcjonalnie indeksować transkrypcje sesji, aby memory_search mógł przywoływać wcześniejsze rozmowy. Jest to funkcja opt-in dostępna przez memorySearch.experimental.sessionMemory. Szczegóły znajdziesz w dokumencie referencyjnym 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 znajduje tekstu CJK? Odbuduj indeks FTS za pomocą openclaw memory index --force.

Dalsza lektura