Lección 09 · cooperación

Varios agentes se comunican a través de buzones de archivos.

De subagente a compañero de equipo: una sola vez → persistente; sin nombre → nombrado; sin comunicación → buzón de archivos.

⏱ ~12 min · 📝 3 widgets interactivos · 🧑‍💻 Basado en shareAI-lab · s09_agent_teams.py

¿Cuál es la diferencia entre subagente y compañero de equipo?

El subagente de S04 es simple y tosco: generar → ejecutar → regresar al resumen → morir. Una comunicación única, sin nombre, sin bidireccional entre padre e hijo.

El compañero de equipo de s09 es un agente independiente que tiene un nombre, puede ser despertado repetidamente y puede enviar y recibir mensajes:

subagente (s04): generar -> ejecutar -> volver -> destruido
compañero de equipo (s09): generar -> trabajo -> inactivo -> trabajo -> ... -> apagar

Los dos mecanismos tienen diferentes propósitos:

  • El subagente es adecuado para "realizar una exploración específica" (como revisar un PR).
  • Teammate es adecuado para "asumir continuamente un rol" (como un revisor a largo plazo que se despierta cada vez que hay un nuevo compromiso).

El buzón es un archivo JSONL.

¿Cómo se comunican los miembros del equipo entre sí? s09 utiliza el mecanismo más primitivo: archivo JSONL de solo agregar.

.equipo/
  config.json # Lista del equipo
  bandeja de entrada/
    alice.jsonl # Las cartas a Alice se adjuntan aquí
    bob.jsonl
    plomo.jsonl

el envío es open("alice.jsonl", "a").write(msg); read es leer el archivo completo, analizar JSONL y luego truncar para borrar (drenar la semántica).

¿Por qué utilizar archivos en lugar de colas de memoria? Los documentos son naturalmente duraderos. El agente se reinicia, los procesos fallan e incluso la máquina se reinicia: los correos electrónicos siguen ahí. Además, es legible y compatible con grep, y la experiencia de depuración es muy buena.

Mira el proceso completo de un mensaje de lead a alice

El siguiente widget le permite enviar un mensaje a Alice y ver qué sucede en el disco en cada paso.

5 tipos de mensajes

s09 define 5 tipos de mensajes (VALID_MSG_TYPES), pero solo se implementan los dos primeros y los tres últimos se agregan en la clase de protocolo s10:

  • mensaje: mensaje de texto normal.
  • transmisión: se envía a todos los compañeros de equipo excepto a ti.
  • shutdown_request / shutdown_response: solicitud/respuesta para un cierre ordenado (s10).
  • plan_approval_response — Aprobación del plan (s10).

¿Por qué se declara pero no se implementa? Debido a que s09 quiere abrir la "extensión de protocolo", el tipo de mensaje es una enumeración. Para agregar uno nuevo, solo necesita agregar una entrada en el diccionario y procesarla en la ruta _exec.

Interactivo

Widget 1 · Flujo de correo · Un mensaje de Lead a Alice

Haga clic en Enviar y rastree cada paso en el sistema de archivos: lead.send → agregar alice.jsonl → alice siguiente leer la bandeja de entrada → truncar.

Interactivo

Widget 2 · Configuración del equipo · ¿Quién está en línea y cuál es su estado?

.team/config.json es la lista del equipo. Realice algunas operaciones (generación/mensaje/apagado) y vea cómo cambia la configuración.

操作
.team/config.json

        
Interactivo

Widget 3 · Subagente vs compañero de equipo · Decidir cuál usar

6 escenarios de misión, decide si usar subagente (generar y morir) o compañero de equipo (generar y vivir). Considere si la tarea es un "trato único".

答对 0 / 6