Leçon 04 · planification

Gérer les gros problèmes avec un agent nouvellement ouvert

"L'isolation des processus permet d'isoler le contexte gratuitement." L'agent enfant fait le sale boulot et l'agent parent ne collecte que le résumé propre.

⏱ ~10 min · 📝 3 widgets interactifs · 🧑‍💻 Basé sur shareAI-lab · s04_subagent.py

Le dilemme de l’agent parent

Imaginez que vous demandiez à Claude Code de « comprendre comment ce référentiel Rust de 100 000 lignes gère la concurrence ». Approche intuitive : il effectue ls, cat, grep et recherche dans le contexte principal.

Problème : ce cycle d'exploration accumulera 30 résultats d'outils dans des messages[], chacun contenant plusieurs milliers de jetons. Au moment où il commence réellement à rédiger la réponse, le contexte a été rempli par le processus d'exploration - la limite supérieure sera déclenchée après quelques étapes supplémentaires et la réponse sera toujours confuse.

Solution à s04 : confiez la tâche d'exploration à un nouvel agent. Le nouvel agent démarre à partir de messages=[], explore le sien et enfin renvoie uniquement le résumé à l'agent parent. Le contexte parent n'a qu'une phrase supplémentaire : « L'outil de tâche a été ajusté une fois et le résultat était XXX », ce qui est rafraîchissant.

def run_subagent(invite : str) -> str :
    sub_messages = [{"role":"user", "content" : prompt}] # Nouveau contexte
    pour _ dans plage(30) : # Limite supérieure de sécurité pour éviter la perte de contrôle
        réponse = client.messages.create(..., messages=sub_messages, tools=CHILD_TOOLS, ...)
        ...
    # Seul le dernier texte est renvoyé, tout raisonnement intermédiaire est rejeté
    retour "".join(b.text pour b dans réponse.content if hasattr(b, "text"))

Comparaison du contexte père-fils

Ce widget simule une tâche réelle : "Liste de tous les endroits de cet entrepôt qui appellent une API obsolète". Vous pouvez l'exécuter avec deux stratégies : (A) l'agent parent le fait lui-même ; (B) générer un sous-agent. Comparez les tailles des deux derniers contextes gauche et droit.

CHILD_TOOLS : De quels outils le sous-agent peut-il disposer ?

Il y a un détail dans l'implémentation de s04 qu'il est facile de manquer : le sous-agent ne peut pas obtenir l'outil de tâche.

# Le sous-agent ne peut utiliser que des outils de base et ne peut pas générer de petit-fils
CHILD_TOOLS = [bash, read_file, write_file, edit_file]

# L'agent parent dispose d'un outil de tâche supplémentaire
PARENT_TOOLS = CHILD_TOOLS + [tâche]

Pourquoi ? Évitez que la répartition récursive ne devienne une explosion d'arbre. Un sous-agent génère quatre sous-sous-agents, et il y a des dizaines d'appels simultanés en quelques tours seulement. Ni le jeton ni la limite de vitesse de l'API ne peuvent le gérer. La convention de s04 : spawn est plat, et un calque parent → enfant est un calque. C'est également le cas dans l'implémentation réelle de Claude Code - il est interdit d'appeler à nouveau l'outil Task dans l'outil Task.

visible et invisible

Trions les droits et les responsabilités : laquelle des questions suivantes pensez-vous être T et laquelle F pensez-vous ?

Interactif

Widget 1 · Parent vs Enfant · comparaison de la taille du contexte

Deux stratégies pour la même tâche. Cliquez sur Exécuter et examinez la longueur finale des messages[] des deux côtés ainsi que l'estimation totale du jeton.

🧠 父 agent 亲自做
messages: 0 · ~0 tokens
🎯 spawn subagent
messages: 0 · ~0 tokens
Interactif

Widget 2 · Vrai ou faux · Droits et responsabilités des agents père et fils

6 T/F pour tester votre compréhension des limites d’isolement.

答对 0 / 6
Interactif

Widget 3 · Quand apparaître · Quelles tâches peuvent être assignées au sous-agent ?

Vous recevez 6 descriptions de tâches, décidez si (A) l'agent parent le fait tout seul ou (B) le sous-agent d'apparition. Il n’existe pas de « droit absolu », mais il existe des avantages et des inconvénients évidents.

答对 0 / 6