Hooks: el comportamiento que no decide el modelo

Guía interna de IAcademy. Acompaña al módulo ADE17 · Hooks.

La idea, en una frase

Un hook es código que se ejecuta en un momento fijo de la vida del agente, sin que el modelo opine. Si algo tiene que pasar siempre, no lo pidas en el prompt: lo pides en un hook. El prompt persuade; el hook obliga.

El calendario de eventos

Los eventos se agrupan por cadencia, y esa agrupación importa más que la lista:

CadenciaEventosPara qué sirve
Una vez por sesiónSessionStart, SessionEndPreparar entorno, registrar, recoger métricas
Una vez por turnoUserPromptSubmit, StopInyectar contexto al empezar; validar al terminar
En cada llamada a herramientaPreToolUse, PostToolUseBloquear, auditar, formatear, ejecutar pruebas

PreToolUse recibe el nombre de la herramienta y sus argumentos completos; PostToolUse recibe además la salida. Eso es lo que permite decidir con información real y no con una intuición del modelo.

Códigos de salida: aquí está la diferencia

No todos los eventos pueden vetar. Confundirlo es el error más común:

De ahí la regla de diseño: lo que no debe ocurrir se impide antes; lo que ya ocurrió se detecta después. Un hook que pretende prohibir algo desde PostToolUse llega tarde siempre.

Lo que inyecta contexto

La salida por stdout de UserPromptSubmit y SessionStart se añade al contexto del modelo: son los dos puntos naturales para meter estado real (rama actual, versión, incidencias abiertas). En el resto, la salida es para el usuario o para el log. Si metes contexto en un evento que no lo inyecta, no pasa nada visible — y creerás que tu hook no funciona.

La trampa de reanudar una sesión

Cuando se reanuda una conversación, los eventos de mitad de sesión no se vuelven a ejecutar: se reproduce el texto guardado del turno original. Un hook que inyectaba la hora, el SHA del commit o el estado del despliegue devolverá el valor de entonces. Si ese dato decide algo, vuelve a comprobarlo en vez de confiar en el texto guardado.

Lo que merece un hook

Lo que no merece un hook

Probarlos antes de confiar en ellos

Los hooks se declaran en la configuración del agente y se pueden ejecutar a mano: pásales el JSON del evento y comprueba el código de salida antes de confiar en ellos. Tres comprobaciones bastan: que dispara cuando debe, que el código de salida es el que crees, y que el mensaje de error dice qué hacer y no solo que algo falló.

Seguir