Apprendre à reconnaître les patterns d’échec et à les corriger.
Donner un prompt vague :
>Ajoute une validation email côté serveur
Observer :
validate_email() de zéro ?Diagnostic :
# Vérifier ce que l'agent a ajouté
git diff
# Chercher la fonction
grep -r "validate_email" src/
Voir les scénarios détaillés dans la section Scénarios de Bugs IA :
| Scénario | Description |
|---|---|
| Happy Path Bias | Fonction password reset sans edge cases |
| Fix Loop Infini | Transcript d’une boucle de 15 minutes |
| Spéculation Non Vérifiée | Optimisation multiprocessing sans vérifier le contexte |
| Suppression Tests | Patterns anti-test (suppression, skip, affaiblissement) |
| Hallucination Dépendances | Imports de packages inexistants |
Utilisation :
AGENTS.md :## Available Validators
- src/validators.py: sanitize(), format_date()
## DO NOT CREATE new validators without approval
>Ajoute validation email en utilisant UNIQUEMENT
>les fonctions existantes dans src/validators.py
Créer un test impossible :
# tests/test_impossible.py
def test_impossible():
# Ce test ne peut jamais passer
assert False, "This test always fails"
Lancer l’agent :
>Fix the failing tests
Observer le nombre d’itérations.
# Compter les tentatives
git log --oneline | wc -l
# Voir le pattern
git log --oneline -10
Demander une tâche complexe :
>Refactor the entire authentication system
L’agent dit “Done!"
# Ne PAS faire confiance au "Done"
# Vérifier :
# Combien de fichiers modifiés ?
git diff --stat
# Les tests passent-ils ?
make test
# Le code compile-t-il ?
make build
# Y a-t-il des TODOs ?
grep -r "TODO" src/
Agent: "I've completed the refactoring!"
Reality check:
- 0files modified
- Tests: 0 pass, 0 fail
- Build: success (nothing changed)
Observer les logs d’un agent :
# Mode verbeux
opencode --verbose 2>&1 | tee agent.log
Identifier les répétitions :
# Compter les read_file
grep "read_file" agent.log | wc -l
# Trouver les doublons
grep "\[TOOL\]" agent.log | sort | uniq -c | sort -rn | head -20
Si le même fichier est lu 5+ fois, c’est du spam.
# AGENTS.md
## Before Coding
- Summarize what you learned from reading files
- List the files you'll modify
- Explain your approach in one paragraph
Donner une tâche longue :
>This is step 1 of 10. [détails...]
Après plusieurs steps, demander :
>What was step 1 about?
# Estimer les tokens
wc -w agent.log
# Approximation: 1 token ≈ 4 chars
# AGENTS.md
## Completed Steps
- [x] Step 1: ...
- [x] Step 2: ...
- [ ] Step 3: ...
# Bug Report - 2024-01-15
## Task
Add user pagination with total count.
## What Happened
Agent created validate_email() function that doesn't exist.
Modified 47 files instead of 2.
Tests failed.
## Expected
Modify src/api/routes/users.py only.
Add tests in tests/test_users.py.
All tests pass.
## Files Affected
- src/api/routes/users.py (unexpected)
- src/utils/validators.py (created, shouldn't)
- 45 other files (unnecessary)
## Context Window
- Tokens: 180k/200k
- Iterations: 15
## Guardrails Violated
- "DO NOT create new utilities"
## How to Fix
1. Revert changes to non-essential files
2. Remove created validators.py
3. Use existing pagination pattern
À la fin de ce TP :
Pattern retenu : Ne pas faire confiance au “Done”, vérifier indépendamment.
Question clé : Quel pattern d’échec avez-vous rencontré le plus ?
Module 9 : Tests et Qualité avec l’IA.