Kompakcja
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
- Starsze tury rozmowy są streszczane do zwartego wpisu.
- Podsumowanie jest zapisywane w transkrypcie sesji.
- Ostatnie wiadomości pozostają nienaruszone.
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. Kompakcja zmienia tylko to, co model
widzi w następnej turze.
Automatyczna kompakcja
Automatyczna kompakcja jest domyślnie włączona. Uruchamia się, gdy sesja zbliża się do limitu kontekstu albo gdy model zwraca błąd przepełnienia kontekstu (w takim przypadku OpenClaw wykonuje kompakcję i ponawia próbę). Typowe sygnatury przepełnienia torequest_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.
agents.defaults.compaction w pliku openclaw.json, aby skonfigurować zachowanie kompaktowania (tryb, docelową liczbę tokenów itd.).
Streszczanie podczas kompaktowania domyślnie zachowuje nieprzezroczyste identyfikatory (identifierPolicy: "strict"). Możesz to zmienić za pomocą identifierPolicy: "off" albo podać własny tekst przy użyciu identifierPolicy: "custom" i identifierInstructions.
Opcjonalnie możesz określić inny model do streszczania podczas kompaktowania za pomocą agents.defaults.compaction.model. Jest to przydatne, gdy podstawowy model jest lokalny lub mały, a chcesz, aby podsumowania kompaktowania były tworzone przez bardziej zaawansowany model. To ustawienie przyjmuje dowolny ciąg provider/model-id:
Wtyczkowi dostawcy kompaktowania
Plugins mogą rejestrować niestandardowego dostawcę kompaktowania za pomocąregisterCompactionProvider() w API pluginu. Gdy dostawca jest zarejestrowany i skonfigurowany, OpenClaw deleguje streszczanie do niego zamiast do wbudowanego potoku LLM.
Aby użyć zarejestrowanego dostawcy, ustaw identyfikator dostawcy w konfiguracji:
provider automatycznie wymusza mode: "safeguard". Dostawcy otrzymują te same instrukcje kompaktowania i tę samą politykę zachowywania identyfikatorów co ścieżka wbudowana, a OpenClaw nadal zachowuje kontekst sufiksu ostatnich tur i podzielonych tur po wyniku dostawcy. Jeśli dostawca zakończy się niepowodzeniem albo zwróci pusty wynik, OpenClaw wraca do wbudowanego streszczania przez LLM.
Automatyczna kompakcja (domyślnie włączona)
Gdy sesja zbliża się do okna kontekstu modelu lub je przekracza, OpenClaw uruchamia automatyczną kompakcję i może ponowić pierwotne żądanie, używając skompaktowanego kontekstu. Zobaczysz:🧹 Auto-compaction completew trybie verbose/statuspokazujące🧹 Compactions: <count>
Ręczna kompakcja
Wpisz/compact w dowolnym czacie, aby wymusić kompakcję. Dodaj instrukcje, aby ukierunkować
podsumowanie:
Używanie innego modelu
Domyślnie kompaktowanie używa podstawowego modelu agenta. Możesz użyć bardziej zaawansowanego modelu, aby uzyskać lepsze podsumowania:Powiadomienie o rozpoczęciu kompaktowania
Domyślnie kompaktowanie działa po cichu. Aby wyświetlać krótkie powiadomienie, gdy kompaktowanie się rozpoczyna, włącznotifyUser:
Kompakcja a przycinanie
| Kompakcja | Przycinanie | |
|---|---|---|
| Co robi | Streszcza starszą rozmowę | Przycina stare wyniki narzędzi |
| Zapisywane? | Tak (w transkrypcie sesji) | Nie (tylko w pamięci, na żądanie) |
| Zakres | Cała rozmowa | Tylko wyniki narzędzi |
Rozwiązywanie problemów
Kompaktowanie występuje zbyt często? Okno kontekstu modelu może być małe albo wyniki narzędzi mogą być duże. Spróbuj włączyć przycinanie sesji. Czy po kompaktowaniu kontekst wydaje się nieaktualny? Użyj/compact Focus on <topic>, aby
ukierunkować podsumowanie, albo włącz opróżnianie pamięci, aby notatki
zostały zachowane.
Potrzebujesz czystego startu? /new rozpoczyna nową sesję bez kompaktowania.
Zaawansowaną konfigurację (rezerwę tokenów, zachowywanie identyfikatorów, niestandardowe
silniki kontekstu, kompaktowanie po stronie serwera OpenAI) znajdziesz w
szczegółowym omówieniu 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)