Jak to działa
- Starsze tury rozmowy są podsumowywane w zwięzłym wpisie.
- Podsumowanie jest zapisywane w transkrypcji sesji.
- Ostatnie wiadomości pozostają nienaruszone.
toolResult. Jeśli punkt wypada wewnątrz bloku narzędzia, OpenClaw przesuwa granicę, aby para pozostała razem, a bieżąca niepodsumowana końcówka została zachowana.
Pełna historia rozmowy pozostaje na dysku. Compaction zmienia jedynie to, co model widzi w następnej turze.
W nowych konfiguracjach
agents.defaults.compaction.mode ma domyślnie wartość "safeguard" (bardziej rygorystyczne zabezpieczenia i audyty jakości podsumowań). Aby z tego zrezygnować, należy jawnie ustawić mode: "default".Automatyczna Compaction
Automatyczna Compaction jest domyślnie włączona. Uruchamia się, gdy sesja zbliża się do limitu kontekstu lub gdy model zwraca błąd przepełnienia kontekstu (w takim przypadku OpenClaw wykonuje Compaction i ponawia próbę). Widoczne będą:embedded run auto-compaction start/completew standardowych dziennikach Gateway.🧹 Auto-compaction completew trybie szczegółowym./statuspokazujące🧹 Compactions: <count>.
Przed wykonaniem Compaction OpenClaw automatycznie przypomina agentowi o zapisaniu ważnych notatek w plikach pamięci. Zapobiega to utracie kontekstu.
Wzorce błędów przepełnienia rozpoznawane przez OpenClaw
Wzorce błędów przepełnienia rozpoznawane przez OpenClaw
OpenClaw dopasowuje dziesiątki charakterystycznych dla poszczególnych dostawców komunikatów o przepełnieniu (Anthropic, OpenAI, Bedrock, Gemini, Ollama, OpenRouter i inni). Typowe przykłady:
request_too_largecontext length exceededinput exceeds the maximum number of tokensinput token count exceeds the maximum number of input tokens(Bedrock)input is too long for the modelollama error: context length exceeded
Ręczna Compaction
Aby wymusić Compaction, należy wpisać/compact w dowolnym czacie. Można dodać instrukcje określające treść podsumowania:
agents.defaults.compaction.keepRecentTokens (domyślnie: 20,000), ręczna Compaction respektuje ten punkt odcięcia i zachowuje ostatnią część w przebudowanym kontekście. Bez jawnie określonego budżetu zachowania ręczna Compaction działa jak twardy punkt kontrolny i kontynuuje wyłącznie od nowego podsumowania.
Konfiguracja
Compaction konfiguruje się w sekcjiagents.defaults.compaction pliku openclaw.json. Najczęściej używane opcje wymieniono poniżej; pełna dokumentacja znajduje się w sekcji Szczegółowe omówienie zarządzania sesjami.
Używanie innego modelu
Domyślnie Compaction korzysta z głównego modelu agenta. Ustawienieagents.defaults.compaction.model pozwala przekazać podsumowywanie bardziej zaawansowanemu lub wyspecjalizowanemu modelowi. Wartość zastępująca przyjmuje ciąg provider/model-id albo sam alias skonfigurowany w sekcji agents.defaults.models:
agents.defaults.compaction.model pozostaje ścisła i nie dziedziczy łańcucha modeli rezerwowych sesji.
Zachowywanie identyfikatorów
Podsumowywanie podczas Compaction domyślnie zachowuje nieprzezroczyste identyfikatory (identifierPolicy: "strict"). Aby to wyłączyć, należy użyć identifierPolicy: "off", a aby podać niestandardowe wytyczne — identifierPolicy: "custom" wraz z identifierInstructions.
Ograniczenie liczby bajtów aktywnej transkrypcji
Gdy ustawionoagents.defaults.compaction.maxActiveTranscriptBytes, OpenClaw
uruchamia standardową lokalną Compaction przed wykonaniem, jeśli historia transkrypcji osiągnie
ten rozmiar. Jest to przydatne w długotrwałych sesjach, w których zarządzanie kontekstem
po stronie dostawcy może utrzymywać kontekst modelu w dobrym stanie, podczas gdy utrwalona historia transkrypcji
nadal rośnie. Mechanizm ten nie dzieli surowych bajtów, lecz zleca standardowemu procesowi Compaction
utworzenie semantycznego podsumowania.
Transkrypcje następcze
Gdy włączonoagents.defaults.compaction.truncateAfterCompaction, OpenClaw nie przepisuje istniejącej transkrypcji w miejscu. Tworzy nową aktywną transkrypcję następczą na podstawie podsumowania Compaction, zachowanego stanu i niepodsumowanej końcówki, a następnie zapisuje metadane punktu kontrolnego, które kierują przepływy rozgałęziania i przywracania do tego skompaktowanego następcy.
Transkrypcje następcze usuwają również dokładnie zduplikowane długie tury użytkownika, które pojawiają się
w krótkim przedziale ponawiania, dzięki czemu lawiny ponowień kanału nie są przenoszone do
następnej aktywnej transkrypcji po Compaction.
OpenClaw nie zapisuje już oddzielnych kopii .checkpoint.*.jsonl dla nowych
operacji Compaction. Istniejące starsze pliki punktów kontrolnych nadal mogą być używane, dopóki istnieją do nich odwołania,
i są usuwane podczas standardowego czyszczenia sesji.
Powiadomienia o Compaction
Domyślnie Compaction przebiega bez komunikatów. UstawienienotifyUser powoduje wyświetlanie krótkich komunikatów o stanie przy rozpoczęciu i zakończeniu Compaction oraz komunikatu o obniżonej jakości, gdy wyczerpią się próby opróżnienia pamięci przed Compaction, ale odpowiedź jest nadal kontynuowana:
Opróżnianie pamięci
Przed wykonaniem Compaction OpenClaw może uruchomić turę cichego opróżniania pamięci, aby zapisać trwałe notatki na dysku. Jeśli ta tura porządkowa ma korzystać z modelu lokalnego zamiast aktywnego modelu rozmowy, należy ustawićagents.defaults.compaction.memoryFlush.model:
Wymienne dostawcy Compaction
Pluginy mogą rejestrować niestandardowego dostawcę Compaction za pośrednictwemregisterCompactionProvider() w API pluginu. Gdy dostawca jest zarejestrowany i skonfigurowany, OpenClaw przekazuje mu podsumowywanie zamiast używać wbudowanego procesu LLM.
Aby użyć zarejestrowanego dostawcy, należy ustawić jego identyfikator w konfiguracji:
provider automatycznie wymusza mode: "safeguard". Dostawcy otrzymują te same instrukcje Compaction i zasady zachowywania identyfikatorów co wbudowana ścieżka, a OpenClaw nadal zachowuje kontekst ostatnich tur i końcówki podzielonej tury po otrzymaniu wyniku od dostawcy.
Jeśli dostawca zawiedzie lub zwróci pusty wynik, OpenClaw wróci do wbudowanego podsumowywania LLM.
Compaction a przycinanie
Przycinanie sesji jest lżejszym mechanizmem uzupełniającym, który przycina wyniki narzędzi bez ich podsumowywania.
Rozwiązywanie problemów
Compaction jest wykonywana zbyt często? Okno kontekstu modelu może być małe albo wyniki narzędzi mogą być obszerne. Warto spróbować włączyć przycinanie sesji. Po Compaction kontekst wydaje się nieaktualny? Należy użyć/compact Focus on <topic>, aby określić treść podsumowania, lub włączyć opróżnianie pamięci, aby notatki zostały zachowane.
Potrzebny jest czysty start? /new rozpoczyna nową sesję bez wykonywania Compaction.
Zaawansowane opcje konfiguracji (rezerwa tokenów, zachowywanie identyfikatorów, niestandardowe mechanizmy kontekstu i Compaction po stronie serwera OpenAI) opisano w sekcji Szczegółowe omówienie zarządzania sesjami.
Powiązane
- Sesja: zarządzanie sesją i jej cykl życia.
- Przycinanie sesji: przycinanie wyników narzędzi.
- Kontekst: sposób tworzenia kontekstu dla tur agenta.
- Hooki: hooki cyklu życia Compaction (
before_compaction,after_compaction).