Leçon 09 · coopération

Plusieurs agents communiquent via des boîtes aux lettres de fichiers

Du sous-agent au coéquipier : ponctuel → persistant ; sans nom → nommé; aucune communication → boîte aux lettres de fichiers.

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

Quelle est la différence entre un sous-agent et un coéquipier ?

Le sous-agent de S04 est simple et rudimentaire : apparaître → courir → revenir au résumé → mourir. Une communication ponctuelle, sans nom, sans bidirectionnelle entre père et fils.

Le coéquipier de s09 est un agent indépendant qui a un nom, peut être réveillé à plusieurs reprises et peut envoyer et recevoir des messages :

sous-agent (s04) : spawn -> exécuter -> retour -> détruit
coéquipier (s09) : spawn -> travail -> inactif -> travail -> ... -> arrêt

Les deux mécanismes ont des objectifs différents :

  • Le sous-agent convient pour "effectuer une exploration spécifique" (telle que l'examen d'une demande de tirage).
  • Un coéquipier convient pour "assumer un rôle en continu" (comme un réviseur à long terme qui est réveillé à chaque fois qu'il y a un nouveau commit).

La boîte aux lettres est un fichier JSONL

Comment les membres de l'équipe communiquent-ils entre eux ? s09 utilise le mécanisme le plus primitif : fichier JSONL avec ajout uniquement.

.team/
  config.json # Liste de l'équipe
  boîte de réception/
    alice.jsonl # Les lettres à Alice sont ajoutées ici
    bob.jsonl
    lead.jsonl

envoyer est open("alice.jsonl", "a").write(msg); read consiste à lire le fichier entier, à analyser JSONL, puis à truncate pour effacer (vider la sémantique).

Pourquoi utiliser des fichiers plutôt que des files d’attente mémoire ? Les documents sont naturellement durables. Redémarrages d'agents, plantages de processus, voire redémarrages de machines : les e-mails sont toujours là. De plus, il est lisible et grep-able, et l'expérience de débogage est très bonne.

Regardez le processus complet d'un message de Lead à Alice

Le widget suivant vous permet d'envoyer un message à Alice et de voir ce qui se passe sur le disque à chaque étape.

5 types de messages

s09 définit 5 types de messages (VALID_MSG_TYPES), mais seuls les deux premiers sont implémentés, et les trois derniers sont ajoutés dans la classe de protocole s10 :

  • message — message texte ordinaire.
  • diffusion : envoyée à tous les coéquipiers sauf vous-même.
  • shutdown_request / shutdown_response — Demande/réponse pour un arrêt progressif (s10).
  • plan_approval_response — Approbation du plan (s10).

Pourquoi est-il déclaré mais pas implémenté ? Parce que s09 veut ouvrir une "extension de protocole", le type de message est une énumération. Pour en ajouter une nouvelle, il vous suffit d'ajouter une entrée dans le dictionnaire et de la traiter dans la route _exec.

Interactif

Widget 1 · Flux de courrier · Un message du prospect à Alice

Cliquez sur Envoyer et tracez chaque étape sur le système de fichiers : lead.send → ajouter alice.jsonl → alice next read inbox → tronquer.

Interactif

Widget 2 · Team Config · Qui est en ligne et quel est son statut ?

.team/config.json est la liste de l'équipe. Faites quelques opérations (spawn/message/arrêt) et voyez comment la configuration change.

操作
.team/config.json

        
Interactif

Widget 3 · Sous-agent vs coéquipier · Décider lequel utiliser

6 scénarios de mission, décidez si vous souhaitez utiliser un sous-agent (spawn-then-die) ou un coéquipier (spawn-then-live). Déterminez si la tâche est une « affaire unique ».

答对 0 / 6