OpenClaw past provider-specifieke fixes toe op transcripten vóór een run (bij het bouwen van modelcontext). De meeste hiervan zijn in-memory aanpassingen die worden gebruikt om aan strikte providereisen te voldoen. Een aparte reparatiepassage voor sessiebestanden kan ook opgeslagen JSONL herschrijven voordat de sessie wordt geladen, door misvormde JSONL-regels te verwijderen of door gepersisteerde turns te repareren die syntactisch geldig zijn maar waarvan bekend is dat ze tijdens replay door een provider worden geweigerd. Wanneer een reparatie plaatsvindt, wordt het oorspronkelijke bestand naast het sessiebestand geback-upt. Scope omvat:Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- Runtime-only promptcontext blijft buiten transcriptturns die zichtbaar zijn voor gebruikers
- Sanitization van tool-call-id’s
- Validatie van tool-call-invoer
- Reparatie van tool-resultaatkoppeling
- Turnvalidatie / -ordening
- Opschoning van denksignatures
- Opschoning van thinking-signatures
- Sanitization van afbeeldingspayloads
- Opschoning van lege tekstblokken vóór providerreplay
- Tagging van herkomst van gebruikersinvoer (voor intersessie-geroute prompts)
- Reparatie van lege assistent-error-turns voor Bedrock Converse-replay
Globale regel: runtimecontext is geen gebruikerstranscript
Runtime-/systeemcontext kan voor een turn aan de modelprompt worden toegevoegd, maar is geen door de eindgebruiker geschreven content. OpenClaw bewaart een aparte, transcriptgerichte promptbody voor Gateway-antwoorden, in de wachtrij geplaatste follow-ups, ACP, CLI en embedded Pi- runs. Opgeslagen zichtbare gebruikersturns gebruiken die transcriptbody in plaats van de met runtime verrijkte prompt. Voor legacy-sessies waarin runtimewrappers al zijn gepersisteerd, passen Gateway-geschiedenisoppervlakken een weergaveprojectie toe voordat berichten worden teruggegeven aan WebChat-, TUI-, REST- of SSE-clients.Waar dit draait
Alle transcript-hygiëne is gecentraliseerd in de embedded runner:- Beleidsselectie:
src/agents/transcript-policy.ts - Toepassing van sanitization/reparatie:
sanitizeSessionHistoryinsrc/agents/pi-embedded-runner/replay-history.ts
provider, modelApi en modelId om te bepalen wat moet worden toegepast.
Los van transcript-hygiëne worden sessiebestanden (indien nodig) vóór het laden gerepareerd:
repairSessionFileIfNeededinsrc/agents/session-file-repair.ts- Aangeroepen vanuit
run/attempt.tsencompact.ts(embedded runner)
Globale regel: afbeeldingssanitization
Afbeeldingspayloads worden altijd gesanitized om provider-side weigering door grootte- limieten te voorkomen (te grote base64-afbeeldingen worden verkleind/opnieuw gecomprimeerd). Dit helpt ook om door afbeeldingen veroorzaakte tokendruk te beheersen voor vision-capable modellen. Lagere maximale afmetingen verminderen doorgaans het tokengebruik; hogere afmetingen behouden detail. Implementatie:sanitizeSessionMessagesImagesinsrc/agents/pi-embedded-helpers/images.tssanitizeContentBlocksImagesinsrc/agents/tool-images.ts- Maximale afbeeldingszijde is configureerbaar via
agents.defaults.imageMaxDimensionPx(standaard:1200). - Lege tekstblokken worden verwijderd terwijl deze pass door replay-content loopt. Assistent- turns die daardoor leeg worden, worden uit de replaykopie verwijderd; gebruiker- en tool-result- turns die leeg worden, krijgen een niet-lege placeholder voor weggelaten content.
Globale regel: misvormde tool-calls
Assistent-tool-call-blokken waarin zowelinput als arguments ontbreken, worden verwijderd
voordat modelcontext wordt gebouwd. Dit voorkomt providerweigeringen door gedeeltelijk
gepersisteerde tool-calls (bijvoorbeeld na een rate-limit-fout).
Implementatie:
sanitizeToolCallInputsinsrc/agents/session-transcript-repair.ts- Toegepast in
sanitizeSessionHistoryinsrc/agents/pi-embedded-runner/replay-history.ts
Globale regel: herkomst van intersessie-invoer
Wanneer een agent viasessions_send een prompt naar een andere sessie stuurt (inclusief
agent-naar-agent reply-/announce-stappen), persisteert OpenClaw de aangemaakte gebruikersturn met:
message.provenance.kind = "inter_session"
[Inter-session message ... isUser=false]
aan dezelfde turn toe vóór de tekst van de geroute prompt, zodat de actieve modelcall
output van een externe sessie kan onderscheiden van externe eindgebruikersinstructies. Deze marker bevat
de bronsessie, het kanaal en de tool wanneer beschikbaar. Het transcript gebruikt nog steeds
role: "user" voor providercompatibiliteit, maar zowel de zichtbare tekst als de herkomst-
metadata markeren de turn als intersessiegegevens.
Tijdens het opnieuw opbouwen van context past OpenClaw dezelfde marker toe op oudere gepersisteerde
intersessie-gebruikersturns die alleen herkomstmetadata hebben.
Providermatrix (huidig gedrag)
OpenAI / OpenAI Codex- Alleen afbeeldingssanitization.
- Verwijder verweesde reasoning-signatures (zelfstandige reasoning-items zonder volgend contentblok) voor OpenAI Responses-/Codex-transcripten, en verwijder replaybare OpenAI-reasoning na een modelroutewissel.
- Behoud replaybare payloads van OpenAI Responses-reasoning-items, inclusief versleutelde items met lege samenvatting, zodat handmatige/WebSocket-replay de vereiste
rs_*-state gekoppeld houdt aan assistentoutputitems. - Geen sanitization van tool-call-id’s.
- Reparatie van tool-resultaatkoppeling kan echte gematchte outputs verplaatsen en Codex-achtige
aborted-outputs synthetiseren voor ontbrekende tool-calls. - Geen turnvalidatie of herordening.
- Ontbrekende tooloutputs uit de OpenAI Responses-familie worden gesynthetiseerd als
abortedom overeen te komen met Codex-replaynormalisatie. - Geen stripping van denksignatures.
- Historische thinking-/reasoning-blokken van de assistent worden vóór replay gestript, zodat lokale OpenAI-compatibele Gemma 4-servers geen reasoning-content uit eerdere turns ontvangen.
- Huidige voortzettingen van tool-calls binnen dezelfde turn behouden het reasoning-blok van de assistent gekoppeld aan de tool-call totdat het toolresultaat is gereplayed.
- Sanitization van tool-call-id’s: strikt alfanumeriek.
- Reparatie van tool-resultaatkoppeling en synthetische toolresultaten.
- Turnvalidatie (Gemini-achtige turnafwisseling).
- Google-turnordening-fixup (voeg een kleine user-bootstrap vooraan toe als de geschiedenis met assistent begint).
- Antigravity Claude: normaliseer thinking-signatures; verwijder niet-ondertekende thinking-blokken.
- Reparatie van tool-resultaatkoppeling en synthetische toolresultaten.
- Turnvalidatie (voeg opeenvolgende gebruikersturns samen om aan strikte afwisseling te voldoen).
- Afsluitende assistent-prefill-turns worden gestript uit uitgaande Anthropic Messages- payloads wanneer thinking is ingeschakeld, inclusief Cloudflare AI Gateway-routes.
- Thinking-blokken met ontbrekende, lege of blanco replay-signatures worden gestript vóór providerconversie. Als daardoor een assistentturn leeg wordt, behoudt OpenClaw de turnvorm met niet-lege tekst voor weggelaten reasoning.
- Oudere assistentturns die alleen thinking bevatten en moeten worden gestript, worden vervangen door niet-lege tekst voor weggelaten reasoning, zodat provideradapters de replay- turn niet verwijderen.
- Lege assistent-stream-error-turns worden vóór replay gerepareerd naar een niet-leeg fallback-tekstblok.
Bedrock Converse weigert assistentberichten met
content: [], dus gepersisteerde assistentturns metstopReason: "error"en lege content worden ook vóór het laden op schijf gerepareerd. - Assistent-stream-error-turns die alleen blanco tekstblokken bevatten, worden uit de in-memory replaykopie verwijderd in plaats van een ongeldig blanco blok te replayen.
- Claude-thinking-blokken met ontbrekende, lege of blanco replay-signatures worden gestript vóór Converse-replay. Als daardoor een assistentturn leeg wordt, behoudt OpenClaw de turnvorm met niet-lege tekst voor weggelaten reasoning.
- Oudere assistentturns die alleen thinking bevatten en moeten worden gestript, worden vervangen door niet-lege tekst voor weggelaten reasoning, zodat de Converse-replay de strikte turnvorm behoudt.
- Replay filtert OpenClaw delivery-mirror- en gateway-geïnjecteerde assistentturns.
- Afbeeldingssanitization is van toepassing via de globale regel.
- Sanitization van tool-call-id’s: strict9 (alfanumeriek, lengte 9).
- Opschoning van denksignatures: strip niet-base64
thought_signature-waarden (behoud base64).
- Alleen afbeeldingssanitization.
Historisch gedrag (vóór 2026.1.22)
Vóór de release 2026.1.22 paste OpenClaw meerdere lagen transcript-hygiëne toe:- Een transcript-sanitize-extensie draaide bij elke contextbuild en kon:
- Tool-use/result-koppeling repareren.
- Tool-call-id’s sanitiseren (inclusief een niet-strikte modus die
_/-behield).
- De runner voerde ook provider-specifieke sanitization uit, wat werk dupliceerde.
- Aanvullende mutaties vonden plaats buiten het providerbeleid, waaronder:
<final>-tags strippen uit assistenttekst vóór persistentie.- Lege assistent-error-turns verwijderen.
- Assistentcontent na tool-calls trimmen.
openai-responses
call_id|fc_id-koppeling). De opschoning in 2026.1.22 verwijderde de extensie, centraliseerde
logica in de runner en maakte OpenAI no-touch buiten afbeeldingssanitization.