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.
2Dueño de archivo: quién escribe dónde, y aislado cómo
3Un verificador que señala el campo faltante y la colisión
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.
01 · Del 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.
02 · El 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.
El mismo time con el ejecutor sin worktree y un segundo ejecutor, sin tope, también escribiendo en src/:
executor-2: falta teto
colisão: src/ tem 2 donos sem isolamento (executor, executor-2)
papéis: 5 · problemas: 2
saída: 1
Dos salidas: darle un worktree a cada ejecutor (clase 5) o dividir las carpetas por dueño (lo que pide la doc de agent teams).
03 · Prá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.
04 · El mapa del curso
Cuatro entregas, en orden. Haz clic en un ejercicio para ver el "listo cuando".
Clase 804 · El mapa del cursoCuatro entregas, en orden. Haz clic en un ejercicio para ver el "listo cuando".
¿Por qué el campo "verificado por" es obligatorio para todo papel?
Correcto
Clase 4: quien decide es otro proceso, mirando el artefacto. Sin ese campo, el equipo vuelve a confiar en el reporte.
No es esa
Clase 4: quien decide es otro proceso, mirando el artefacto. Sin ese campo, el equipo vuelve a confiar en el reporte.Repasar: Del pedido al equipo
Pregunta 4 de 4
En el modelo, el planificador escribe "nada". ¿Quién guarda el plan en disco?
Correcto
El planificador solo tiene herramientas de lectura. Decir que escribe en plans/ fue la contradicción que el verificador detectó en la primera versión.
No es esa
El planificador solo tiene herramientas de lectura. Decir que escribe en plans/ fue la contradicción que el verificador detectó en la primera versión.Repasar: El time.md y el verificador
Prueba completada
Acertaste {a} de {n}. Si aciertas todas, la clase se marca como completada.
Elige una alternativa. La explicación aparece después de tu intento.
07 · En 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.