Cómo construir agentes proactivos con el Schedules SDK de LangChain
Los agentes de inteligencia artificial están evolucionando desde sistemas que esperan instrucciones hacia asistentes capaces de actuar por iniciativa propia. En lugar de depender exclusivamente de los mensajes del usuario, pueden ejecutar tareas periódicas, revisar información pendiente y retomar actividades en momentos determinados.
LangChain explica cómo implementar este comportamiento mediante el Schedules SDK de Managed Deep Agents, utilizando tareas programadas, conocidas como crons, para activar agentes de IA de manera automática.
Este enfoque está presente en lanzamientos como Muse, Instinct, Dots, Claude Duet y Hone.
Su adopción dentro del ecosistema de LangChain ya es significativa: más del 70% de las ejecuciones de Managed Deep Agents en LangSmith proceden de tareas programadas, en lugar de mensajes escritos directamente por personas.
Qué permiten hacer los crons en los agentes de IA
- Memoria persistente mediante dreaming
Un agente puede ejecutar una tarea en segundo plano para revisar conversaciones anteriores y condensar la información relevante en memoria a largo plazo. Este mecanismo se conoce coloquialmente como dreaming. Por ejemplo, una ejecución diaria puede reunir información de interacciones previas y actualizar la memoria que el agente utilizará posteriormente.
- Mensajes proactivos que anticipan necesidades
Un cron puede activar al agente a intervalos regulares, como una vez por hora, y pedirle que identifique acciones útiles para avanzar hacia un objetivo. El resultado puede aparecer como un mensaje proactivo dirigido al usuario. Entre las situaciones que puede abordar este comportamiento están los plazos próximos, los hilos de conversación pendientes o las noticias relevantes para sus objetivos.
- Triaje inteligente de Slack y correo electrónico
Otra aplicación consiste en programar revisiones frecuentes de flujos de información. Por ejemplo, cada diez minutos puede activarse un agente para examinar eventos procedentes de Slack o del correo electrónico. Su tarea consiste en identificar acontecimientos destacables y avisar al usuario cuando encuentre información que merezca atención.
- Recordatorios y seguimiento de tareas
Cuando una persona pide que se le recuerde algo más adelante, el agente puede crear una programación que lo reactive en el momento correspondiente. Este mecanismo facilita los recordatorios y las acciones de seguimiento.
- Orquestación de varios agentes
Un agente orquestador distribuye o supervisa subtareas asíncronas y permanece inactivo mientras espera sus resultados. Los crons permiten que despierte periódicamente, compruebe el progreso y continúe la coordinación del trabajo.
Las dos piezas necesarias para construir agentes proactivos
- Un servidor de crons robusto
El servidor debe permitir definir el horario y el prompt que ejecutará el agente, además de incorporar las habilidades o los permisos necesarios cuando una tarea los requiera. También debe gestionar situaciones en las que coincidan numerosas ejecuciones: para ello, puede utilizar jitter, un mecanismo que distribuye la carga evitando que todas las tareas se ejecuten exactamente al mismo tiempo.
- Una interfaz que el agente pueda utilizar
Cuando un usuario solicita un recordatorio o seguimiento, el agente necesita mecanismos para crear y modificar esas tareas. La interfaz debe permitir estas operaciones de manera gobernada, manteniendo el control sobre las programaciones que el agente administra.
Cómo construir agentes proactivos con Managed Deep Agents
Managed Deep Agents se alojan mediante LangSmith Deployments e incorporan un servidor de crons integrado que puede activar ejecuciones de agentes dinámicamente.
Una ejecución programada consiste en entregar un prompt al agente según un horario determinado. La ejecución utiliza el hilo y la memoria correspondientes al usuario, denominado principal, que creó esa programación.
Los horarios pueden establecerse de dos maneras: mediante definiciones estáticas o dinámicamente a través de herramientas utilizadas por el propio agente.
Paso 1. Definir un horario estático con define_schedule
Para crear una programación fija, LangChain utiliza un archivo de Python dentro del directorio schedules:
schedules/daily_digest.py
from managed_deepagents import define_schedule
schedule = define_schedule(
cron="0 8 * * 1-5",
timezone="America/Los_Angeles",
prompt="Inspect the sales report using your tools and send a KPI readout.",
)
El ejemplo programa una ejecución a las 8:00 de la mañana, de lunes a viernes, según la zona horaria configurada. La instrucción solicita al agente inspeccionar un informe de ventas utilizando sus herramientas y enviar un resumen de indicadores clave de rendimiento (KPI).
Paso 2. Crear horarios dinámicos con el Schedules SDK
Las programaciones también pueden gestionarse dinámicamente mediante herramientas que el agente utiliza. Para ello, LangChain muestra cómo envolver las operaciones del Schedules SDK en tres herramientas:
- set_schedule: crea una programación para el usuario actual.
- list_schedules: enumera las programaciones existentes de ese usuario.
- delete_schedule: elimina una programación determinada.
El código se coloca en tools/scheduling.py:
from langchain.tools import tool
from managed_deepagents import ManagedDeepAgentRuntime
@tool
async def set_schedule(prompt: str, cron: str, runtime: ManagedDeepAgentRuntime) -> str:
"""Run a prompt for the current user on a cron schedule."""
item = await runtime.schedules.create(owner={"type": "user"}, cron=cron, prompt=prompt)
return f"Created schedule {item['id']}."
@tool
async def list_schedules(runtime: ManagedDeepAgentRuntime) -> str:
"""List the current user's schedules."""
page = await runtime.schedules.list(owner={"type": "user"})
return str(page["items"])
@tool
async def delete_schedule(schedule_id: str, runtime: ManagedDeepAgentRuntime) -> str:
"""Delete one of the current user's schedules."""
await runtime.schedules.delete(schedule_id, owner={"type": "user"})
return f"Deleted schedule {schedule_id}."
Paso 3. Crear un recordatorio de ejecución única con check_in_later
Para activar al agente una sola vez en el futuro, LangChain presenta la herramienta check_in_later. Su funcionamiento consiste en calcular una fecha futura a partir de la hora actual y una cantidad de minutos indicada.
from datetime import datetime, timedelta, timezone
from langchain.tools import tool
from managed_deepagents import ManagedDeepAgentRuntime
@tool
async def check_in_later(prompt: str, minutes: int, runtime: ManagedDeepAgentRuntime) -> str:
"""Run a prompt once for the current user, a number of minutes from now."""
at = datetime.now(timezone.utc) + timedelta(minutes=minutes)
item = await runtime.schedules.create(owner={"type": "user"}, at=at, prompt=prompt)
return f"Scheduled a check-in {item['id']}."
A diferencia de una tarea recurrente definida mediante cron, esta herramienta crea una ejecución única para un momento futuro.
Paso 4. Inicializar y desplegar el agente
LangChain señala que el punto de partida para distribuir un agente proactivo dentro de una organización está en los comandos:
- mda init
- mda deploy
La documentación de Managed Deep Agents está disponible en langch.in/mda.
LangChain en contexto
Managed Deep Agents se alojan mediante LangSmith Deployments, que proporciona el entorno para sus ejecuciones programadas.
El sistema incorpora un servidor de crons y permite definir horarios de forma estática mediante define_schedule o dinámicamente mediante herramientas que utilizan el Schedules SDK.




