Technical reference
Użycie tokenów i koszty
OpenClaw śledzi tokeny, a nie znaki. Tokeny zależą od modelu, ale większość modeli w stylu OpenAI używa średnio około 4 znaków na token w tekście angielskim.
Jak tworzony jest monit systemowy
OpenClaw składa własny monit systemowy przy każdym uruchomieniu. Obejmuje on:
- Listę narzędzi i krótkie opisy
- Listę Skills (tylko metadane; instrukcje są wczytywane na żądanie za pomocą
read). Natywne tury Codex otrzymują zwarty blok Skills jako ograniczone do danej tury instrukcje deweloperskie dotyczące współpracy; inne środowiska wykonawcze otrzymują go w standardowej części monitu. Rozmiar jest ograniczony przezskills.limits.maxSkillsPromptChars, z opcjonalnym nadpisaniem dla poszczególnych agentów wagents.list[].skillsLimits.maxSkillsPromptChars. - Instrukcje samodzielnej aktualizacji
- Pliki przestrzeni roboczej i pliki startowe (
AGENTS.md,SOUL.md,TOOLS.md,IDENTITY.md,USER.md,HEARTBEAT.md,BOOTSTRAP.mdw przypadku nowej przestrzeni orazMEMORY.md, jeśli istnieje). Duże wstrzykiwane pliki są skracane zgodnie zagents.defaults.bootstrapMaxChars(domyślnie:20000); łączny rozmiar wstrzykiwanych danych startowych jest ograniczony przezagents.defaults.bootstrapTotalMaxChars(domyślnie:60000).- Natywne tury Codex nie wklejają nieprzetworzonego pliku
MEMORY.md, gdy dla danej przestrzeni roboczej dostępne są narzędzia pamięci; zamiast tego otrzymują niewielkie odwołanie do pamięci w ograniczonych do danej tury instrukcjach deweloperskich dotyczących współpracy i korzystają z narzędzi pamięci na żądanie. Jeśli narzędzia są wyłączone, wyszukiwanie w pamięci jest niedostępne lub aktywna przestrzeń robocza różni się od przestrzeni pamięci agenta,MEMORY.mdwraca do standardowej, ograniczonej ścieżki kontekstu tury. - Plik
memory.mdzapisany małymi literami w katalogu głównym nigdy nie jest wstrzykiwany. Stanowi starsze dane wejściowe do naprawy przezopenclaw doctor --fix, który migruje go doMEMORY.md. - Dzienne pliki
memory/*.mdnie są częścią standardowego monitu startowego; podczas zwykłych tur pozostają dostępne na żądanie za pośrednictwem narzędzi pamięci. Uruchomienia modelu po resecie lub przy starcie mogą dodać na początku jednorazowy blok kontekstu startowego z ostatnią pamięcią dzienną dla tej pierwszej tury, kontrolowany przezagents.defaults.startupContext. Polecenia/newi/resetw zwykłym czacie są potwierdzane bez wywoływania modelu. - Fragmenty
AGENTS.mdpo Compaction są odrębne i wymagają jawnego włączenia przezagents.defaults.compaction.postCompactionSections.
- Natywne tury Codex nie wklejają nieprzetworzonego pliku
- Czas (UTC i strefę czasową użytkownika)
- Znaczniki odpowiedzi i zachowanie Heartbeat
- Metadane środowiska uruchomieniowego (host/system operacyjny/model/tryb rozumowania)
Pełne zestawienie znajduje się w sekcji Monit systemowy.
Podczas dokumentowania danych uwierzytelniających lub fragmentów konfiguracji uwierzytelniania stosuj Konwencje symboli zastępczych dla sekretów, aby uniknąć fałszywie dodatnich wyników skanera sekretów w zmianach dotyczących wyłącznie dokumentacji.
Co wlicza się do okna kontekstu
Wszystko, co otrzymuje model, wlicza się do limitu kontekstu:
- Monit systemowy (wszystkie powyższe sekcje)
- Historia rozmowy (wiadomości użytkownika i asystenta)
- Wywołania narzędzi i ich wyniki
- Załączniki/transkrypcje (obrazy, dźwięk, pliki)
- Podsumowania Compaction i artefakty przycinania
- Warstwy pośrednie dostawcy lub nagłówki bezpieczeństwa (niewidoczne, ale nadal wliczane)
Powierzchnie intensywnie korzystające ze środowiska uruchomieniowego mają własne jawne limity w
agents.defaults.contextLimits (nadpisania dla poszczególnych agentów w
agents.list[].contextLimits):
| Klucz | Przeznaczenie |
|---|---|
memoryGetMaxChars |
Maksymalna liczba znaków zwracanych przez memory_get przed skróceniem. |
memoryGetDefaultLines |
Domyślne okno wierszy memory_get, gdy żądanie pomija lines. |
toolResultMaxChars |
Zaawansowany limit pojedynczego bieżącego wyniku narzędzia (do 1000000 znaków). |
postCompactionMaxChars |
Maksymalna liczba znaków zachowywanych z AGENTS.md podczas odświeżania po Compaction. |
Są to ograniczone fragmenty środowiska uruchomieniowego i wstrzykiwane bloki należące do tego środowiska, odrębne od limitów danych startowych, limitów kontekstu startowego i limitów monitu Skills.
toolResultMaxChars jest domyślnie nieustawione, dlatego OpenClaw wyznacza limit bieżącego
wyniku narzędzia na podstawie efektywnego okna kontekstu modelu: 16000 znaków poniżej
100 tys. tokenów, 32000 znaków przy co najmniej 100 tys. tokenów i 64000 znaków przy co
najmniej 200 tys. tokenów. Ograniczenie udziału w kontekście środowiska uruchomieniowego nadal
ogranicza pojedynczy wynik narzędzia do 30% okna kontekstu, nawet jeśli skonfigurowano większy
jawny limit.
W przypadku obrazów OpenClaw zmniejsza rozdzielczość danych obrazów z transkrypcji i narzędzi
przed wywołaniami dostawcy. Ustawienie można dostosować za pomocą
agents.defaults.imageMaxDimensionPx (domyślnie: 1200):
- Niższe wartości zmniejszają zużycie tokenów wizyjnych i rozmiar danych.
- Wyższe wartości zachowują więcej szczegółów wizualnych w zrzutach ekranu wymagających OCR lub zawierających rozbudowany interfejs użytkownika.
Aby uzyskać praktyczne zestawienie rozmiarów poszczególnych wstrzykiwanych plików, narzędzi,
Skills i monitu systemowego, użyj /context list lub /context detail. Zobacz
Kontekst.
Jak sprawdzić bieżące zużycie tokenów
Na czacie:
/status-> rozbudowana karta stanu z emoji, zawierająca model sesji, wykorzystanie kontekstu, tokeny wejściowe/wyjściowe ostatniej odpowiedzi oraz szacowany koszt, gdy dla aktywnego modelu skonfigurowano lokalne ceny./usage off|tokens|full-> dołącza stopkę zużycia dla każdej odpowiedzi. Ustawienie jest zachowywane dla sesji (jakoresponseUsage)./usage reset(aliasy:inherit,clear,default) usuwa nadpisanie sesji, dzięki czemu ponownie dziedziczy ona skonfigurowaną wartość domyślną./usage tokenspokazuje szczegóły tokenów i pamięci podręcznej dla tury./usage fullpokazuje zwięzłe szczegóły modelu, kontekstu i kosztu; szacowany koszt pojawia się tylko wtedy, gdy OpenClaw ma metadane zużycia i lokalne ceny aktywnego modelu. Niestandardowe układymessages.usageTemplatemogą zawierać pola tokenów i pamięci podręcznej.
/usage cost-> lokalne podsumowanie kosztów z dzienników sesji OpenClaw.
Inne powierzchnie:
- TUI/Web TUI: obsługiwane są
/statusi/usage. - CLI:
openclaw status --usageiopenclaw channels listpokazują znormalizowane okna limitów dostawcy (X% left, a nie koszty poszczególnych odpowiedzi). Dostawcy obecnie obsługujący okna zużycia: Claude (Anthropic), ClawRouter, Copilot (GitHub), DeepSeek, Gemini (Google Gemini CLI), MiniMax, OpenAI, Xiaomi, Xiaomi Token Plan i z.ai.
Przed wyświetleniem powierzchnie zużycia normalizują typowe aliasy natywnych pól dostawców.
W przypadku ruchu Responses z rodziny OpenAI obejmuje to zarówno
input_tokens/output_tokens, jak i prompt_tokens/completion_tokens, dzięki czemu
nazwy pól specyficzne dla transportu nie zmieniają /status, /usage ani podsumowań sesji.
Zużycie Gemini CLI również jest normalizowane: domyślny parser stream-json odczytuje zdarzenia
message asystenta, a stats.cached jest mapowane na cacheRead; gdy CLI pomija jawne pole
stats.input, używana jest wartość stats.input_tokens - stats.cached. Starsze nadpisania JSON
nadal odczytują tekst odpowiedzi z response.
W przypadku natywnego ruchu Responses z rodziny OpenAI aliasy zużycia WebSocket/SSE są
normalizowane w ten sam sposób, a gdy brakuje total_tokens lub ma ono wartość 0, suma jest
wyznaczana na podstawie znormalizowanych danych wejściowych i wyjściowych.
Gdy bieżąca migawka sesji zawiera niewiele danych, /status i session_status mogą odzyskać
liczniki tokenów/pamięci podręcznej oraz etykietę aktywnego modelu środowiska uruchomieniowego
z najnowszego dziennika zużycia transkrypcji. Istniejące niezerowe wartości bieżące nadal mają
pierwszeństwo przed wartościami awaryjnie pobranymi z transkrypcji, a większe sumy transkrypcji
zorientowane na monit mogą zostać użyte, gdy zapisanych sum brakuje lub są mniejsze.
Uwierzytelnianie zużycia dla okien limitów dostawców pochodzi najpierw z mechanizmów właściwych dla danego dostawcy; jeśli dostawca nie ma takiego mechanizmu albo mechanizm nie rozpozna tokenu, OpenClaw awaryjnie dopasowuje dane uwierzytelniające OAuth/klucza API z profili uwierzytelniania, zmiennych środowiskowych lub konfiguracji.
Wpisy asystenta w transkrypcji zachowują ten sam znormalizowany kształt danych o zużyciu,
w tym usage.cost, gdy aktywny model ma skonfigurowane ceny, a dostawca zwraca metadane zużycia.
Zapewnia to /usage cost i stan sesji oparty na transkrypcji ze stabilnym źródłem danych nawet
po zniknięciu bieżącego stanu środowiska uruchomieniowego.
OpenClaw przechowuje rozliczanie zużycia dostawcy oddzielnie od bieżącej migawki kontekstu.
Wartość usage.total dostawcy może obejmować dane wejściowe z pamięci podręcznej, dane wyjściowe
oraz wiele wywołań modelu w pętli narzędzi, dlatego jest przydatna do obliczania kosztów
i telemetrii, ale może zawyżać bieżące wykorzystanie okna kontekstu. Widoki i diagnostyka
kontekstu używają najnowszej migawki monitu (promptTokens albo ostatniego wywołania modelu,
gdy migawka monitu jest niedostępna) jako context.used.
Szacowanie kosztów (gdy jest wyświetlane)
Koszty są szacowane na podstawie konfiguracji cen modeli:
models.providers.<provider>.models[].costSą to kwoty w USD za 1 mln tokenów dla input, output, cacheRead i
cacheWrite. Jeśli brakuje cen, /usage full pomija koszt; użyj
/usage tokens albo niestandardowego messages.usageTemplate, gdy w każdej odpowiedzi
potrzebujesz szczegółów tokenów i pamięci podręcznej. Wyświetlanie kosztów nie ogranicza się
do uwierzytelniania kluczem API: dostawcy bez klucza API, tacy jak aws-sdk, mogą pokazywać
szacowany koszt, gdy skonfigurowany wpis modelu zawiera lokalne ceny, a dostawca zwraca
metadane zużycia.
Gdy procesy pomocnicze i kanały osiągną stan gotowości Gateway, OpenClaw rozpoczyna opcjonalne
wczytywanie cen w tle dla skonfigurowanych odwołań do modeli, które nie mają jeszcze lokalnych
cen. Proces ten pobiera zdalne katalogi cen OpenRouter i LiteLLM. Ustaw
models.pricing.enabled: false, aby pominąć pobieranie tych katalogów w sieciach offline lub
z ograniczeniami; jawne wpisy models.providers.*.models[].cost nadal sterują lokalnymi
szacunkami kosztów.
Wpływ czasu TTL pamięci podręcznej i przycinania
Buforowanie monitów przez dostawcę działa tylko w oknie czasu TTL pamięci podręcznej. OpenClaw może opcjonalnie wykonywać przycinanie według TTL pamięci podręcznej: po wygaśnięciu TTL pamięci podręcznej przycina sesję, a następnie resetuje okno pamięci podręcznej, aby kolejne żądania ponownie używały świeżo zbuforowanego kontekstu zamiast ponownie buforować całą historię. Pozwala to obniżyć koszty zapisu do pamięci podręcznej, gdy sesja pozostaje bezczynna dłużej niż TTL.
Skonfiguruj tę funkcję w sekcji Konfiguracja Gateway, a szczegóły jej działania znajdziesz w sekcji Przycinanie sesji.
Heartbeat może utrzymywać pamięć podręczną aktywną podczas okresów bezczynności. Jeśli TTL
pamięci podręcznej modelu wynosi 1h, ustawienie interwału Heartbeat nieco poniżej tej wartości
(np. 55m) może zapobiec ponownemu buforowaniu całego monitu, zmniejszając koszty zapisu do
pamięci podręcznej.
W konfiguracjach wieloagentowych można zachować jedną współdzieloną konfigurację modelu
i dostosować zachowanie pamięci podręcznej dla każdego agenta za pomocą
agents.list[].params.cacheRetention.
Pełny przewodnik po wszystkich ustawieniach znajduje się w sekcji Buforowanie monitów.
W przypadku cen API Anthropic odczyty z pamięci podręcznej są znacznie tańsze od tokenów wejściowych, natomiast zapisy do pamięci podręcznej są rozliczane z wyższym mnożnikiem. Najnowsze stawki i mnożniki TTL znajdziesz w cenniku buforowania monitów Anthropic: https://docs.anthropic.com/docs/build-with-claude/prompt-caching
Przykład: utrzymywanie aktywnej 1-godzinnej pamięci podręcznej za pomocą Heartbeat
agents: defaults: model: primary: "anthropic/claude-opus-4-6" models: "anthropic/claude-opus-4-6": params: cacheRetention: "long" heartbeat: every: "55m"Przykład: ruch mieszany ze strategią pamięci podręcznej dla poszczególnych agentów
agents: defaults: model: primary: "anthropic/claude-opus-4-6" models: "anthropic/claude-opus-4-6": params: cacheRetention: "long" # domyślna wartość bazowa dla większości agentów list: - id: "research" default: true heartbeat: every: "55m" # utrzymuj aktywną długoterminową pamięć podręczną dla rozbudowanych sesji - id: "alerts" params: cacheRetention: "none" # unikaj zapisów do pamięci podręcznej dla seryjnych powiadomieńagents.list[].params jest scalane z params wybranego modelu, dzięki czemu można nadpisać
wyłącznie cacheRetention, zachowując bez zmian pozostałe wartości domyślne modelu.
Kontekst Anthropic 1M
OpenClaw przydziela okno kontekstu Anthropic o rozmiarze 1M modelom Claude 4.x obsługującym
ogólną dostępność, takim jak Opus 4.8, Opus 4.7, Opus 4.6 i Sonnet 4.6. Dla tych modeli nie trzeba
ustawiać params.context1m: true.
agents: defaults: models: "anthropic/claude-opus-4-6": alias: opusStarsze konfiguracje mogą zachować context1m: true, ale OpenClaw nie wysyła już dla tego
ustawienia wycofanego nagłówka beta Anthropic context-1m-2025-08-07 ani nie rozszerza
nieobsługiwanych starszych modeli Claude do 1M.
Wymaganie: dane uwierzytelniające muszą umożliwiać korzystanie z długiego kontekstu. W przeciwnym razie Anthropic odpowiada błędem limitu szybkości po stronie dostawcy dla tego żądania.
Jeśli uwierzytelniasz się w Anthropic za pomocą tokenów OAuth/subskrypcji
(sk-ant-oat-*), OpenClaw zachowuje wymagane przez OAuth nagłówki beta
Anthropic, usuwając jednocześnie wycofany nagłówek beta context-1m-*, jeśli nadal występuje on
w starszej konfiguracji.
Wskazówki dotyczące zmniejszania zużycia tokenów
- Używaj
/compact, aby podsumowywać długie sesje. - Ograniczaj duże dane wyjściowe narzędzi w swoich przepływach pracy.
- Zmniejsz wartość
agents.defaults.imageMaxDimensionPxw sesjach zawierających wiele zrzutów ekranu. - Opisy Skills powinny być krótkie (lista Skills jest wstawiana do promptu).
- W przypadku rozwlekłej pracy eksploracyjnej preferuj mniejsze modele.
Dokładny wzór narzutu listy Skills znajdziesz w sekcji Skills.