Multiagente y Orquestación|INEMA.CLUB-PRO

Clase 8 · 20 min

Diseña el equipo de tu loop

Un equipo de agentes cabe en una página: la decisión de la clase 1 y, para cada rol, nivel, herramientas, qué escribe, aislamiento, entrada, retorno, quién verifica y tope. Escrito así, un script revisa si falta algún campo o si dos roles escriben en el mismo lugar sin aislamiento. En esta clase escribes el time.md de tu loop, lo revisas y lo ejecutas.

Empezar la clase
Pizarra oscura con fichas blancas sin texto sujetas en árbol, unidas por hilos, bajo una lámpara.

En esta clase vas a

  1. 1Los ocho campos de cada rol
  2. 2Dueño de archivo: quién escribe dónde, y aislado cómo
  3. 3Un verificador que señala el campo faltante y la colisión
  4. 4El mapa del curso y tu plan con fechas

Objetivo: escribir el time.md de tu loop (rol, nivel, herramientas, dueño de los archivos, aislamiento, retorno, verificación, tope) y ejecutarlo.

01Del pedido al equipo

Cada etapa usa una clase del curso. Haz clic para ver cuál.

Haz clic en cada bloque del diagrama para ver qué hace.

Empieza con el equipo más pequeño que haga el trabajo. Un rol nuevo solo entra cuando sepas decir qué devuelve y quién lo verifica.

02El time.md y el verificador

Copia el modelo, cámbialo por los roles de tu loop y ejecuta el verificador. No se llama a ningún modelo.

time.md · modelo con cuatro roles
# Time del loop — [nombre del loop]

Decisão (aula 1): híbrido — planear y revisar en el centro; ejecutar en paralelo solo los ítems independientes.

## papel: planejador
- nível: topo
- ferramentas: Read, Grep, Glob
- escreve em: nada
- isolamento: nenhum (só lê)
- entrada: goal.md
- retorno: plano em até 5 passos + critérios comando → saída (quem grava em plans/ é o orquestrador)
- verificado por: você (portão humano antes de executar)
- teto: 1 rodada

## papel: executor
- nível: executor
- ferramentas: Read, Write, Edit, Bash, Grep, Glob
- escreve em: src/ tests/novos/
- isolamento: worktree
- entrada: plano aprovado
- retorno: lista de arquivos mudados + saída dos testes
- verificado por: avaliador
- teto: 3 rodadas, 600 s cada

## papel: avaliador
- nível: menor
- ferramentas: Read, Bash, Grep, Glob
- escreve em: nada
- isolamento: sandbox read-only
- entrada: goal.md + diff + saída dos testes
- retorno: OK/FALHA por critério + APROVADO ou FALTA
- verificado por: script verificar.mjs
- teto: 1 rodada por entrega

## papel: revisor-codex
- nível: executor
- ferramentas: codex exec -s read-only
- escreve em: nada
- isolamento: sandbox read-only
- entrada: mesmo briefing + diff real
- retorno: até 6 linhas, última APROVADO ou FALTA
- verificado por: você reconcilia (aceito, rejeitado com evidência, em aberto)
- teto: 2 rodadas
confere-time.py · guárdalo junto al time.md
# confere-time.py — revisa el time.md: todo rol tiene los 8 campos, y ningún
# archivo tiene dos dueños sin isolamento (la colisión de las clases 5 y 6).
# Uso: python3 confere-time.py time.md
import re, sys

CAMPOS = ["nível", "ferramentas", "escreve em", "isolamento", "entrada",
          "retorno", "verificado por", "teto"]
NIVEIS = {"menor", "executor", "topo", "super"}
texto = open(sys.argv[1], encoding="utf-8").read()
papeis = re.findall(r"^## papel: *(.+?)\n(.*?)(?=^## |\Z)", texto, re.M | re.S)
problemas = 0
donos = {}
for nome, corpo in papeis:
    campos = dict(re.findall(r"^- ([^:]+): *(.+)$", corpo, re.M))
    faltam = [c for c in CAMPOS if not campos.get(c, "").strip()]
    if faltam:
        print(f"{nome}: falta {', '.join(faltam)}"); problemas += 1
    if campos.get("nível") and campos["nível"] not in NIVEIS:
        print(f"{nome}: nível '{campos['nível']}' não é menor/executor/topo/super"); problemas += 1
    escreve = campos.get("escreve em", "nada")
    if escreve != "nada" and campos.get("isolamento", "nenhum").startswith("nenhum"):
        for alvo in escreve.split():
            donos.setdefault(alvo, []).append(nome)
    if escreve != "nada" and "ferramentas" in campos and not re.search(r"Write|Edit|Bash|workspace-write", campos["ferramentas"]):
        print(f"{nome}: escreve em {escreve}, mas as ferramentas só leem"); problemas += 1
