2.8 KB · updated 2026-07-31 · md

v0.20.2.fr.md

docs/i18n/release-notes/v0.20.2.fr.md

Tesserae v0.20.2 — le modèle lit tout maintenant

<!-- translations:start -->

English · 한국어 · 中文 · 日本語 · Русский · Español · Deutsch

<!-- translations:end -->

Publié 2026-07-14 · PyPI · GitHub release · pip install --upgrade tesserae==0.20.2

La seconde moitié de la correction des sessions longues. v0.20.1 a supprimé le plafond d'import de 300 tours afin que l'historique complet de la conversation atteigne le magasin ; cette version corrige le côté consommation, de sorte que chaque LLM qui lit cet historique le lit réellement en totalité — quelle que soit sa longueur totale.

Ce qui n'allait toujours pas après la 0.20.1

  • Extraits de session tronqués pour tenir : au-delà d'un horizon de 24 000 caractères par projet, les résumés abandonnaient des sessions entières avec « …more sessions omitted for length » — le modèle ne les voyait jamais.
  • Un prompt non borné : le récit du résumé et l'extraction des décisions d'agent envoyaient chacun tout en un seul appel LLM — sur une fenêtre chargée, plus gros que n'importe quelle fenêtre de contexte.
  • max_turns_per_chunk comptait les tours, pas la taille : trente tours peuvent contenir un dump d'outil de 500KB ; les fragments d'extraction du graphe de session pouvaient encore déborder.

Ce qui a changé

Nouveau tesserae/llm_chunking.py : un empaqueteur de blocs déterministe et un exécuteur map-reduce dimensionné selon un budget de contexte conservateur (48 000 caractères ≈ 12k tokens ; TESSERAE_LLM_CHUNK_CHARS pour ajuster). Chaque consommateur LLM de l'historique de session itère désormais sur des fragments à la taille du budget — des appels map PART i/N, puis une fusion hiérarchique — avec la disparition des marqueurs de troncature, un tour unique surdimensionné se découpant ligne par ligne entre les fragments au lieu de déborder, et les petites entrées conservant exactement l'ancien chemin à appel unique.

--max-turns reste uniquement un garde-fou mémoire pour le scan — il ne borne plus ce que le modèle lit.

Vérifié directement contre l'exigence : 600KB d'historique de session → 82 appels bornés (prompt max de 7 525 caractères sous un budget de test de 8 000 caractères) → un récit fusionné où chaque session est prise en compte. Le test d'acceptation plante une décision dans la dernière session au-delà de l'ancien horizon de troncature — il échoue sur le code d'avant la correction.