Przejdź do głównej treści

Kompaktowanie

Każdy model ma okno kontekstu — maksymalną liczbę tokenów, które może przetworzyć. Gdy rozmowa zbliża się do tego limitu, OpenClaw kompaktuje starsze wiadomości do postaci podsumowania, aby czat mógł być kontynuowany.

Jak to działa

  1. Starsze tury rozmowy są podsumowywane do zwartego wpisu.
  2. Podsumowanie jest zapisywane w transkrypcie sesji.
  3. Ostatnie wiadomości pozostają nienaruszone.
Gdy OpenClaw dzieli historię na fragmenty do kompaktowania, utrzymuje wywołania narzędzi asystenta sparowane z odpowiadającymi im wpisami toolResult. Jeśli punkt podziału wypada wewnątrz bloku narzędzia, OpenClaw przesuwa granicę tak, aby para pozostała razem, a bieżący niepodsumowany ogon został zachowany. Pełna historia rozmowy pozostaje na dysku. Kompaktowanie zmienia tylko to, co model widzi w następnej turze.

Automatyczne kompaktowanie

Automatyczne kompaktowanie jest domyślnie włączone. Uruchamia się, gdy sesja zbliża się do limitu kontekstu albo gdy model zwróci błąd przepełnienia kontekstu (w takim przypadku OpenClaw kompaktuje i ponawia próbę). Typowe sygnatury przepełnienia obejmują request_too_large, context length exceeded, input exceeds the maximum number of tokens, input token count exceeds the maximum number of input tokens, input is too long for the model oraz ollama error: context length exceeded.
Przed kompaktowaniem OpenClaw automatycznie przypomina agentowi o zapisaniu ważnych notatek do plików memory. Zapobiega to utracie kontekstu.

Ręczne kompaktowanie

Wpisz /compact w dowolnym czacie, aby wymusić kompaktowanie. Dodaj instrukcje, aby ukierunkować podsumowanie:
/compact Skup się na decyzjach projektowych dotyczących API

Używanie innego modelu

Domyślnie kompaktowanie używa głównego modelu agenta. Możesz użyć bardziej zaawansowanego modelu, aby uzyskać lepsze podsumowania:
{
  agents: {
    defaults: {
      compaction: {
        model: "openrouter/anthropic/claude-sonnet-4-6",
      },
    },
  },
}

Powiadomienie o rozpoczęciu kompaktowania

Domyślnie kompaktowanie działa po cichu. Aby wyświetlać krótkie powiadomienie, gdy kompaktowanie się rozpoczyna, włącz notifyUser:
{
  agents: {
    defaults: {
      compaction: {
        notifyUser: true,
      },
    },
  },
}
Po włączeniu użytkownik widzi krótki komunikat (na przykład „Kompaktowanie kontekstu…”) na początku każdego uruchomienia kompaktowania.

Kompaktowanie a przycinanie

KompaktowaniePrzycinanie
Co robiPodsumowuje starszą rozmowęPrzycina stare wyniki narzędzi
Zapisywane?Tak (w transkrypcie sesji)Nie (tylko w pamięci, na żądanie)
ZakresCała rozmowaTylko wyniki narzędzi
Przycinanie sesji to lżejsze uzupełnienie, które przycina dane wyjściowe narzędzi bez tworzenia podsumowania.

Rozwiązywanie problemów

Kompaktowanie uruchamia się zbyt często? Okno kontekstu modelu może być małe albo dane wyjściowe narzędzi mogą być duże. Spróbuj włączyć przycinanie sesji. Czy po kompaktowaniu kontekst wydaje się nieaktualny? Użyj /compact Skup się na <temat>, aby ukierunkować podsumowanie, albo włącz opróżnianie memory, aby notatki zostały zachowane. Potrzebujesz czystego startu? /new rozpoczyna nową sesję bez kompaktowania. Zaawansowaną konfigurację (rezerwowe tokeny, zachowanie identyfikatorów, niestandardowe silniki kontekstu, kompaktowanie po stronie serwera OpenAI) opisano w Dogłębne omówienie zarządzania sesją.

Powiązane

  • Session — zarządzanie sesją i jej cykl życia
  • Session Pruning — przycinanie wyników narzędzi
  • Context — jak budowany jest kontekst dla tur agenta
  • Hooks — hooki cyklu życia kompaktowania (before_compaction, after_compaction)