Activar un agente de IA al instante: Ejecutar ahora, @claude y webhooks
Por Alejandro Rioja
Haz clic en Ejecutar ahora en una tarea, o escribe @claude en un comentario: ambos crean la misma solicitud, y Done se la entrega al instante a un agente conectado en lugar de esperar a su próxima revisión programada. Si un agente ya está conectado al flujo por MCP, le llega en tiempo real; si no hay nada conectado, la solicitud queda en cola como un registro persistente que el agente toma en cuanto se conecta, y Done puede además enviar un webhook saliente firmado a otro servicio para que algo despierte al agente.
¿Por qué “ya lo tomará en algún momento” no siempre alcanza?
Un agente que corre con un horario —una Routine nocturna, un cron cada hora, una sesión de Claude Code que inicias tú— solo ve lo que cambió desde su última revisión. Eso funciona para la mayoría del trabajo, pero no para lo que de verdad es urgente: se acaba de liberar un bloqueo, alguien que revisa necesita algo hoy, o estás mirando el tablero en este momento y quieres que el siguiente paso empiece ya, no en la próxima ejecución programada. Los disparadores existen para cerrar exactamente esa brecha.
Ejecutar ahora: la versión de un clic
Cada tarea tiene un botón Ejecutar ahora. Al hacer clic se crea un disparador, y la respuesta te dice con honestidad si pasó algo: “Entregado: un agente está escuchando” si un agente conectado lo recibió en tiempo real, o “En cola: tu agente lo tomará en su próxima conexión” si no había nadie para recibirlo. Que quede en cola no se muestra como un error, porque no lo es: una solicitud a las 11 de la noche sin nadie conectado es lo normal, y el sentido de registrarla es que siga ahí por la mañana.
@claude en un comentario hace lo mismo
Escribir “@claude” en un comentario crea la misma solicitud sin salir de la conversación que ya estás teniendo en la tarea. El analizador es conservador a propósito: primero descarta los bloques de código y el código en línea, para que una línea de log pegada nunca lo active por accidente, y rechaza una dirección de correo como ale@claude.ai o un usuario distinto como @claudette; solo cuenta el “@claude” literal y aislado. Es más estricto que los identificadores que reconoce el campo de agregado rápido cuando asignas una tarea nueva a un agente (@agent, @claude, @chatgpt y algunos otros equivalen ahí a “asignar esto a un agente de IA”); para activar una tarea que ya existe, solo sirve @claude en un comentario. Y el comentario de un agente nunca se activa a sí mismo: si el agente escribe “@claude”, no se crea nada.
¿Qué significa exactamente “entregado”?
Entregado significa una cosa concreta: la conexión autenticada del propio agente al flujo de eventos en vivo de Done estaba abierta en ese preciso momento. Una persona mirando la misma tarea en una pestaña del navegador no cuenta; solo una credencial autenticada como agente, conectada en ese instante, consume la entrega de un disparador. Es una definición deliberadamente estricta, porque “entregado” describe lo que realmente pasó, no lo que debería haber pasado.
Cuando no hay nada conectado: en cola, no perdido
Un disparador no caduca en cuanto nadie lo recibe. Queda abierto hasta que un agente lo reclama, y tiene prioridad sobre el orden normal de la cola: un agente que llama a list_triggers ve todas las solicitudes abiertas dirigidas a él —quién la pidió, cuándo, qué tarea y la instrucción— antes de lo que next_task le hubiera dado de todas formas. claim_trigger toma una de forma atómica, así que si dos agentes revisan casi al mismo tiempo, solo uno termina trabajando esa solicitud.
Despertar a un agente que no está en ejecución
Tanto list_triggers como el flujo de eventos en vivo suponen que hay algo conectado, al menos de vez en cuando. Si no lo hay —todavía no corrió ningún cron, no hay ninguna sesión abierta—, Done puede notificar a una URL que registres: un webhook saliente, enviado en el momento en que se crea el disparador, que otro proceso (un pequeño servicio siempre activo, una función serverless, lo que sea que realmente inicie a tu agente) puede usar para lanzar una ejecución. Se envía junto con el aviso por el flujo en vivo, nunca en su lugar, así que a un agente ya conectado no le afecta en nada.
- Registrar la URL es una acción humana dentro de Done, no algo que pueda hacer un token MCP; a propósito, porque un agente capaz de apuntar Done a una URL elegida por él se habría dado a sí mismo un canal de salida fuera de su entorno aislado.
- El payload solo lleva identificadores: un nombre de evento, el id de la tarea y el id del espacio de trabajo. Sin título, sin notas, sin el texto de la instrucción. Una URL de webhook filtrada, o una entrega que llega al host equivocado, solo revela que existe un id de tarea; el agente que la recibe igual tiene que obtener el contenido real por su cuenta, con su propio token MCP limitado y pasando por las mismas verificaciones de acceso que cualquier otra lectura.
- Cada entrega va firmada —HMAC-SHA256 sobre la marca de tiempo y el cuerpo juntos, enviada en los encabezados X-Done-Signature y X-Done-Timestamp—, así el receptor puede comprobar que realmente viene de Done y rechazar cualquier repetición de una entrega anterior.
- La URL tiene que ser https, y Done se niega a registrar una que apunte a una dirección privada o de loopback.
- Las entregas tienen un tope de 60 por hora por cuenta, con un tiempo de espera de 5 segundos: un disparador está pensado para una persona que presiona un botón o un @claude ocasional, no para un torrente de eventos.
Cómo configurar el webhook
Registra una URL una sola vez desde Done, y en ese momento te entrega un secreto de firma que no vuelve a mostrarse: Done lo guarda como hash y no hay forma de recuperarlo después, así que cópialo antes de salir de la página. Reemplazar la URL rota el secreto, y eso sirve también para revocarlo: apunta a otro lado, o simplemente deja de confiar en el secreto anterior, sin un paso de revocación aparte.
Lo que esto no cambia
Done sigue siendo una cola a la que el agente tiene que preguntar, nunca un programador que sale a ejecutar las herramientas de un agente por su cuenta: nada de esto hace una llamada MCP en tu nombre. Lo que resuelve es más acotado: poner una solicitud frente a un agente conectado al instante en lugar de en su próxima consulta, y darle a algo una forma de despertar a un agente cuando nadie está consultando. Reclamar la tarea, hacer el trabajo e informar el resultado sigue siendo cosa de la sesión del propio agente, exactamente igual que con cualquier otra tarea.
Preguntas frecuentes
¿Cómo hago que un agente de IA trabaje en una tarea ahora mismo en lugar de esperar?
Haz clic en Ejecutar ahora en la tarea, o escribe @claude en un comentario. Ambos crean la misma solicitud: se entrega al instante si ya hay un agente conectado por MCP, o queda en cola como un registro persistente que el agente toma en su próxima conexión.
¿Qué diferencia hay entre @claude en un comentario y asignar una tarea a @agent?
Al asignar una tarea se reconoce un conjunto más amplio de identificadores (@agent, @claude, @chatgpt y otros) para marcar quién se encarga. Activar una tarea que ya existe es más estricto: solo el identificador literal @claude en un comentario crea un disparador, y los comentarios de un agente nunca lo activan a sí mismo.
¿Un webhook puede ver el contenido de mis tareas?
No. El payload del webhook solo lleva identificadores —un nombre de evento, el id de la tarea y el id del espacio de trabajo—, nunca un título, notas ni el texto de la instrucción. Quien lo recibe igual tiene que obtener la tarea real con su propio token MCP limitado.
¿Necesito un plan de pago para usar Ejecutar ahora, @claude o el webhook?
No. Los disparadores, las menciones en comentarios y el webhook saliente están disponibles en todos los planes; nada de esto está reservado para Pro o Teams.
Sigue leyendo
Pruébalo tú mismo
Captura una tarea, asígnala a un agente de IA y sigue siendo quien da el visto bueno.