idea_world_labDEV JOURNAL
samedi 27 juin 2026

27 juin 2026

  • En relisant le docs/roadmaps/2026-06-26-source-to-ast-input-flow.md rédigé le 26, j’ai jugé que la cohérence globale du document était insuffisante
  • Le document du 27 initial était chargé de descriptions d’objets et de structures, ce qui rendait difficile le suivi du flux réel des entrées
    • J’ai ensuite réorienté le document selon les retours du PR
    • J’ai modifié la forme pour indiquer, dans les entrées développées avec # <chemin relatif>, précisément quel fichier et quelle ligne sont transmis au parseur AST
    • Comme pour player.gd de E020 à E034, j’ai structuré le flux en fonction des plages de lignes réelles, montrant comment une partie du texte passe à la recherche Retriever puis au jugement LLM
    • Les chemins de fichiers servent uniquement au suivi ; la recherche Retriever ne reçoit que le chunkText du code/texte concerné, critère que j’ai réaffirmé
  • docs_chunks, api_mapping et label_prototypes sont recherchés de la même façon, sans traitement spécial, et les candidats sont ensuite vérifiés par le LLM
  • Le travail d’aujourd’hui visait à fixer, avant toute implémentation, la documentation du point où l’entrée et la sortie se rejoignent, afin d’éviter que l’IA ne modifie les plages ou ne dérive vers des explications abstraites
  • Pour valider le flux documenté, j’ai implémenté l’outil web Source Flow Debugger
    • Il s’exécute localement à http://127.0.0.1:8010/ et permet de visualiser directement les entrées du projet Godot
    • L’entrée du projet, développée avec # <chemin relatif>, est re‑segmentée par fichier ; les fichiers .gd deviennent des chunks de type AST, tandis que .godot et .tscn sont découpés en chunks directs
    • En testant avec un petit projet Godot, j’ai observé la décomposition en 5 fichiers, 14 chunks, AST 9, Direct 5
    • Les fichiers de type documentation comme le README.md sont exclus du mode d’analyse source, et leur exclusion ainsi que la raison correspondante restent affichées à l’écran
  • Ajout d’une interface de débogage par chunk
    • Sous chaque chunk, j’ai placé les boutons docs_chunks recherche, api_mapping recherche, label_prototypes recherche et Validate JSONL
    • Au lieu d’une case à cocher globale, chaque recherche s’effectue directement sous le chunk concerné
    • L’entrée du Retriever montre uniquement { "chunkText": "..." }, en excluant le chemin du fichier, le numéro de ligne et le prompt
    • La validation Qwen est réservée à l’étape prompt + chunkText + retrieved JSONL
  • En utilisant le débogueur web, j’ai corrigé les problèmes rencontrés
    • Suppression du chargement automatique d’un exemple de code Godot au démarrage de la page
    • Vidage de la valeur de l’input d’upload au clic pour que l’événement change se déclenche à nouveau même après un re‑upload du même fichier/dossier
    • Ajout de l’en‑tête cache-control: no-store aux réponses de fichiers statiques afin d’éviter la persistance d’anciens scripts JS pendant le développement
    • Protection de l’appel client.end() pour que le nettoyage s’exécute en toute sécurité même si la création/connexion du client PostgreSQL échoue
  • J’ai consigné le résultat de l’implémentation dans un document séparé avec captures d’écran
  • À ce stade, la décomposition par chunk est jugée suffisamment aboutie ; l’étape suivante sera de déterminer comment exécuter réellement les recherches en base de données
    • Il faut vérifier, à partir du seul chunkText, quels candidats JSONL sont renvoyés par docs_chunks, api_mapping et label_prototypes
    • Il faut également définir, lors de la validation Qwen, comment juger la pertinence du JSONL par rapport au chunk actuel et décider de le conserver ou de le rejeter
  • Avant d’ajouter la recherche DB, j’ai utilisé GPT pour créer des JSONL pertinents ou non pertinents associés à des chunks Godot de démonstration, afin d’expérimenter les prompts de correspondance
    • Au départ, le prompt « Ce JSONL contient‑il le contenu du code source ? Répondez uniquement oui ou non » renvoyait « oui » tant pour les JSONL pertinents que pour les non pertinents
    • J’ai ensuite limité la réponse à « oui » uniquement si l’un des champs source_api, source_pattern, match_terms, required_when_seen_in_code ou before_code correspondait exactement à la chaîne SOURCE_CODE ou à l’appel d’API réel
    • En évitant les jugements basés sur la similarité sémantique large ou les connaissances pré‑existantes de LLM sur Godot, et en ne considérant que les preuves textuelles présentes dans le JSONL, les JSONL pertinents donnent « oui », les non pertinents « non »
    • Cette expérience a montré que l’étape de validation Qwen après la recherche DB doit d’abord vérifier « le JSONL trouvé contient‑il une preuve textuelle correspondant directement au chunk actuel ? », plutôt que de se baser sur une similarité de sens « plausible »
    • Journal d’observation : Sélection du dépôt de test basé sur l’état de collecte des JSONL
    • Journal d’observation : Prompt de correspondance de preuve JSONL
    • Rétrospective : docs/retrospectives/2026-06-27.md
  • Demain, je créerai plusieurs jeux de démonstration de chunks Godot avec leurs JSONL pertinents ou non, afin de tester de façon répétée quels critères Qwen utilise pour produire « oui » ou « non »