Technical reference
Wykorzystanie tokenów i koszty
OpenClaw śledzi tokeny, nie znaki. Tokeny są zależne od modelu, ale większość modeli w stylu OpenAI ma średnio ~4 znaki na token dla tekstu angielskiego.
Jak budowany jest prompt systemowy
OpenClaw składa własny prompt systemowy przy każdym uruchomieniu. Obejmuje on:
- Listę narzędzi + krótkie opisy
- Listę Skills (tylko metadane; instrukcje są ładowane na żądanie za pomocą
read). Natywne tury Codex otrzymują zwarty blok Skills jako instrukcje deweloperskie współpracy o zakresie tury; inne harnessy otrzymują go w normalnej powierzchni promptu. Jest ograniczony przezskills.limits.maxSkillsPromptChars, z opcjonalnym nadpisaniem dla agenta wagents.list[].skillsLimits.maxSkillsPromptChars. - Instrukcje samodzielnej aktualizacji
- Workspace + pliki bootstrapu (
AGENTS.md,SOUL.md,TOOLS.md,IDENTITY.md,USER.md,HEARTBEAT.md,BOOTSTRAP.mdgdy nowe, plusMEMORY.mdgdy obecny). Natywne tury Codex nie wklejają surowegoMEMORY.mdze skonfigurowanego workspace agenta, gdy narzędzia pamięci są dostępne dla tego workspace; zawierają mały wskaźnik pamięci w instrukcjach deweloperskich współpracy o zakresie tury i używają narzędzi pamięci na żądanie. Jeśli narzędzia są wyłączone, wyszukiwanie w pamięci jest niedostępne albo aktywny workspace różni się od workspace pamięci agenta,MEMORY.mdużywa normalnej, ograniczonej ścieżki kontekstu tury. Mały rootmemory.mdnie jest wstrzykiwany; jest starszym wejściem naprawczym dlaopenclaw doctor --fix, gdy występuje w parze zMEMORY.md. Duże wstrzykiwane pliki są obcinane przezagents.defaults.bootstrapMaxChars(domyślnie: 20000), a całkowite wstrzyknięcie bootstrapu jest ograniczone przezagents.defaults.bootstrapTotalMaxChars(domyślnie: 60000). Dzienne plikimemory/*.mdnie są częścią normalnego promptu bootstrapu; pozostają dostępne na żądanie przez narzędzia pamięci w zwykłych turach, ale uruchomienia modelu reset/startup mogą dodać na początku jednorazowy blok kontekstu startowego z ostatnią dzienną pamięcią dla tej pierwszej tury. Surowe polecenia czatu/newi/resetsą potwierdzane bez wywoływania modelu. Wstęp startowy jest kontrolowany przezagents.defaults.startupContext. Fragmenty AGENTS.md po Compaction są osobne i wymagają jawnego włączeniaagents.defaults.compaction.postCompactionSections. - Czas (UTC + strefa czasowa użytkownika)
- Tagi odpowiedzi + zachowanie Heartbeat
- Metadane runtime (host/OS/model/thinking)
Pełny podział znajdziesz w Prompcie systemowym.
Dokumentując poświadczenia lub fragmenty autoryzacji, używaj Konwencji placeholderów sekretów, aby uniknąć fałszywych trafień 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:
- Prompt systemowy (wszystkie sekcje wymienione powyżej)
- Historia konwersacji (wiadomości użytkownika + asystenta)
- Wywołania narzędzi i wyniki narzędzi
- Załączniki/transkrypcje (obrazy, audio, pliki)
- Podsumowania Compaction i artefakty przycinania
- Wrappery dostawcy lub nagłówki bezpieczeństwa (niewidoczne, ale nadal liczone)
Niektóre powierzchnie intensywnie używane przez runtime mają własne jawne limity:
agents.defaults.contextLimits.memoryGetMaxCharsagents.defaults.contextLimits.memoryGetDefaultLinesagents.defaults.contextLimits.toolResultMaxCharsagents.defaults.contextLimits.postCompactionMaxChars
Nadpisania dla agenta znajdują się pod agents.list[].contextLimits. Te ustawienia są
przeznaczone dla ograniczonych fragmentów runtime i wstrzykiwanych bloków należących do runtime. Są
oddzielne od limitów bootstrapu, limitów kontekstu startowego i limitów promptu Skills.
toolResultMaxChars to zaawansowany limit górny (do 1000000 znaków). Gdy nie jest ustawiony, OpenClaw wybiera
aktywny limit wyników narzędzi z efektywnego okna kontekstu modelu: 16000 znaków
poniżej 100 tys. tokenów, 32000 znaków przy 100 tys.+ tokenów i 64000 znaków przy 200 tys.+
tokenów, nadal ograniczone przez zabezpieczenie udziału kontekstu runtime.
Dla obrazów OpenClaw zmniejsza payloady obrazów transkrypcji/narzędzi przed wywołaniami dostawcy.
Użyj agents.defaults.imageMaxDimensionPx (domyślnie: 1200), aby to dostroić:
- Niższe wartości zwykle zmniejszają użycie tokenów wizyjnych i rozmiar payloadu.
- Wyższe wartości zachowują więcej szczegółów wizualnych dla zrzutów ekranu obciążonych OCR/UI.
Aby uzyskać praktyczny podział (według wstrzykniętego pliku, narzędzi, Skills i rozmiaru promptu systemowego), użyj /context list lub /context detail. Zobacz Kontekst.
Jak zobaczyć bieżące użycie tokenów
Użyj tego w czacie:
/status→ karta statusu z emoji z modelem sesji, użyciem kontekstu, tokenami wejścia/wyjścia ostatniej odpowiedzi oraz szacowanym kosztem, gdy lokalne ceny są skonfigurowane dla aktywnego modelu./usage off|tokens|full→ dodaje stopkę użycia dla każdej odpowiedzi do każdej odpowiedzi.- Utrwala się dla sesji (przechowywane jako
responseUsage). /usage reset(aliasy:inherit,clear,default) — czyści nadpisanie sesji, aby sesja ponownie odziedziczyła skonfigurowaną wartość domyślną./usage tokenspokazuje szczegóły tokenów/cache tury./usage fullpokazuje zwarte szczegóły modelu/kontekstu/kosztu; szacowany koszt pojawia się tylko wtedy, gdy OpenClaw ma metadane użycia i lokalne ceny dla aktywnego modelu. Niestandardowe układymessages.usageTemplatemogą zawierać pola tokenów/cache.
- Utrwala się dla sesji (przechowywane jako
/usage cost→ pokazuje lokalne podsumowanie kosztów z logów sesji OpenClaw.
Inne powierzchnie:
- TUI/Web TUI:
/status+/usagesą obsługiwane. - CLI:
openclaw status --usageiopenclaw channels listpokazują znormalizowane okna limitów dostawcy (X% left, nie koszty dla każdej odpowiedzi). Bieżący dostawcy okien użycia: Anthropic, GitHub Copilot, Gemini CLI, OpenAI Codex, MiniMax, Xiaomi i z.ai.
Powierzchnie użycia normalizują typowe natywne aliasy pól dostawcy przed wyświetleniem.
Dla ruchu Responses rodziny OpenAI obejmuje to zarówno input_tokens /
output_tokens, jak i prompt_tokens / completion_tokens, więc nazwy pól specyficzne dla transportu
nie zmieniają /status, /usage ani podsumowań sesji.
Użycie Gemini CLI też jest normalizowane: domyślny parser stream-json odczytuje
zdarzenia message asystenta, a stats.cached mapuje się na cacheRead z
stats.input_tokens - stats.cached użytym, gdy CLI pomija jawne pole
stats.input. Starsze nadpisania JSON nadal odczytują tekst odpowiedzi z
response.
Dla natywnego ruchu Responses rodziny OpenAI aliasy użycia WebSocket/SSE są
normalizowane w ten sam sposób, a sumy wracają do znormalizowanego wejścia + wyjścia, gdy
total_tokens brakuje albo wynosi 0.
Gdy bieżący snapshot sesji jest ubogi, /status i session_status mogą
również odzyskać liczniki tokenów/cache oraz aktywną etykietę modelu runtime z
najnowszego logu użycia transkrypcji. Istniejące niezerowe wartości live nadal mają
pierwszeństwo przed wartościami fallback z transkrypcji, a większe, zorientowane na prompt
sumy transkrypcji mogą wygrać, gdy zapisanych sum brakuje albo są mniejsze.
Autoryzacja użycia dla okien limitów dostawcy pochodzi z hooków specyficznych dla dostawcy, gdy
są dostępne; w przeciwnym razie OpenClaw wraca do dopasowania poświadczeń OAuth/API-key
z profili auth, env albo config.
Wpisy transkrypcji asystenta utrwalają ten sam znormalizowany kształt użycia, w tym
usage.cost, gdy aktywny model ma skonfigurowane ceny, a dostawca
zwraca metadane użycia. Daje to /usage cost i statusowi sesji opartemu na transkrypcji
stabilne źródło nawet po zniknięciu stanu runtime live.
OpenClaw utrzymuje rozliczanie użycia dostawcy oddzielnie od bieżącego snapshotu kontekstu.
usage.total dostawcy może obejmować buforowane wejście, wyjście i wiele
wywołań modelu w pętli narzędzi, więc jest przydatne dla kosztów i telemetrii, ale może zawyżać
okno kontekstu live. Wyświetlanie kontekstu i diagnostyka używają najnowszego snapshotu promptu
(promptTokens albo ostatniego wywołania modelu, gdy snapshot promptu nie jest
dostępny) dla context.used.
Szacowanie kosztów (gdy pokazywane)
Koszty są szacowane z konfiguracji cen modelu:
models.providers.<provider>.models[].costSą to 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 potrzebujesz szczegółów tokenów/cache w każdej
odpowiedzi. Wyświetlanie kosztów nie jest ograniczone do autoryzacji API-key: dostawcy inni niż API-key,
tacy jak aws-sdk, mogą pokazywać szacowany koszt, gdy ich skonfigurowany wpis modelu zawiera
lokalne ceny, a dostawca zwraca metadane użycia.
Po tym, jak sidecary i kanały osiągną ścieżkę gotowości Gateway, OpenClaw uruchamia
opcjonalny bootstrap cen w tle dla skonfigurowanych referencji modeli, które nie mają
jeszcze lokalnych cen. Ten bootstrap pobiera zdalne katalogi cen OpenRouter i LiteLLM.
Ustaw models.pricing.enabled: false, aby pominąć te pobrania katalogów
w sieciach offline lub z ograniczeniami; jawne wpisy
models.providers.*.models[].cost nadal napędzają lokalne szacunki kosztów.
TTL cache i wpływ przycinania
Buforowanie promptów przez dostawcę działa tylko w oknie TTL cache. OpenClaw może opcjonalnie uruchamiać przycinanie cache-ttl: przycina sesję po wygaśnięciu TTL cache, a następnie resetuje okno cache, aby kolejne żądania mogły ponownie używać świeżo zbuforowanego kontekstu zamiast ponownie buforować całą historię. Utrzymuje to niższe koszty zapisu cache, gdy sesja pozostaje bezczynna dłużej niż TTL.
Skonfiguruj to w Konfiguracji Gateway i zobacz szczegóły zachowania w Przycinaniu sesji.
Heartbeat może utrzymać cache ciepły przez przerwy bezczynności. Jeśli TTL cache modelu
wynosi 1h, ustawienie interwału heartbeat tuż poniżej tej wartości (np. 55m) może uniknąć
ponownego buforowania pełnego promptu, zmniejszając koszty zapisu cache.
W konfiguracjach z wieloma agentami możesz utrzymać jedną współdzieloną konfigurację modelu i dostrajać zachowanie cache
dla każdego agenta za pomocą agents.list[].params.cacheRetention.
Pełny przewodnik po wszystkich ustawieniach znajdziesz w Buforowaniu promptów.
W przypadku cen API Anthropic odczyty cache są znacznie tańsze niż tokeny wejściowe, podczas gdy zapisy cache są rozliczane z wyższym mnożnikiem. Najnowsze stawki i mnożniki TTL znajdziesz w cenach buforowania promptów Anthropic: https://docs.anthropic.com/docs/build-with-claude/prompt-caching
Przykład: utrzymanie ciepłego cache 1h 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: mieszany ruch ze strategią cache dla każdego agenta
agents: defaults: model: primary: "anthropic/claude-opus-4-6" models: "anthropic/claude-opus-4-6": params: cacheRetention: "long" # default baseline for most agents list: - id: "research" default: true heartbeat: every: "55m" # keep long cache warm for deep sessions - id: "alerts" params: cacheRetention: "none" # avoid cache writes for bursty notificationsagents.list[].params scala się na wierzchu params wybranego modelu, więc możesz
nadpisać tylko cacheRetention i odziedziczyć pozostałe wartości domyślne modelu bez zmian.
Kontekst Anthropic 1M
OpenClaw rozmiaruje modele Claude 4.x zdolne do GA, takie jak Opus 4.8, Opus 4.7, Opus 4.6 i
Sonnet 4.6, z oknem kontekstu Anthropic 1M. Nie potrzebujesz
params.context1m: true dla tych modeli.
agents: defaults: models: "anthropic/claude-opus-4-6": alias: opusStarsze konfiguracje mogą zachować context1m: true, ale OpenClaw nie wysyła już
wycofanego nagłówka beta Anthropic context-1m-2025-08-07 dla tego ustawienia i
nie rozszerza nieobsługiwanych starszych modeli Claude do 1M.
Wymaganie: poświadczenie musi kwalifikować się do użycia długiego kontekstu. Jeśli nie, Anthropic odpowiada błędem limitu szybkości po stronie dostawcy dla tego żądania.
Jeśli uwierzytelniasz Anthropic tokenami OAuth/subskrypcji (sk-ant-oat-*),
OpenClaw zachowuje wymagane przez OAuth nagłówki beta Anthropic, jednocześnie usuwając
wycofany nagłówek beta context-1m-*, jeśli pozostaje w starszej konfiguracji.
Wskazówki dotyczące zmniejszania presji tokenów
- Użyj
/compact, aby podsumować długie sesje. - Przycinaj duże wyniki narzędzi w swoich przepływach pracy.
- Obniż
agents.defaults.imageMaxDimensionPxdla sesji z dużą liczbą zrzutów ekranu. - Opisy Skills powinny być krótkie (lista Skills jest wstrzykiwana do promptu).
- Preferuj mniejsze modele do rozwlekłej, eksploracyjnej pracy.
Zobacz Skills, aby poznać dokładny wzór narzutu listy Skills.