Technical reference
Token-Nutzung und Kosten
OpenClaw erfasst Tokens, nicht Zeichen. Tokens sind modellspezifisch, bei den meisten OpenAI-ähnlichen Modellen entsprechen im englischen Text jedoch durchschnittlich etwa 4 Zeichen einem Token.
So wird der System-Prompt erstellt
OpenClaw stellt bei jedem Lauf einen eigenen System-Prompt zusammen. Er enthält:
- Werkzeugliste und Kurzbeschreibungen
- Skills-Liste (nur Metadaten; Anweisungen werden bei Bedarf mit
readgeladen). Native Codex-Turns erhalten den kompakten Skills-Block als auf den Turn beschränkte Entwickleranweisungen für die Zusammenarbeit; andere Harnesses erhalten ihn auf der normalen Prompt-Oberfläche. Begrenzt durchskills.limits.maxSkillsPromptChars, mit optionaler Überschreibung pro Agent unteragents.list[].skillsLimits.maxSkillsPromptChars. - Anweisungen zur Selbstaktualisierung
- Workspace- und Bootstrap-Dateien (
AGENTS.md,SOUL.md,TOOLS.md,IDENTITY.md,USER.md,HEARTBEAT.md, bei neuen WorkspacesBOOTSTRAP.mdsowieMEMORY.md, sofern vorhanden). Große eingefügte Dateien werden durchagents.defaults.bootstrapMaxCharsgekürzt (Standard:20000); die gesamte Bootstrap- Einfügung ist durchagents.defaults.bootstrapTotalMaxCharsbegrenzt (Standard:60000).- Native Codex-Turns fügen den Rohinhalt von
MEMORY.mdnicht ein, wenn für diesen Workspace Speicherwerkzeuge verfügbar sind; stattdessen erhalten sie einen kurzen Speicherverweis in den auf den Turn beschränkten Entwickleranweisungen für die Zusammenarbeit und verwenden Speicherwerkzeuge bei Bedarf. Wenn Werkzeuge deaktiviert sind, die Speichersuche nicht verfügbar ist oder der aktive Workspace vom Speicher-Workspace des Agenten abweicht, wirdMEMORY.mdersatzweise über den normalen begrenzten Turn-Kontext bereitgestellt. - Die kleingeschriebene Stammdatei
memory.mdwird niemals eingefügt. Sie dient als Legacy-Reparatureingabe füropenclaw doctor --fix, das sie nachMEMORY.mdmigriert. - Die täglichen Dateien unter
memory/*.mdsind nicht Teil des normalen Bootstrap-Prompts; in gewöhnlichen Turns bleiben sie über Speicherwerkzeuge bei Bedarf verfügbar. Modellläufe beim Zurücksetzen oder Starten können für diesen ersten Turn einmalig einen Startkontextblock mit aktuellen täglichen Speichereinträgen voranstellen, gesteuert durchagents.defaults.startupContext. Die reinen Chat-Befehle/newund/resetwerden bestätigt, ohne das Modell aufzurufen. - Auszüge aus
AGENTS.mdnach der Compaction werden separat behandelt und erfordern eine ausdrückliche Aktivierung überagents.defaults.compaction.postCompactionSections.
- Native Codex-Turns fügen den Rohinhalt von
- Zeit (UTC und Zeitzone des Benutzers)
- Antwort-Tags und Heartbeat-Verhalten
- Laufzeitmetadaten (Host/Betriebssystem/Modell/Denkmodus)
Die vollständige Aufschlüsselung finden Sie unter System-Prompt.
Verwenden Sie beim Dokumentieren von Zugangsdaten oder Authentifizierungsausschnitten die Konventionen für Geheimnisplatzhalter, um Fehlalarme von Geheimnisscannern bei reinen Dokumentationsänderungen zu vermeiden.
Was zum Kontextfenster zählt
Alles, was das Modell empfängt, zählt zum Kontextlimit:
- System-Prompt (alle oben aufgeführten Abschnitte)
- Gesprächsverlauf (Nachrichten von Benutzer und Assistent)
- Werkzeugaufrufe und Werkzeugergebnisse
- Anhänge/Transkripte (Bilder, Audio, Dateien)
- Compaction-Zusammenfassungen und Bereinigungsartefakte
- Provider-Wrapper oder Sicherheitsheader (nicht sichtbar, werden aber dennoch gezählt)
Laufzeitintensive Oberflächen haben eigene ausdrückliche Grenzen unter
agents.defaults.contextLimits (agentenspezifische Überschreibungen unter
agents.list[].contextLimits):
| Schlüssel | Zweck |
|---|---|
memoryGetMaxChars |
Maximale Zeichenzahl, die memory_get vor der Kürzung zurückgibt. |
memoryGetDefaultLines |
Standardmäßiges Zeilenfenster von memory_get, wenn eine Anfrage lines auslässt. |
toolResultMaxChars |
Erweiterte Obergrenze für ein einzelnes Live-Werkzeugergebnis (bis zu 1000000 Zeichen). |
postCompactionMaxChars |
Maximale Zeichenzahl, die beim Aktualisieren nach der Compaction aus AGENTS.md beibehalten wird. |
Dabei handelt es sich um begrenzte Laufzeitauszüge und von der Laufzeit eingefügte Blöcke, die von Bootstrap-Grenzen, Startkontextgrenzen und Grenzen des Skills-Prompts getrennt sind.
toolResultMaxChars ist standardmäßig nicht gesetzt. OpenClaw leitet daher die Live-
Grenze für Werkzeugergebnisse aus dem effektiven Kontextfenster des Modells ab: 16000 Zeichen bei weniger als
100.000 Tokens, 32000 Zeichen ab 100.000 Tokens und 64000 Zeichen ab 200.000 Tokens.
Die Laufzeitschutzgrenze für den Kontextanteil begrenzt ein einzelnes Werkzeugergebnis weiterhin auf 30 % des
Kontextfensters, selbst wenn eine höhere ausdrückliche Obergrenze konfiguriert ist.
Bei Bildern verkleinert OpenClaw Bildnutzlasten aus Transkripten und Werkzeugen vor
Provider-Aufrufen. Passen Sie dies mit agents.defaults.imageMaxDimensionPx an (Standard:
1200):
- Niedrigere Werte reduzieren den Verbrauch von Vision-Tokens und die Nutzlastgröße.
- Höhere Werte bewahren mehr visuelle Details für Screenshots mit hohem OCR-/UI-Anteil.
Eine praktische Aufschlüsselung nach eingefügter Datei, Werkzeugen, Skills und Größe des
System-Prompts erhalten Sie mit /context list oder /context detail. Siehe
Kontext.
So zeigen Sie die aktuelle Token-Nutzung an
Im Chat:
/status-> statusreiche Karte mit Emojis, die das Sitzungsmodell, die Kontextnutzung, die Ein- und Ausgabe-Tokens der letzten Antwort sowie die geschätzten Kosten anzeigt, wenn lokale Preise für das aktive Modell konfiguriert sind./usage off|tokens|full-> fügt jeder Antwort eine Nutzungsfußzeile pro Antwort hinzu. Bleibt pro Sitzung bestehen (gespeichert alsresponseUsage)./usage reset(Aliasse:inherit,clear,default) löscht die Sitzungsüberschreibung, sodass wieder der konfigurierte Standard übernommen wird./usage tokenszeigt Token- und Cache-Details des Turns./usage fullzeigt kompakte Modell-, Kontext- und Kostendetails; geschätzte Kosten erscheinen nur, wenn OpenClaw über Nutzungsmetadaten und lokale Preise für das aktive Modell verfügt. Benutzerdefinierte Layouts untermessages.usageTemplatekönnen Token- und Cache-Felder enthalten.
/usage cost-> lokale Kostenzusammenfassung aus den OpenClaw-Sitzungsprotokollen.
Weitere Oberflächen:
- TUI/Web-TUI:
/statusund/usagewerden unterstützt. - CLI:
openclaw status --usageundopenclaw channels listzeigen normalisierte Provider-Kontingentfenster (X% left, keine Kosten pro Antwort). Aktuelle Provider für Nutzungsfenster: Claude (Anthropic), ClawRouter, Copilot (GitHub), DeepSeek, Gemini (Google Gemini CLI), MiniMax, OpenAI, Xiaomi, Xiaomi Token Plan und z.ai.
Vor der Anzeige normalisieren die Nutzungsoberflächen gängige Aliasse nativer Provider-Felder.
Für Responses-Datenverkehr der OpenAI-Familie umfasst dies sowohl
input_tokens/output_tokens als auch prompt_tokens/completion_tokens, sodass
transportspezifische Feldnamen /status, /usage oder Sitzungszusammenfassungen
nicht verändern. Auch die Nutzung der Gemini CLI wird normalisiert: Der standardmäßige
stream-json-Parser liest message-Ereignisse des Assistenten, und stats.cached wird
cacheRead zugeordnet; stats.input_tokens - stats.cached wird verwendet, wenn die CLI
kein ausdrückliches Feld stats.input liefert. Legacy-JSON-Überschreibungen lesen den Antworttext
weiterhin aus response.
Bei nativem Responses-Datenverkehr der OpenAI-Familie werden WebSocket-/SSE-Nutzungsaliasse
auf dieselbe Weise normalisiert, und Gesamtwerte werden ersatzweise aus normalisierter Ein- und Ausgabe
gebildet, wenn total_tokens fehlt oder 0 ist.
Wenn der aktuelle Sitzungssnapshot nur wenige Daten enthält, können /status und session_status
Token-/Cache-Zähler sowie die aktive Laufzeitmodellbezeichnung aus dem
neuesten Transkript-Nutzungsprotokoll wiederherstellen. Vorhandene Live-Werte ungleich null haben weiterhin
Vorrang vor Ersatzwerten aus dem Transkript, und größere promptbezogene
Transkript-Gesamtwerte können sich durchsetzen, wenn gespeicherte Gesamtwerte fehlen oder kleiner sind.
Die Nutzungsauthentifizierung für Provider-Kontingentfenster stammt zuerst aus providerspezifischen Hooks. Wenn ein Provider keinen Hook hat oder der Hook kein Token auflösen kann, greift OpenClaw ersatzweise auf passende OAuth-/API-Schlüssel-Zugangsdaten aus Authentifizierungsprofilen, Umgebungsvariablen oder der Konfiguration zurück.
Transkripteinträge des Assistenten speichern dieselbe normalisierte Nutzungsstruktur,
einschließlich usage.cost, wenn für das aktive Modell Preise konfiguriert sind und der
Provider Nutzungsmetadaten zurückgibt. Dadurch erhalten /usage cost und der
transkriptgestützte Sitzungsstatus eine stabile Quelle, selbst nachdem der Live-
Laufzeitstatus nicht mehr vorhanden ist.
OpenClaw hält die Nutzungsabrechnung des Providers vom aktuellen Kontextsnapshot
getrennt. usage.total des Providers kann zwischengespeicherte Eingaben, Ausgaben und
mehrere Modellaufrufe in Werkzeugschleifen umfassen. Der Wert ist daher für Kosten und Telemetrie nützlich,
kann aber das aktive Kontextfenster zu groß darstellen. Kontextanzeigen und Diagnosen verwenden
für context.used den neuesten Prompt-Snapshot (promptTokens oder den letzten Modellaufruf,
wenn kein Prompt-Snapshot verfügbar ist).
Kostenschätzung (wenn angezeigt)
Die Kosten werden anhand Ihrer Modellpreiskonfiguration geschätzt:
models.providers.<provider>.models[].costDies sind USD pro 1 Mio. Tokens für input, output, cacheRead und
cacheWrite. Wenn Preisangaben fehlen, lässt /usage full die Kosten aus. Verwenden Sie
/usage tokens oder ein benutzerdefiniertes messages.usageTemplate, wenn Sie
Token-/Cache-Details in jeder Antwort benötigen. Die Kostenanzeige ist nicht auf die Authentifizierung per API-Schlüssel
beschränkt: Provider ohne API-Schlüssel wie aws-sdk können geschätzte Kosten anzeigen, wenn
ihr konfigurierter Modelleintrag lokale Preise enthält und der Provider
Nutzungsmetadaten zurückgibt.
Nachdem Sidecars und Kanäle den Bereitschaftspfad des Gateways erreicht haben, startet OpenClaw einen
optionalen Hintergrundprozess zum Laden von Preisen für konfigurierte Modellreferenzen, die noch
keine lokalen Preise haben. Dieser Prozess ruft entfernte Preiskataloge von OpenRouter und
LiteLLM ab. Setzen Sie models.pricing.enabled: false, um diese
Katalogabrufe in Offline- oder eingeschränkten Netzwerken zu überspringen; ausdrückliche Einträge unter
models.providers.*.models[].cost bestimmen weiterhin lokale Kostenschätzungen.
Auswirkungen von Cache-TTL und Bereinigung
Das Prompt-Caching des Providers gilt nur innerhalb des Cache-TTL-Fensters. OpenClaw kann optional eine Cache-TTL-Bereinigung ausführen: Nach Ablauf der Cache-TTL bereinigt es die Sitzung und setzt anschließend das Cache-Fenster zurück, sodass nachfolgende Anfragen den frisch zwischengespeicherten Kontext wiederverwenden, statt den gesamten Verlauf erneut zwischenzuspeichern. Dadurch bleiben die Cache-Schreibkosten niedriger, wenn eine Sitzung länger als die TTL inaktiv ist.
Konfigurieren Sie dies in der Gateway-Konfiguration, und lesen Sie die Verhaltensdetails unter Sitzungsbereinigung.
Heartbeat kann den Cache über Leerlaufphasen hinweg warm halten. Wenn die Cache-
TTL Ihres Modells 1h beträgt, kann ein Heartbeat-Intervall knapp darunter, beispielsweise 55m,
das erneute Zwischenspeichern des vollständigen Prompts vermeiden und so die Cache-Schreibkosten senken.
In Konfigurationen mit mehreren Agenten können Sie eine gemeinsame Modellkonfiguration beibehalten und das Cache-
Verhalten pro Agent mit agents.list[].params.cacheRetention anpassen.
Eine vollständige Beschreibung aller Einstellungen finden Sie unter Prompt-Caching.
Bei der Anthropic-API-Preisgestaltung sind Cache-Lesevorgänge deutlich günstiger als Eingabe- Tokens, während Cache-Schreibvorgänge mit einem höheren Multiplikator berechnet werden. Die aktuellen Preise und TTL-Multiplikatoren finden Sie in Anthropics Preisübersicht zum Prompt-Caching: https://docs.anthropic.com/docs/build-with-claude/prompt-caching
Beispiel: 1-Stunden-Cache mit Heartbeat warm halten
agents: defaults: model: primary: "anthropic/claude-opus-4-6" models: "anthropic/claude-opus-4-6": params: cacheRetention: "long" heartbeat: every: "55m"Beispiel: Gemischter Datenverkehr mit Cache-Strategie pro Agent
agents: defaults: model: primary: "anthropic/claude-opus-4-6" models: "anthropic/claude-opus-4-6": params: cacheRetention: "long" # Standardbasis für die meisten Agenten list: - id: "research" default: true heartbeat: every: "55m" # langen Cache für umfangreiche Sitzungen warm halten - id: "alerts" params: cacheRetention: "none" # Cache-Schreibvorgänge bei stoßweisen Benachrichtigungen vermeidenagents.list[].params wird mit den params des ausgewählten Modells zusammengeführt, sodass Sie
nur cacheRetention überschreiben und andere Modellstandards unverändert
übernehmen können.
Anthropic-Kontext mit 1 Mio. Tokens
OpenClaw verwendet für allgemein verfügbare Claude-4.x-Modelle wie Opus 4.8, Opus 4.7, Opus
4.6 und Sonnet 4.6 das Anthropic-Kontextfenster mit 1 Mio. Tokens. Für diese Modelle benötigen Sie
params.context1m: true nicht.
agents: defaults: models: "anthropic/claude-opus-4-6": alias: opusÄltere Konfigurationen können context1m: true beibehalten, OpenClaw sendet für
diese Einstellung jedoch nicht mehr Anthropics eingestellten Beta-Header
context-1m-2025-08-07 und erweitert nicht unterstützte ältere Claude-Modelle
nicht auf 1 Mio. Tokens.
Anforderung: Die Anmeldedaten müssen für die Nutzung langer Kontexte geeignet sein. Andernfalls antwortet Anthropic für diese Anfrage mit einem Provider-seitigen Fehler wegen einer Ratenbegrenzung.
Wenn Sie sich bei Anthropic mit OAuth-/Abonnement-Tokens
(sk-ant-oat-*) authentifizieren, behält OpenClaw die für OAuth erforderlichen Anthropic-Beta-
Header bei und entfernt zugleich das eingestellte context-1m-*-Beta, falls es noch in einer
älteren Konfiguration enthalten ist.
Tipps zur Verringerung des Token-Drucks
- Verwenden Sie
/compact, um lange Sitzungen zusammenzufassen. - Kürzen Sie große Tool-Ausgaben in Ihren Workflows.
- Verringern Sie
agents.defaults.imageMaxDimensionPxfür Sitzungen mit vielen Screenshots. - Halten Sie Skill-Beschreibungen kurz (die Skill-Liste wird in den Prompt eingefügt).
- Bevorzugen Sie kleinere Modelle für ausführliche, explorative Arbeiten.
Die genaue Formel für den zusätzlichen Umfang der Skill-Liste finden Sie unter Skills.