Ticks proactivos
Los ticks proactivos permiten que el agente principal se despierte solo mientras la sesión está ociosa, decida si queda trabajo útil, haga una porción acotada y ceda el control hasta el siguiente despertar. Están activos por defecto.
Cómo desactivarlos
Hay dos puertas: el interruptor experimental y la sección de configuración. Basta con cerrar una.
NEXGEN_EXPERIMENTAL_PROACTIVE=0 nexgenk[proactive]
enabled = falseEstos son los valores que se distribuyen. Con cualquiera de las dos puertas cerrada, la sesión no registra el servicio de ticks, ni la herramienta Sleep, ni ningún temporizador.
[proactive]
enabled = true
tick_seconds = 300
min_sleep_seconds = 30
max_sleep_seconds = 3600
idle_tick_limit = 3
max_ticks_per_day = 48
max_tokens_per_day = 2000000
max_window_minutes = 480
allow_yolo = falseCuándo se despierta
Un tick solo se admite si se cumplen todas estas condiciones:
- El agente es el agente principal; los subagentes y las sesiones hijas nunca reciben ticks.
- El bucle está ocioso, sin pausa, con la cola vacía y sin peticiones pendientes.
- No hay una compactación completa en curso.
- No hay un goal activo: el goal ya mantiene la sesión trabajando y dos motores duplicarían el coste.
- El siguiente disparo de cron está más lejos que el horizonte del tick, así que el tick nunca le roba el turno al cron.
- El modo de permisos es
auto. Conyolono hay ticks salvoallow_yolo = true; enmanualel agente se quedaría esperando una aprobación que nadie va a responder. - No se han agotado los presupuestos diarios de ticks y tokens, y la ventana de actividad no ha vencido.
Cuando una condición falla, el planificador espera en vez de girar en vacío: reintenta tras tick_seconds (nunca más allá del siguiente cron) o se apaga para las condiciones permanentes (interruptor o configuración cerrados, agente no principal).
La herramienta Sleep
Sleep({ seconds, reason? }) termina el turno actual y programa el siguiente despertar. La herramienta ajusta seconds al rango min_sleep_seconds…max_sleep_seconds, así que pedir 10 segundos no puede hacer girar el bucle.
Cada despertar cuesta una llamada al modelo y la caché de prompt caduca a los cinco minutos aproximadamente, por lo que el texto del tick pide dormir al menos 300 segundos salvo que algo externo esté a punto de ocurrir.
Control y seguridad
- Tú siempre ganas. Si escribes mientras un tick ocupa el bucle, se cancela el turno del tick y corre el tuyo; un tick que aún no ha empezado se descarta.
- Ctrl-C lo detiene. Cancelar un tick aparca el planificador con un motivo visible; solo una entrada nueva lo vuelve a arrancar.
- Un fork lo aparca. Una sesión derivada nunca hereda un planificador activo.
- Retroceso. Un turno de tick que termina sin
Sleepse considera improductivo: el siguiente despertar pasa a 60, 300, 900 y 3600 segundos, y trasidle_tick_limitturnos así el planificador se aparca. - Presupuestos.
max_ticks_per_dayymax_tokens_per_daylimitan la actividad diaria;max_window_minuteslimita cuánto tiempo puede permanecer armado el planificador de una vez.
Ver también
- Objetivo duradero — el otro motor que mantiene viva una sesión; el goal siempre tiene prioridad sobre los ticks.
- Archivos de configuración — cómo se resuelven las secciones y las variables de entorno.