for alvo, quem in donos.items():
    if len(quem) > 1:
        print(f"colisão: {alvo} tem {len(quem)} donos sem isolamento ({', '.join(quem)})"); problemas += 1
print(f"papéis: {len(papeis)} · problemas: {problemas}")
sys.exit(1 if problemas or not papeis else 0)
Terminal · verificar
cd ~/treino-multi
python3 confere-time.py time.md; echo "saída: $?"
Ejemplo del repositorio
papéis: 4 · problemas: 0
saída: 0

El modelo pasa. El planejador escribe "nada": quien graba el plan en disco es el orquestador. En la primera versión del modelo, el planejador decía "escreve em: plans/" con herramientas de solo lectura, y el verificador señaló la contradicción.

03Práctica final

Tu time en papel, conferido, y una ronda de verdad.

E17 · El time.md de tu loop

30 min

Corre la matriz (clase 1) para el loop que quieres armar. Escribe el time.md con los roles que pide la decisión, cambia [nome do loop] y corre el verificador.

Listo cuando: python3 confere-time.py time.md; echo "saída: $?" → papéis: N · problemas: 0 y saída: 0, con N igual al número de roles que escribiste.

E18 · Una ronda del time

45 min

Elige una tarea pequeña de tu proyecto. Escribe el goal con 2 o 3 criterios y haz commit de él. El ejecutor corre por gera-avalia.sh en un worktree (git worktree add) y el revisor Codex lee el diff por el puente. Concilia los hallazgos en el revisao.md.

Listo cuando: ./gera-avalia.sh goal.md "[pedido]" termina en → APROVADO y saída: 0; tail -1 revisao-codex.txt | grep -cE '^-? ?(APROVADO|FALTA:)' → 1; grep -cE "^(aceito|rejeitado|aberto):" revisao.md es igual al número de hallazgos.

04El mapa del curso

Cuatro entregas, en orden. Haz clic en un ejercicio para ver el "listo cuando".

Día 1Decidir

clase 1

2 ejercicios

decisao.md con 3 tareas tuyas y ningún aviso.

Ver la clase
Días 1 y 2Delegar y conferir

clases 2, 3 y 4

2 ejercicios

Subagente de lectura, fan-out con tope y laço generador × evaluador aprobando.

Ver la clase
Día 3Aislar

clases 5 y 6

3 ejercicios

Escritura perdida probada, worktree y sandbox por rol, cola trabada con flock.

Ver la clase
Días 4 y 5Tu equipo

clases 7 y 8

2 ejercicios

time.md conferido y una ronda real con revisión cruzada conciliada.

Ver la clase
Al final del cursoUn time de agentes del tamaño del trabajo, escrito en una página, conferido por script y corrido una vez de verdad.
18 ejercicios
Haz clic en un ejercicio para ver qué hacer y el "listo cuando".
  1. 1/5

    Decidir

    La matriz antes de cualquier agente. Si todo da "direto", el resto del curso queda de reserva para cuando lo necesites.

  2. 2/5

    Delegar y conferir

    Requiere el día 1. Cada pieza primero con agente falso, después una llamada real pequeña.

  3. 3/5

    Aislar

    Requiere los días 1 y 2. Todo sin cuota: repositorio descartable, codex sandbox, claude falso en el PATH.

  4. 4/5

    Tu equipo

    Requiere todo lo anterior. La revisión de Codex en un día; la ronda del time, en el siguiente.

  5. 5/5

    El curso completo

    Decidir, delegar y conferir, aislar y armar tu time. Pasa a la siguiente entrega solo cuando el "listo cuando" de la anterior sea verdad.

Orden obligatorio: un time sin aislamiento repite la escritura perdida, y un time sin evaluador vuelve a confiar en el "listo" del generador.

05Genera tu plan con fechas

Elige el inicio y cuánto tiempo tienes por semana. El plan lista los 18 ejercicios en orden.

06Prueba de la clase

Pregunta 1 de 4

La matriz de la clase 1 dio "direto" para tu loop. ¿Cómo queda el time.md?competencia

07En tres frases

Una páginaDecisión y, por papel, nivel, herramientas, dónde escribe, aislamiento, entrada, retorno, verificación y tope.
Verificado por scriptUn campo faltante, un nivel sin sentido y dos dueños sin aislamiento aparecen antes de ejecutar.
Ejecutado una vezEjecutor en un worktree, evaluador por código, revisión cruzada conciliada.

Sigue por aquí

Clase anteriorVolver al inicio del curso