El protocolo en siete pasos
El protocolo en siete pasos
Objetivos
- Memorizar los siete pasos y su orden.
- Reconocer los tres recorridos que produce el protocolo.
- Saber dónde se decide cada cosa, para ubicar el detalle en los capítulos siguientes.
Los siete pasos
El texto que se instala se titula ODD protocol (MANDATORY, in this order, on every request): obligatorio, en este orden y en cada pedido.
| # | Paso | Pregunta que responde | Capítulo |
|---|---|---|---|
| 1 | Authorize | ¿Este pedido autoriza un cambio? | 04 |
| 2 | Explore | ¿Qué existe ya? | 05 |
| 3 | Resolve uncertainty | ¿Queda alguna duda que importe? | 05 |
| 4 | Classify | ¿Es pequeña o grande? | 06 |
| 5 | Track before the first write | ¿Necesita documento de feature? | 07 |
| 6 | Implement task by task | ¿Quién escribe y cómo se prueba? | 08 y módulo 3 |
| 7 | Close | ¿Qué se comprobó y qué sigue? | 09 |
El protocolo entra en juego también cuando solo haces una pregunta. Lo que cambia es el recorrido: el primer paso desvía el pedido hacia la lectura.
El flujo completo
Este diagrama resume el de docs/usage.md, sin el detalle de la revisión nativa, que se trata en el capítulo 16.
flowchart TD
A["Pedido"] --> B{"¿Autoriza un cambio?"}
B -->|"No"| C["Explorar o explicar<br/>sin artefactos"]
B -->|"Ambiguo"| B2["Una aclaración<br/>y esperar"]
B2 --> B
B -->|"Sí"| D["Explorar el código existente"]
D --> E["Resolver incertidumbre<br/>solo si hay una real"]
E --> F{"¿Se puede retomar desde<br/>el pedido y git diff?"}
F -->|"Sí"| G["Sin artefactos duraderos"]
F -->|"No"| H["Documento de feature<br/>y espejo en Engram"]
G --> I["Implementar con test-first aplicable"]
H --> I
I --> J["Comprobaciones proporcionales"]
J --> K{"¿Quedan tareas?"}
K -->|"Sí"| I
K -->|"No"| L["Cerrar: resultado, comprobaciones<br/>y línea Risk"]
Qué ocurre en cada paso
1. Authorize
Investigar, explicar, revisar, auditar, comparar o proponer es solo lectura, a menos que pidas implementar. Si la intención de cambio es ambigua o condicional, hay una aclaración y el agente sigue en solo lectura hasta recibir respuesta.
2. Explore
Se explora el código y los requisitos antes de proponer o escribir, en proporción al pedido. Si el agente va a escribir inline, lee lo necesario él mismo. La exploración separada se usa solo cuando necesita un mapa para decidir o enrutar.
3. Resolve uncertainty
Son tres herramientas opcionales con un uso limitado:
- Investigación solo para una incertidumbre con nombre.
- Una pregunta enfocada solo para una decisión de producto real, y luego se espera.
- Como máximo un desafío de supuestos de solo lectura para una premisa no demostrada de alta consecuencia.
4. Classify
Una tarea es pequeña si cumple tres condiciones: se comprende, su riesgo está contenido y se puede retomar desde el pedido original y git diff. Es grande solo cuando falla esa prueba de reanudación.
5. Track before the first write
Para tareas grandes, el agente crea odd/tasks/<feature-name>.md y su espejo en Engram antes de escribir código, sin pedir permiso, y te avisa en una línea qué documento creó y cuántas tareas contiene.
6. Implement task by task
Es el paso más denso. Incluye:
- Traspaso por referencia a los workers.
- Enrutamiento por la topología útil más pequeña.
- Política test-first por defecto.
- Marcar cada elemento solo con el resultado observado.
- Actualizar el documento y su espejo después de cada tarea.
- Commits por unidad de trabajo en porciones de unas 400 líneas en la rama de la feature.
7. Close
Se informa el resultado verificado, cada comprobación fallida, omitida o pendiente, y el siguiente paso. Todo cambio de código cierra con su línea Risk. Una tarea registrada solo puede quedar pendiente con tu orden explícita de parar o con un único resultado Needs your decision.
Los tres recorridos
flowchart LR
subgraph L["Solo lectura"]
L1["Authorize"] --> L2["Explore"] --> L3["Responder"]
end
subgraph P["Tarea pequeña"]
P1["Authorize"] --> P2["Explore"] --> P3["Classify"] --> P4["RED y arreglo inline"] --> P5["Prueba y suite una vez"] --> P6["Close con Risk"]
end
subgraph G["Tarea grande"]
G1["Authorize"] --> G2["Explore"] --> G3["Classify"] --> G4["Documento y espejo"] --> G5["Tarea por tarea<br/>con commits"] --> G6["Close"]
end
| Aspecto | Solo lectura | Pequeña | Grande |
|---|---|---|---|
| Escribe archivos | No | Sí | Sí |
| Documento de feature | No | No | Sí |
| Espejo en Engram | No | No | Sí |
| Commits automáticos | No | No, salvo que los pidas | Sí, en la rama de la feature |
| Subagentes | Solo si hace falta un mapa | Ninguno | Solo por motivo con nombre |
| Línea Risk | No aplica | Sí | Sí |
Grande no implica delegado. Una tarea grande sin motivo para delegar sigue inline siguiendo su bitácora. Esto se detalla en el capítulo 10.
Reanudar es un recorrido más
El flujo tiene una entrada lateral para una feature interrumpida:
sequenceDiagram
participant P as Parent
participant E as Engram
participant D as odd/tasks/feature.md
P->>E: mem_context
P->>E: mem_search por proyecto y feature
P->>E: mem_get_observation del documento completo
P->>D: Leer el archivo real
P->>P: Conciliar requisitos, código y pruebas
P->>P: Continuar con la siguiente tarea sin terminar
El capítulo 17 cubre este mecanismo.
Lo que el usuario ve
Pese a toda esta maquinaria, la interacción normal solo reporta cuatro estados:
| Estado | Significado |
|---|---|
| Working | La implementación aún puede cambiar |
| Checking | Se hacen la prueba funcional aplicable y la revisión acotada |
| Ready | El candidato exacto tiene evidencia suficiente para la ruta de entrega elegida |
| Needs your decision | No es posible converger de forma segura y automática, y se presentan causa, impacto y opciones |
docs/trigger-rules.md lo plantea así: tú pides el resultado y no eliges los detalles internos de revisión, los hashes, los recibos ni las transiciones.
Actividad
Toma los tres pedidos del capítulo 1 y escribe, para cada uno, qué recorrido seguiría y por qué. Marca con un signo de pregunta los que no puedas clasificar todavía. Revísalos al terminar el capítulo 6.
Autoevaluación
-
¿En qué momento se crea el documento de feature?
- A. Al cerrar la tarea
- B. Tras el primer commit
- C. Cuando el usuario lo pide
- D. Después de explorar y antes de la primera escritura de código
-
¿Qué paso decide si un pedido es de solo lectura?
- A. Authorize
- B. Classify
- C. Explore
- D. Close
-
Una tarea grande sin motivo para delegar, ¿cómo se ejecuta?
- A. Con un worker por cada tarea
- B. Inline, siguiendo su bitácora
- C. Se rechaza hasta que el usuario divida el pedido
- D. Con un verificador independiente en cada commit
-
¿Qué estado corresponde a “no se puede converger de forma segura y automática”?
- A. Working
- B. Checking
- C. Needs your decision
- D. Ready
Respuestas
- D. El paso 5 se titula “Track before the first write” y va después de explorar.
- A. Authorize establece si el pedido autoriza un cambio.
- B. Grande recibe seguimiento, y un writer solo llega con su propio disparador.
- C. Presenta la causa, el impacto y opciones concretas.
Lista de control
- Puedo recitar los siete pasos en orden.
- Sé diferenciar los tres recorridos y qué produce cada uno.
- Entiendo que “grande” y “delegado” son decisiones independientes.
- Conozco los cuatro estados públicos.
Fuentes
docs/usage.md, docs/trigger-rules.md, internal/components/agentguidance/routing.go.