Le LLM a une fenêtre de contexte limitée.
┌─────────────────────────────────────────┐
│ Context Window ~200k tokens │
│ ████████████████████████████░░░░░░░░░ │
│ Used Available │
└─────────────────────────────────────────┘
Quand le contexte se remplit :
Origine : Geoffrey Huntley, nommé d’après Ralph Wiggum (Les Simpson).
L’idée : Un simple while true qui relance l’agent jusqu’à ce que le travail soit fini.
# Pattern de base
while :; do
cat PROMPT.md | opencode
done
Principe clé : La progression vit dans les fichiers et git, PAS dans le contexte du LLM.
┌──────────────────────────────────────────────────────────┐
│ RALPH LOOP │
│ │
│ ┌─────────┐ ┌──────────┐ ┌────────┐ ┌───────┐ │
│ │ Execute │───►│ Evaluate │───►│ Fix │───►│Repeat │ │
│ └─────────┘ └──────────┘ └────────┘ └───────┘ │
│ │ │ │ │ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ Tâche原子 Tests pass/fail Corrections Loop │
│ │
└──────────────────────────────────────────────────────────┘
| État | Tokens | Action |
|---|---|---|
| 🟢 Healthy | < 60% | Agent travaille librement |
| 🟡 Warning | 60-80% | Wrap up, préparer rotation |
| 🔴 Critical | > 80% | Rotation forcée |
Quand le contexte est plein :
# Le nouveau agent lit le git log
git log -1 --format="%H %s"
# "Add feature X, tests passing"
# Il comprend où on en est
Pattern : Quand ça échoue, écrire un “Sign” dans .ralph/guardrails.md
# Guardrails
## Sign: Do Not Modify .env Files
**Learned from iteration #47**
- Attempted to modify .env, causing CI failure
- Solution: Use .env.example only
- Never touch actual .env
## Sign: Always Run Tests Before Commit
**Learned from iteration #12**
- Committed without tests, broke main
- Solution: Run `make test` before any commit
Le nouvel agent lit les guardrails AVANT de commencer.
Fruit Ninja en 1 heure : Cursor + Ralph a construit un jeu complet avec :
Claude Code overnight : Se réveiller avec de nouvelles features codées et testées.
Self-healing : Le loop identifie un problème, étudie le code, corrige, déploie, vérifie - tout seul.
| Incident | Coût/Impact |
|---|---|
| Deux agents LangChain qui chatterent en boucle | $47,000 sur 11 jours |
| OpenClaw ignore la commande STOP | 9.6M emails supprimés |
| Copilot crée 1,526 worktrees git | 800GB sur le disque |
| Terraform + Claude Code | 2.5 ans de données perdues |
| Replit agent fabrique 4,000 faux records | Corruptions + mensonges |
| 43,175 redémarrages en une nuit | Port conflict |
1. Silent Failure - L’agent dit “tout va bien” mais ne fait rien
Agent: "I've successfully fixed the bug!"
Reality: No files changed, no tests run
2. Loop non détecté
# OpenClaw détecte les reads en boucle
if repeated_read_calls():
break
# Mais PAS les exec en boucle !
3. Context compaction détruit les contraintes
Instruction originale: "NE PAS modifier la DB"
Après compression: "modifier DB" # Contrainte perdue
| Pratique | Description |
|---|---|
| Monitorer les outcomes, pas l’activité | Vérifier que l’agent a PRODUIT quelque chose |
| Définir des indicateurs négatifs | Alerte quand expected ne se produit PAS |
| Watchdog externe | Ne laissez PAS l’agent se monitorer lui-même |
| Limites de spending | Hard limits sur les comptes API |
# TOUJOURS
- Limite d'itérations (default: 20)
- Pas de permissions Terraform sans review
- Commit fréquents = mémoire
- Tests automatisés = vérité
- Watchdog externe = sécurité
# JAMAIS
- Laisser tourner sans limite de spending
- Permissions destructives sans oversight
- Compter sur l'agent pour se monitorer
BON pour :
MAUVAIS pour :
Voir 7_tp_ralph.md →