Transcript Hygiene (Provider Fixups)
Dieses Dokument beschreibt provider-spezifische Korrekturen, die auf Transcripts angewendet werden, bevor ein Run startet (beim Aufbau des Model Context). Diese Anpassungen erfolgen im Arbeitsspeicher und dienen dazu, strenge Provider-Anforderungen zu erfüllen. Sie schreiben das gespeicherte JSONL-Transcript auf der Festplatte nicht um.
Der Umfang umfasst:
- Tool-Call-ID-Bereinigung
- Reparatur der Tool-Result-Zuordnung
- Turn-Validierung / Sortierung
- Thought-Signature-Bereinigung
- Image-Payload-Bereinigung
Wenn du Details zur Transcript-Speicherung brauchst, schau hier:
Wo das läuft
Die gesamte Transcript Hygiene ist im Embedded Runner zentralisiert:
- Policy-Auswahl:
src/agents/transcript-policy.ts - Bereinigung/Reparatur-Anwendung:
sanitizeSessionHistoryinsrc/agents/pi-embedded-runner/google.ts
Die Policy nutzt provider, modelApi und modelId, um zu entscheiden, was angewendet wird.
Globale Regel: Image-Bereinigung
Image-Payloads werden immer bereinigt, um eine provider-seitige Ablehnung wegen Größenlimits zu verhindern (Herunterskalierung/Neukomprimierung übergroßer Base64-Bilder).
Implementierung:
sanitizeSessionMessagesImagesinsrc/agents/pi-embedded-helpers/images.tssanitizeContentBlocksImagesinsrc/agents/tool-images.ts
Provider-Matrix (aktuelles Verhalten)
OpenAI / OpenAI Codex
- Nur Image-Bereinigung.
- Bei Modellwechsel zu OpenAI Responses/Codex werden verwaiste Reasoning-Signaturen entfernt (eigenständige Reasoning-Items ohne nachfolgenden Content-Block).
- Keine Tool-Call-ID-Bereinigung.
- Keine Tool-Result-Pairing-Reparatur.
- Keine Turn-Validierung oder Neuordnung.
- Keine synthetischen Tool-Results.
- Keine Thought-Signature-Entfernung.
Google (Generative AI / Gemini CLI / Antigravity)
- Tool-Call-ID-Bereinigung: strikt alphanumerisch.
- Tool-Result-Pairing-Reparatur und synthetische Tool-Results.
- Turn-Validierung (Gemini-Style Turn-Alternierung).
- Google Turn-Ordering-Fixup (fügt einen kleinen User-Bootstrap vorne an, wenn die History mit Assistant beginnt).
- Antigravity Claude: Normalisierung von Thinking-Signaturen; Entfernung unsignierter Thinking-Blöcke.
Anthropic / Minimax (Anthropic-kompatibel)
- Tool-Result-Pairing-Reparatur und synthetische Tool-Results.
- Turn-Validierung (zusammenführen aufeinanderfolgender User-Turns für strikte Alternierung).
Mistral (einschließlich modell-ID-basierter Erkennung)
- Tool-Call-ID-Bereinigung: strict9 (alphanumerisch, Länge 9).
OpenRouter Gemini
- Thought-Signature-Bereinigung: Entfernung von Nicht-Base64-
thought_signature-Werten (Base64 bleibt erhalten).
Alles andere
- Nur Image-Bereinigung.
Historisches Verhalten (vor 2026.1.22)
Vor dem Release 2026.1.22 wendete OpenClaw mehrere Ebenen von Transcript Hygiene an:
- Eine transcript-sanitize Extension lief bei jedem Context-Build und konnte:
- Tool-Use/Result-Pairing reparieren.
- Tool-Call-IDs bereinigen (einschließlich eines nicht-strikten Modus, der
_/-beibehielt).
- Der Runner führte ebenfalls provider-spezifische Bereinigung durch, was zu doppelter Arbeit führte.
- Zusätzliche Mutationen erfolgten außerhalb der Provider-Policy, darunter:
- Entfernung von
<final>-Tags aus Assistant-Text vor der Persistierung. - Entfernung leerer Assistant-Error-Turns.
- Trimmen von Assistant-Content nach Tool-Calls.
- Entfernung von
Diese Komplexität verursachte Cross-Provider-Regressionen (insbesondere openai-responses call_id|fc_id-Pairing). Das Cleanup vom 2026.1.22 entfernte die Extension, zentralisierte die Logik im Runner und machte OpenAI no-touch außer bei der Image-Bereinigung.