Couche 1 : temporaire locale
Données de session dans .git/agentnote/sessions/. Fichiers JSONL pour les prompts, changements et blob hashes. Rotés après chaque commit. Jamais poussés.
Cette page explique le mécanisme derrière le rapport : ce qui est capturé localement, ce qui devient une git note, et comment ces données arrivent dans PR Report et Dashboard. Vous n’avez pas besoin de tout retenir pour utiliser Agent Note, mais c’est le bon modèle à vérifier quand un résultat surprend.
Les hooks capturent le prompt et le turn id.
Les hooks ou transcripts enregistrent les fichiers touchés et les signaux d’attribution.
Si la session contient des données enregistrables, git commit injecte le trailer et écrit la git note.
git push envoie refs/notes/agentnote vers le remote.
Une fois les git hooks générés installés, la plupart des dépôts peuvent continuer à utiliser simplement git commit et git push. Cursor récupère aussi les paires prompt / response depuis les transcripts locaux et peut continuer à suivre les commits quand les git hooks ne sont pas disponibles.
Couche 1 : temporaire locale
Données de session dans .git/agentnote/sessions/. Fichiers JSONL pour les prompts, changements et blob hashes. Rotés après chaque commit. Jamais poussés.
Couche 2 : Git Notes
Enregistrement permanent dans refs/notes/agentnote. Un JSON par commit. Poussable, récupérable et partageable avec l’équipe.
| Fichier | Rôle |
|---|---|
prompts.jsonl | Un prompt par ligne avec numéro de turn |
changes.jsonl | Fichiers touchés par l’IA avec blob hashes post-édition |
pre_blobs.jsonl | État du fichier avant chaque édition IA |
heartbeat | Horodatage d’activité de la session |
turn | Compteur monotone incrémenté à chaque prompt |
{ "v": 1, "agent": "claude", "session_id": "a1b2c3d4-...", "timestamp": "2026-04-02T10:30:00Z", "model": "claude-sonnet-4-20250514", "interactions": [ { "prompt": "Implémenter un middleware d'auth JWT", "contexts": [ { "kind": "reference", "source": "previous_response", "text": "La réponse précédente explique pourquoi ce middleware doit changer." } ], "selection": { "schema": 1, "source": "primary", "signals": ["primary_edit_turn"] }, "response": "Je vais créer le middleware...", "files_touched": ["src/auth.ts"], "tools": ["Edit"] } ], "files": [ { "path": "src/auth.ts", "by_ai": true }, { "path": "CHANGELOG.md", "by_ai": false } ], "attribution": { "ai_ratio": 73, "method": "line", "lines": { "ai_added": 146, "total_added": 200, "deleted": 12 } }}
Line-level par défaut. Agent Note enregistre l’état du fichier avant et après chaque edit IA, puis retire du diff final les edits humains arrivés ensuite.
Démarre en file-level. Passe en line-level uniquement si les comptes de patch du transcript correspondent au diff final du commit.
Démarre en file-level. Passe en line-level seulement lorsque les comptes d’édition correspondent et que le fichier final correspond encore au dernier edit IA.
Enregistre prompt / response et attribution au niveau fichier via les hooks et le parsing du transcript. Le mode line-level n’est pas encore disponible.
📝 Context est collecté📝 Context est une note affichée seulement pour aider à lire les prompts courts comme “continue” ou “fais le suivant”. Elle n’affecte pas l’attribution.
reference context vient de la response immédiatement précédente lorsqu’elle mentionne un chemin de fichier modifié, un nom de fichier ou un identifiant de code présent dans le diff final.scope context vient de la response courante lorsque ses premières lignes décrivent clairement le travail en cours.yes, continue ou お願いします comme règles de sélection. Sans indice concret lié aux fichiers ou au code, Context est ignoré.files_touched, prompt ownership, AI Ratio, attribution method ni le fait qu’une git note soit enregistrée.Agent Note et Entire résolvent des problèmes proches, mais différents.
refs/notes/agentnote; les fichiers temporaires de session restent sous .git/agentnote/. Entire se concentre sur la checkpoint metadata et une hosted web application.| Événement | Ce qui se passe |
|---|---|
| SessionStart | Crée le répertoire de session et écrit le heartbeat |
| UserPromptSubmit | Ajoute le prompt, incrémente le compteur de turn et fait tourner les logs |
| PreToolUse Edit/Write | Capture le pre-edit blob hash de façon synchrone |
| PostToolUse Edit/Write | Capture le post-edit blob hash et le chemin du fichier |
| Stop | Journalise l’événement stop (le heartbeat reste actif — Stop = fin de réponse, pas fin de session) |
Les git notes sont invisibles dans les listes de branches, l’interface GitHub et CI — mais elles peuvent être poussées et récupérées.
# Partager avec l’équipegit push origin refs/notes/agentnote
# Récupérer depuis le remotegit fetch origin refs/notes/agentnote:refs/notes/agentnote
# Afficher une notegit notes --ref=agentnote show <commit>