Skip to content

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.

sh
NEXGEN_EXPERIMENTAL_PROACTIVE=0 nexgenk
toml
[proactive]
enabled = false

Estos 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.

toml
[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 = false

Cuá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. Con yolo no hay ticks salvo allow_yolo = true; en manual el 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 Sleep se considera improductivo: el siguiente despertar pasa a 60, 300, 900 y 3600 segundos, y tras idle_tick_limit turnos así el planificador se aparca.
  • Presupuestos. max_ticks_per_day y max_tokens_per_day limitan la actividad diaria; max_window_minutes limita cuánto tiempo puede permanecer armado el planificador de una vez.

Ver también ​