Transcript Hygiene – Provider-Fixes für stabile LLM-Integrationen
Du kennst das Problem: Dein Code funktioniert lokal einwandfrei, aber sobald du zu einem anderen LLM-Provider wechselst, lehnt die API deine Requests ab. Mal passt die Reihenfolge der Turns nicht, mal sind die Tool-IDs zu lang oder ein Bild-Payload sprengt das Limit. Diese kleinen Formatierungsfehler sind zeitraubend und schwer zu debuggen, besonders wenn sie nur sporadisch nach einem Rate-Limit-Fehler auftreten.
Statt die Sessions manuell zu bereinigen, übernimmt das System diese Arbeit automatisch. Diese “Transcript Hygiene” sorgt dafür, dass die Daten genau so aufbereitet werden, wie der jeweilige Provider sie erwartet, ohne deine originalen Daten auf der Festplatte zu verändern.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Zugriff auf den Source Code des embedded runners.
- Die Konfigurationsdateien in
src/agents/. - Ein Verständnis der unterstützten Provider (OpenAI, Google, Anthropic, Mistral).
Schnellstart
Abschnitt betitelt „Schnellstart“Die Transcript Hygiene läuft automatisch im embedded runner ab, bevor der Model-Kontext aufgebaut wird. Hier ist der minimale Pfad, um zu verstehen, wo was passiert:
- Policy Auswahl: In
src/agents/transcript-policy.tswird anhand vonprovider,modelApiundmodelIdentschieden, welche Regeln gelten. - Anwendung: Die Funktion
sanitizeSessionHistoryinsrc/agents/pi-embedded-runner/google.tsführt die eigentliche Bereinigung durch. - Bilder: Zu große Bilder werden über
sanitizeSessionMessagesImagesinsrc/agents/pi-embedded-helpers/images.tsautomatisch herunterskaliert oder rekomprimiert. - Tool-Calls: In
src/agents/session-transcript-repair.tswerden Assistant-Blocks ohneinputoderargumentsentfernt.
Wichtig ist: Alle diese Anpassungen passieren in-memory. Deine JSONL-Dateien bleiben unberührt, es sei denn, ein separater Repair-Pass muss defekte Zeilen vor dem Laden komplett entfernen.
Provider-Spezifische Regeln
Abschnitt betitelt „Provider-Spezifische Regeln“Jeder Provider hat andere Anforderungen. Hier ist die aktuelle Matrix der Anpassungen:
- Google (Gemini/Antigravity): Erzwingt strikte alphanumerische Tool-IDs und korrigiert die Turn-Reihenfolge (Gemini-style alternation). Wenn die History mit einem Assistant-Turn beginnt, wird ein kleiner User-Bootstrap vorangestellt.
- Anthropic & Minimax: Repariert Tool-Result-Pairings und führt aufeinanderfolgende User-Turns zusammen, um die strikte Abfolge einzuhalten.
- Mistral: Kürzt Tool-IDs auf eine exakte Länge von 9 Zeichen (alphanumerisch).
- OpenRouter Gemini: Entfernt
thought_signatureWerte, die kein Base64-Format haben. - OpenAI: Hier wird das “No-Touch”-Prinzip verfolgt. Außer der Bild-Sanitization werden lediglich verwaiste Reasoning-Signatures beim Modell-Wechsel entfernt.
Fehlerbehebung
Abschnitt betitelt „Fehlerbehebung“Wenn eine Session-Datei beschädigt ist, greifen folgende Mechanismen:
- Malformed JSONL: Die Funktion
repairSessionFileIfNeededinsrc/agents/session-file-repair.tslöscht ungültige Zeilen vor dem Laden. Eine Backup-Datei wird automatisch neben der Session-Datei erstellt. - Provider Rejections: Falls ein Provider einen Request wegen Tool-IDs ablehnt, prüfe in
src/agents/transcript-policy.ts, ob der Provider korrekt erkannt wird. - Fehlende Tool-Inputs: Wenn Tool-Calls nach einem Abbruch keine Argumente enthalten, werden sie automatisch gedroppt, um API-Fehler zu vermeiden.
- Oversized Images: Wenn Bilder zu groß sind, schau in
src/agents/tool-images.tsnach der Implementierung dersanitizeContentBlocksImages.
Du hast Fragen zu einem speziellen Setup? Nutze den AI Setup Assistant für direkte Hilfe.
Nächste Schritte
Abschnitt betitelt „Nächste Schritte“OpenClaw Expert
Noch festgefahren?
Wenn diese Seite nicht hilft, frage OpenClaw Expert nach Schritt-fuer-Schritt-Loesungen.