docs/docs/fr/reference/transcript-hygiene.md
2026-04-05 12:58:42 +00:00

7.6 KiB
Raw Blame History

read_when summary title x-i18n
Vous déboguez des rejets de requêtes fournisseur liés à la forme de la transcription
Vous modifiez lassainissement des transcriptions ou la logique de réparation des appels doutils
Vous enquêtez sur des incompatibilités didentifiants dappels doutils entre fournisseurs
Référence : règles dassainissement et de réparation des transcriptions propres à chaque fournisseur Hygiène des transcriptions
generated_at model provider source_hash source_path workflow
2026-04-05T12:54:05Z gpt-5.4 openai 217afafb693cf89651e8fa361252f7b5c197feb98d20be4697a83e6dedc0ec3f reference/transcript-hygiene.md 15

Hygiène des transcriptions (correctifs fournisseur)

Ce document décrit les correctifs propres à chaque fournisseur appliqués aux transcriptions avant une exécution (construction du contexte du modèle). Il sagit dajustements en mémoire utilisés pour satisfaire les exigences strictes des fournisseurs. Ces étapes dhygiène ne réécrivent pas la transcription JSONL stockée sur disque ; toutefois, un passage séparé de réparation du fichier de session peut réécrire les fichiers JSONL malformés en supprimant les lignes invalides avant le chargement de la session. Lorsquune réparation a lieu, le fichier original est sauvegardé à côté du fichier de session.

Le périmètre comprend :

  • Assainissement des identifiants dappels doutils
  • Validation des entrées dappels doutils
  • Réparation de lappariement des résultats doutils
  • Validation / ordre des tours
  • Nettoyage des signatures de réflexion
  • Assainissement des charges utiles dimage
  • Marquage de provenance des entrées utilisateur (pour les prompts routés entre sessions)

Si vous avez besoin de détails sur le stockage des transcriptions, consultez :


Où cela sexécute

Toute lhygiène des transcriptions est centralisée dans lexécuteur intégré :

  • Sélection de politique : src/agents/transcript-policy.ts
  • Application de lassainissement/de la réparation : sanitizeSessionHistory dans src/agents/pi-embedded-runner/google.ts

La politique utilise provider, modelApi et modelId pour décider quoi appliquer.

Séparément de lhygiène des transcriptions, les fichiers de session sont réparés (si nécessaire) avant chargement :

  • repairSessionFileIfNeeded dans src/agents/session-file-repair.ts
  • Appelé depuis run/attempt.ts et compact.ts (exécuteur intégré)

Règle globale : assainissement des images

Les charges utiles dimage sont toujours assainies pour éviter les rejets côté fournisseur dus aux limites de taille (réduction/recompression des images base64 surdimensionnées).

Cela aide également à contrôler la pression en jetons induite par les images pour les modèles capables de vision. Des dimensions maximales plus faibles réduisent généralement lusage de jetons ; des dimensions plus élevées préservent les détails.

Implémentation :

  • sanitizeSessionMessagesImages dans src/agents/pi-embedded-helpers/images.ts
  • sanitizeContentBlocksImages dans src/agents/tool-images.ts
  • Le côté maximal des images est configurable via agents.defaults.imageMaxDimensionPx (par défaut : 1200).

Règle globale : appels doutils malformés

Les blocs dappels doutils dassistant auxquels il manque à la fois input et arguments sont supprimés avant la construction du contexte du modèle. Cela évite les rejets de fournisseurs dus à des appels doutils partiellement persistés (par exemple après un échec de limitation de débit).

Implémentation :

  • sanitizeToolCallInputs dans src/agents/session-transcript-repair.ts
  • Appliqué dans sanitizeSessionHistory dans src/agents/pi-embedded-runner/google.ts

Règle globale : provenance des entrées inter-sessions

Lorsquun agent envoie un prompt dans une autre session via sessions_send (y compris les étapes de réponse/annonce agent-vers-agent), OpenClaw persiste le tour utilisateur créé avec :

  • message.provenance.kind = "inter_session"

Ces métadonnées sont écrites au moment de lajout à la transcription et ne changent pas le rôle (role: "user" est conservé pour la compatibilité fournisseur). Les lecteurs de transcription peuvent utiliser cela pour éviter de traiter les prompts internes routés comme des instructions rédigées par un utilisateur final.

Lors de la reconstruction du contexte, OpenClaw préfixe aussi en mémoire ces tours utilisateur dun court marqueur [Inter-session message] afin que le modèle puisse les distinguer des instructions externes dutilisateur final.


Matrice des fournisseurs (comportement actuel)

OpenAI / OpenAI Codex

  • Assainissement des images uniquement.
  • Supprimer les signatures de raisonnement orphelines (éléments de raisonnement autonomes sans bloc de contenu suivant) pour les transcriptions OpenAI Responses/Codex.
  • Aucun assainissement des identifiants dappels doutils.
  • Aucune réparation dappariement des résultats doutils.
  • Aucune validation ni réordonnancement des tours.
  • Aucun résultat doutil synthétique.
  • Aucune suppression des signatures de réflexion.

Google (Generative AI / Gemini CLI / Antigravity)

  • Assainissement des identifiants dappels doutils : alphanumérique strict.
  • Réparation de lappariement des résultats doutils et résultats doutils synthétiques.
  • Validation des tours (alternance de tours de style Gemini).
  • Correctif dordre des tours Google (préfixer un minuscule bootstrap utilisateur si lhistorique commence par lassistant).
  • Antigravity Claude : normaliser les signatures de réflexion ; supprimer les blocs de réflexion non signés.

Anthropic / Minimax (compatible Anthropic)

  • Réparation de lappariement des résultats doutils et résultats doutils synthétiques.
  • Validation des tours (fusionner les tours utilisateur consécutifs pour satisfaire lalternance stricte).

Mistral (y compris détection basée sur lidentifiant de modèle)

  • Assainissement des identifiants dappels doutils : strict9 (alphanumérique de longueur 9).

OpenRouter Gemini

  • Nettoyage des signatures de réflexion : supprimer les valeurs thought_signature non base64 (conserver le base64).

Tout le reste

  • Assainissement des images uniquement.

Comportement historique (avant 2026.1.22)

Avant la version 2026.1.22, OpenClaw appliquait plusieurs couches dhygiène des transcriptions :

  • Une extension transcript-sanitize sexécutait à chaque construction de contexte et pouvait :
    • Réparer lappariement usage/résultat doutil.
    • Assainir les identifiants dappels doutils (y compris un mode non strict qui conservait _/-).
  • Lexécuteur effectuait également un assainissement propre au fournisseur, ce qui dupliquait le travail.
  • Des mutations supplémentaires avaient lieu en dehors de la politique fournisseur, notamment :
    • Suppression des balises <final> du texte dassistant avant persistance.
    • Suppression des tours derreur dassistant vides.
    • Réduction du contenu dassistant après les appels doutils.

Cette complexité a provoqué des régressions inter-fournisseurs (notamment lappariement call_id|fc_id de openai-responses). Le nettoyage de 2026.1.22 a supprimé lextension, centralisé la logique dans lexécuteur et rendu OpenAI intouché au-delà de lassainissement des images.