- Ajout de `docs/hooks-delegation.md` - État de MIAM et des hooks, raisons de leur échec - Treize hooks avec priorités, découpage atomique (`.claude/miam-plan.json`) - Contrôle automatique des réponses (`controle`, `verdict`) et reprise sans suivi répété - Section 11 : contrat livré par MIAM (PH2-H11) : paramètres, réponses et états `fin`, commande `reprise` - Sept bouts à coder dans le plugin pour la v0.9.0, réveil après 11 min vérifié Aucun code : spécification, seuils à confirmer.
3.8 KiB
À faire pour la prochaine version du plugin
Notes issues de la session MIAM du 2026-11-01. Rien n'est encore appliqué.
1. Autoriser le repli sur un subagent Haiku (demande de l'utilisateur)
plugins/miam/skills/deleguer/SKILL.md, ligne 24, dit « Pas de subagent ». Vérifier aussi le texte équivalent injecté
par les hooks et la documentation (docs/agent-delegue.md, plugins/miam/README.md).
Nouvelle règle, ordre de délégation :
- MIAM d'abord, pour les tâches de son champ.
- Subagent
model: "haiku", sans demander, pour une tâche longue et simple si MIAM est arrêté ou mal adapté : lire un gros document ou une longue sortie pour en tirer peu, recherche large dans le code, tests répétitifs. - Claude principal pour ce qui demande le contexte de la conversation, pour la sécurité et pour la dépense.
Pas de subagent pour une petite tâche : un grep ou une lecture directe coûte moins cher qu'un agent qui repart de zéro.
À décider : le coût d'un subagent Haiku doit-il entrer dans les événements pilotage et dans le cumul, et comment le
distinguer d'un pilotage de MIAM ?
2. Vérifier avant de déléguer, dresser le bilan après
À ajouter au skill deleguer :
- Faisable ? OpenCode ne voit que le code commité et n'a pas de
.venvutilisable : ne pas lui demander les tests. - Le preset tient ? Appeler
modelesavant d'imposer un preset. - Rentable ? Pas de délégation si la consigne dépasse un tiers de la sortie attendue, ou si une recherche suffit.
- Indépendant ? Ne pas importer un module pas encore livré : MIAM peut tourner depuis le dépôt qu'il modifie.
- Après un lot : bilan des délégations, sans attendre la demande : coût, résultat, faute, règle ajoutée.
3. Rendre le cumul fiable (PH2-H10 de MIAM)
Le cumul mesure le volume, pas la justesse. Sur la session, 124 625 tokens évités sur 139 707 étaient fictifs.
- Ne compter aucun gain pour une réponse vide ou tronquée.
- Pouvoir marquer une délégation fausse comme rejetée, pour annuler son gain et compter sa vérification.
- Ne pas compter comme évitée une lecture que Claude n'aurait pas faite, comme une relecture imposée au démarrage.
4. Imposer les règles par des hooks
La mémoire et les skills sont du texte que Claude peut ignorer : la règle « un seul suivi » était notée et il y a eu plus
de 15 suivre. Ne garder en texte que ce qui demande du jugement ; ce qui se mesure passe dans tool.call, à côté de
contrainte.ts, en fonctions pures testées.
À vérifier d'abord : tool.call peut-il refuser un appel avant son exécution ? Les rappels actuels arrivent après coup.
| Contrôle | Déclencheur | Action |
|---|---|---|
| Suivi | suivre à moins de N secondes du précédent, ou Nᵉ appel sur la même demande |
Refus, avec le délai à respecter |
| OpenCode et tests | deleguer(moteur="opencode") dont la consigne demande de lancer pytest |
Refus, avec la raison |
| Preset | deleguer(preset=…) sans modeles dans la session |
Refus |
| Rentabilité | Consigne de plus de N caractères | Rappel, le seuil reste à régler |
| Sortie longue | Lecture ou commande non filtrée | Rappel avant l'appel si possible, sinon après |
| Fin de lot | Fin de tour après des délégations | Injection du bilan mesuré : coût, échecs, reprises |
Hors de portée d'un hook, à garder en texte : juger si une réponse est juste, ou si un grep suffisait.
Chaque refus doit dire quoi faire à la place et se compter, pour régler les seuils sur des chiffres réels.
5. Relecture de démarrage
Si elle vient du plugin, la relecture de plan/Plan.md et plan/tasks-P2.md à chaque session coûte 62 000 tokens lus et
a donné une réponse vide puis une réponse fausse. La remplacer par une consigne ciblée sur la demande en cours, ou par une
recherche.