Leçon 11 · coopération

Agent qui trouve du travail par lui-même

"L'agent trouve lui-même du travail." Aucun humain n'est nécessaire pour expédier les commandes, le travail lui-même sera effectué à partir du tableau des tâches.

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

Du « être réveillé » à « trouver son propre emploi »

Le coéquipier du s09 / s10 est passif : quelqu'un doit envoyer un message via la boîte aux lettres avant qu'elle ne commence à fonctionner ; quand c'est fait, il se met au ralenti et est à nouveau réveillé.

Le coéquipier autonome de S11 Actif : Il ne s'arrête pas vraiment lorsqu'il n'y a pas de travail. Il analysera le répertoire .tasks/ toutes les 5 secondes - lorsqu'il verra une tâche sans propriétaire, claim_task la réclamera et commencera à travailler.

Cycle de vie d'un coéquipier :
  +-------+
  | frayer |
  +---+---+
      |
      v
  +-------+
  | TRAVAIL | <-- Boucle LLM tool_use
  +---+---+
      |
      | stop_reason != outil_use OU outil_use("idle")
      v
  +-------+
  | RALENTI | sondage toutes les 5 s, 12 fois au total = délai d'attente de 60 s
  +---+---+
      |
      +--> De nouvelles nouvelles dans la boîte de réception ?  → reprendre le TRAVAIL
      |
      +--> scannez .tasks/, trouvé non réclamé → réclamation → reprise du TRAVAIL
      |
      +--> Années 60, rien en attente → statut = arrêt, le fil se termine

Réclamation automatique · "Prendre les commandes" depuis le tableau des tâches

Fonctions principales :

def scan_unclaimed_tasks() -> liste :
    non réclamé = []
    pour f dans trié(TASKS_DIR.glob("task_*.json")) :
        tâche = json.loads(f.read_text())
        if (task.get("status") == "pendant"
                et pas task.get("owner")
                et pas task.get("blockedBy")) :
            non réclamé.append (tâche)
    retour non réclamé

Trois filtres = en attente + aucun propriétaire + aucun bloqué par. Les deux sont indispensables.

L'action de réclamation elle-même a un verrou (_claim_lock) pour empêcher deux agents de récupérer la même tâche non réclamée en même temps : relisez le verrou, vérifiez si le propriétaire est toujours vide, puis écrivez la marque "in_progress" + propriétaire sur le disque.

Simulez plusieurs agents pour analyser le tableau des tâches en même temps

Trois coéquipiers sont en état d'inactivité et trois tâches sont en attente d'être réclamées. Cliquez sur "Scan Next Round" pour voir qui l'obtiendra en premier.

Réinjection d'identité·Vous savez toujours qui vous êtes après la compression

s06 a mentionné qu'auto_compact remplacerait les messages par un résumé. L'agent autonome peut être facilement déclenché après des heures d'exécution - après compression, le modèle ne connaît ni son nom ni son rôle.

L'astuce de S11 : Lors de la revendication d'une nouvelle tâche, si len(messages) ≤ 3 (indiquant qu'elle vient d'être compressée), insérez automatiquement le bloc d'identité dans l'en-tête :

if len(messages) <= 3 :
    messages.insert(0, {
        "role" : "utilisateur",
        "content" : f"<identity>Vous êtes 'alice', rôle : codeur, équipe : mon-équipe. Continuez votre travail.</identity>",
    })
    messages.insert(1, {"role":"assistant", "content" : f"Je m'appelle Alice. Je continue."})

Ce mode est appelé réinjection d'identité : il utilise une série de dialogues artificiellement construits pour "dire au modèle qui il est" afin qu'il puisse retrouver son sens du caractère.

Interactif

Widget 1 · Scanner de tâches · 3 agents récupèrent 3 tâches

Alice/Bob/Charlie sont tous inactifs. Cliquez sur Analyser pour voir qui réclame la première tâche non réclamée par ordre alphabétique.

.tasks/ 目录
Teammates 状态
所有人都 idle,等着扫
Interactif

Widget 2 · Dérive d'identité · Après compression, l'agent se souvient-il encore de lui-même ?

Comparaison de la réponse de l'agent à « Qui êtes-vous ? » compression du contexte de simulation avant et après. Que se passe-t-il sans réinjection d’identité ?

没有 identity 重注入
有 identity 重注入
Interactif

Widget 3 · Autonome vs Assisté · Quels rôles sont adaptés à l'autonomie

Décidez si vous souhaitez laisser ce rôle exécuter un cycle autonome ou rester passivement en veille. Pensez au « coût de la perte de contrôle » et à la « fréquence des interventions humaines ».

答对 0 / 5