Ana es funcionaria docente en Galicia. Cada año, en algún momento entre mayo y junio, la Consellería de Educación de la Xunta publica la convocatoria de comisiones de servicio por conciliación familiar. El plazo para solicitarlas es de apenas 10 días hábiles. Si te lo pierdes, te expones a que el curso escolar siguiente te puedan mandar a cualquier lugar de la provincia o si, como es nuestro caso y vives en una zona límitrofe a las cuatro provincias gallegas y las tienes en tu listado (ya que el nivel de granularidad de elección para vacantes es a nivel provincial), que te puedan mandar a cualquier lugar de la Comunidad. Este año decidí que un agente de IA se iba a encargar de vigilarlo por nosotros, y lo que aprendí en el proceso merece una entrada en esta bitácora.

OpenClaw como agente de búsqueda en la web de la Xunta. Generado por IA

El problema: burocracia con fecha de caducidad

Las comisiones de servicio por conciliación permiten al profesorado gallego solicitar un destino temporal más cercano a su domicilio cuando hay razones familiares que lo justifican. La convocatoria no tiene fecha fija: se publica después de la resolución del concurso general de traslados, que puede caer en cualquier momento de la primavera. La Consellería lo anuncia en su portal educativo (edu.xunta.gal), pero también los sindicatos de educación como la CIG-Ensino lo recogen puntualmente en sus webs.

La pregunta que me hice fue sencilla: ¿es esta una tarea adecuada para automatizar con un agente de IA? La respuesta es que sí, y casi perfecta: la información es pública, la URL es predecible, el evento que hay que detectar es binario, y el coste de perderse el plazo es alto. Exactamente el perfil de tarea donde un agente aporta valor real.

OpenClaw: qué es y por qué genera tanto ruido

OpenClaw (antes conocido como Clawdbot y brevemente como Moltbot) es un framework de agente de IA de código abierto creado por Peter Steinberger, el fundador de PSPDFKit. A estas alturas se ha convertido en uno de los repositorios con más estrellas en la historia de GitHub, superando las 250.000 en menos de dos meses. El crecimiento es real, el hype también, y los problemas de seguridad, por desgracia, están a la altura de los anteriores.

Logo de OpenClaw

Lo que lo diferencia de un chatbot convencional es su arquitectura de agente autónomo: corre como servicio en tu propia máquina, tiene memoria persistente entre sesiones, puede ejecutar tareas programadas sin que nadie se lo pida, y se comunica contigo a través de las aplicaciones de mensajería convencionales, tales como Telegram, WhatsApp o Discord. Le dices qué quieres que haga y lo hace, también cuando no estás delante del teclado.

El contexto de ciberseguridad que no se puede ignorar

Antes de instalar nada, conviene entender qué estás metiendo en casa. OpenClaw puede ejecutar comandos de shell, leer y escribir ficheros, y controlar el navegador de tu máquina. La propia documentación del proyecto admite que no existe una configuración perfectamente segura. En enero de 2026 se detectó el ataque de cadena de suministro «ClawHavoc»: aproximadamente el 12% de las skills del registro oficial estaban comprometidas. Hubo un CVE crítico (CVE-2026-25253) que permitía ejecución remota de código con un solo clic.

Imagen figurativa de los riesgos de OpenClaw. Generada por IA

No es exactamente el escenario ideal para el uso de este agente de IA, pero esto no significa que no se pueda usar con seguridad razonable: significa que hay que ser metódico en la aproximación de seguridad en el despliegue. En mi caso, lo que hice fue adoptar las siguientes medidas de seguridad:

  • Despliegue en Docker, con el puerto del gateway vinculado exclusivamente a localhost (127.0.0.1:18789), sin exponerlo a la red local ni a internet.
  • Exec policy en «ask»: el agente pide confirmación antes de ejecutar cualquier comando de shell. Para la tarea de monitorizar una web esto es innecesario, pero es una red de seguridad que no cuesta nada.
  • Sin node pairing: no emparejé el Mac como nodo ejecutor, lo que desactiva la capacidad de ejecución remota de código.
  • Sin skills externas: solo las capacidades nativas de navegación web y mensajería. Nada descargado del registro de la comunidad.
  • Volumen de datos montado en un directorio dedicado (~/.openclaw-docker) con permisos 700.

El análisis de las fuentes: CIG-Ensino gana

Antes de configurar el agente hice un trabajo de análisis de fuentes que resultó más valioso que cualquier línea de configuración. Comparé el portal de la Xunta con la página de seguimiento de la CIG-Ensino y la conclusión fue clara: el sindicato es la fuente primaria óptima. El motivo es simple: la URL sigue un patrón perfectamente predecible año a año. La de 2021 fue /nova/comisions-de-servizo-de-conciliacion-2021.html, la de 2025 fue /nova/comisions-de-servizo-de-conciliacion-2025.html. Eso significa que la URL de 2026 ya la sabemos antes de que exista. El agente no tiene que buscar ni interpretar nada: o la página devuelve 200 o devuelve 404. Además, la CIG consolida en una sola página toda la cronología del proceso — apertura del plazo, resolución provisional, resolución definitiva — con fechas explícitas fáciles de parsear.

El portal de la Xunta (que en teoría tendría que ser la fuente principal) queda, por tanto, como fuente secundaria de confirmación, vigilando la sección de comisiones de servicio en busca de entradas nuevas con las palabras clave «apertura», «conciliación» y «2026/27».

Flujo de proceso del agente
Flujo de proceso del agente

La instalación: más accidentada de lo esperado

Ya tenía el punto de partida. La ventaja de afrontar este proceso desde Claude Code es que puedes acometer tanto la parte de despligue de infraestructura, como el relativo a la configuración del entorno software. Aunque el apoyo de IA hace que el proceso se simplifique enormemente, no es una instalación que se haga de manera directa, es un proceso que presenta errores que hay que tratar. Y documentar el proceso de instalación real, con sus tropiezos, me parece más útil que describir el camino feliz. Estos fueron los obstáculos en orden de aparición:

  1. Error EACCES en npm: Tenía claro que el entorno de instalación tenía que estar aislado y sin permisos de superusuario. Y el primer punto fue que el directorio global de npm en Mac pertenece a root cuando npm viene preinstalado del sistema. La solución que adopté fue el redirigir el prefijo global a ~/.npm-global, sin dar permisos de sudo.
  2. Imagen Docker inexistente: openclaw/openclaw no existe en Docker Hub. Hay que construir la imagen localmente desde el paquete npm, añadiendo git, python3, make y g++ a Alpine para que las dependencias nativas compilen.
  3. Flag –foreground eliminado: la documentación de algunos tutoriales menciona openclaw gateway --foreground, pero en la versión actual el comando correcto es openclaw gateway run.
  4. Gateway sin interfaz gráfica en headless: el LaunchAgent de macOS requiere sesión gráfica activa. En un Mac Mini M4 al que accedo múltiples veces sin monitor conectado permanentemente, la solución es Docker con --restart unless-stopped.
  5. Schema de configuración no documentado: añadir un proveedor de modelo de IA nuevo (Mistral, en mi caso, dado que no quería hacer uso de tokens de Anthropic) requirió inspeccionar el JSON de configuración directamente y usar el flujo interactivo de openclaw models auth add.
  6. Workspace vs. agent dir: los ficheros SOUL.md y HEARTBEAT.md deben estar en el workspace (~/.openclaw/workspace/), no en el directorio del agente (~/.openclaw/agents/main/agent/). OpenClaw viene con ficheros genéricos de ejemplo en el workspace que silenciosamente tienen precedencia sobre los tuyos si los pones en el sitio equivocado.

La configuración del agente: SOUL.md y HEARTBEAT.md

Una vez el gateway queda configurado, la configuración del comportamiento del agente se hace mediante dos ficheros de texto plano, a saber:

SOUL.md define la personalidad y los límites del agente. En mi caso contiene instrucciones bastante simples: comunicarse en español, no ejecutar comandos de shell, no acceder a URLs no listadas explícitamente, no instalar skills externas. Un agente con una superficie de ataque tremendamente reducida.

HEARTBEAT.md es el sistema de programación de tareas. OpenClaw lee este fichero cada 30 minutos y ejecuta las tareas cuya hora haya llegado. El mío tiene tres bloques: vigilancia de la CIG-Ensino a las 08:00, vigilancia de la Xunta a las 08:05, e informe semanal los lunes a las 09:00. Cuando el agente detecta la publicación, envía una alerta por Telegram con el plazo exacto, los días hábiles restantes y el enlace directo a la plataforma de solicitud.

## Cada día a las 08:00 AM — Vigilancia primaria (CIG-Ensino)

1. Accede a esta URL exacta:
   https://www.cig-ensino.gal/nova/comisions-de-servizo-de-conciliacion-2026.html

2. Si la página devuelve error 404: no hagas nada.
   Registra en memoria: "CIG 2026: sin publicar. Verificado [fecha]."

3. Si la página existe y tiene el plazo publicado:
   activa el PROTOCOLO DE ALERTA.

Hay un punto que no es trivial, y es el de dónde ubicar los ficheros. La ubicación correcta —y esto no es obvio— es el workspace del agente (~/.openclaw/workspace/), no el directorio del agente. OpenClaw distingue entre ambos y usa el workspace como fuente de verdad en tiempo de ejecución. Trataré este punto en detalle un poco más adelante.

Lo que funciona y lo que no está garantizado

El agente responde correctamente cuando le hablas por Telegram: navega por las webs, extrae información, razona sobre lo que encuentra. Mistral Large tarda entre 30 y 60 segundos en responder cuando hay navegación web de por medio, lo cual es normal dado que el proceso es secuencial — petición HTTP, procesado del HTML y generación de la respuesta.

Mensajes del agente

Lo que no está completamente garantizado es la entrega de alertas proactivas en heartbeats automáticos sin sesión activa: el sistema de heartbeat de OpenClaw tiene el concepto de «target-none»: el agente ejecuta la tarea pero no tiene destinatario claro al que enviar el resultado si no hay una conversación reciente activa. Para algo tan importante como este plazo, añadiría una segunda capa de seguridad: un cron nativo del sistema operativo que simplemente compruebe si la URL devuelve 200 y envíe un email. Sin LLMs, sin Docker, sin APIs. Tres líneas de shell.

El truco que nadie documenta: workspace frente a agent dir

Una vez confirmado que el agente respondía correctamente por Telegram, le pregunté directamente qué instrucciones tenía cargadas en su SOUL.md. La respuesta me desconcertó: me describió un agente genérico con tareas de correo, calendario y redes sociales. Nada de comisiones de servicio, nada de CIG-Ensino, nada de lo que yo había configurado.

Los ficheros estaban en su sitio. docker exec openclaw find /home/openclaw/.openclaw/agents -name "SOUL.md" los encontraba sin problema en ~/.openclaw/agents/main/agent/SOUL.md. Y sin embargo el agente leía otros.

El motivo es una distinción que la documentación de OpenClaw no explica con claridad: el agente tiene dos ubicaciones relevantes, y no son equivalentes. El agent dir (~/.openclaw/agents/main/agent/) es donde está la configuración del agente — modelos, perfiles de auth, routing. El workspace (~/.openclaw/workspace/) es donde el agente lee los ficheros de comportamiento en tiempo de ejecución: SOUL.md, HEARTBEAT.md, MEMORY.md. Y el workspace tiene precedencia.

OpenClaw viene con ficheros de ejemplo en el workspace — un SOUL.md genérico bastante elaborado y un HEARTBEAT.md con plantillas de tareas domésticas. Cuando creé mis ficheros en el agent dir, el agente los ignoró silenciosamente porque el workspace ya tenía los suyos. La solución fue copiar los ficheros al sitio correcto:

cp ~/.openclaw-docker/agents/main/agent/SOUL.md ~/.openclaw-docker/workspace/SOUL.md
cp ~/.openclaw-docker/agents/main/agent/HEARTBEAT.md ~/.openclaw-docker/workspace/HEARTBEAT.md
docker restart openclaw

Tras el reinicio, la misma pregunta por Telegram devolvió la respuesta correcta: monitorización administrativa especializada, sólo español, sin comandos de shell, URLs de la CIG-Ensino y la Xunta. El agente había encontrado sus instrucciones.

La lección es que en OpenClaw el lugar donde guardas los ficheros y el lugar donde el agente los lee no son el mismo. Si tu agente parece ignorar tu configuración, comprueba el workspace antes de buscar problemas más complejos.

Skills de Claude Code para validar la seguridad de la instalación

Ya he comentado que he utilizado Claude Code como asistente de IA para acelerar el despliegue y la configuración del agente, pero no ha sido -ni mucho menos- el punto más valioso de su utilización. Y este es el punto donde entran los skills. Si bien Claude Code tiene unas capacidades que de partida son impresionantes, para poderlas aprovechar bien es necesario componer unas consultas específicas para que aplique aquellos aspectos (ciberseguridad, buenas prácticas de desarrollo, UX…) que nos interesen, cosa para lo que muchas veces no tenemos el tiempo o la capacidad.

Skills de ciberseguridad para Claude Code que permiten un OpenClaw más seguro. Estilo steampunk. Generado con IA

Las skills ayudan a facilitar este proceso: se trata de ficheros de «habilidades» (de ahí su nombre) que podemos incorporar a nuestro entorno de IA para que las aplique sin tener que declararlas de manera explícita. Terriblemente sencillo, y terriblemente potente. Y, en mi caso, lo que más me interesaba era aplicar un buen skill de ciberseguridad.

Y es que, aunque había explicitado desde el inicio que quería realizar un proceso de despliegue seguro y conforme a buenas prácticas de ciberseguridad, quería validar cómo de bien se había hecho este proceso. Así que me hice con un repositorio específico (https://github.com/mukul975/Anthropic-Cybersecurity-Skills), e hice la prueba. Y el resultado fue que aprobaba raspado en la seguridad de mi despliegue:

Resumen ejecutivo de los hallazgos. Buenas prácticas, pero aprobado raspado

Sí, estuve realizando las pruebas desde un móvil Android con un cliente SSH. Muy, muy divertido.

La parte más interesante es que el propio informe de ciberseguridad que solicité daba las claves para solucionar por problemas, que pude implementar en un nuevo prompt de corrección. Tras ello, y tras solucionar los hallazgos, la evaluación de la postura de ciberseguridad subió a 9.5/10, aunque tuve que trastear un poco para que la funcionalidad no se viera comprometida, ya que algunas de las remediaciones fueron un tanto agresivas.

Conclusión: vale la pena, pero con los ojos abiertos

OpenClaw es una herramienta genuinamente potente y genuinamente inmadura. El distancia entre lo que promete y lo que entrega en producción es real, pero se está cerrando rápido. Para una tarea de monitorización doméstica de bajo riesgo — vigilar una URL pública y enviarte un Telegram — el perfil de riesgo es manejable si haces el despliegue con cabeza.

Sin embargo, el punto más valioso del ejercicio no fue el agente en sí (que era, en realidad, apenas una excusa para probar la IA agéntica): fue más valioso proceso de analizar las fuentes antes de escribir una sola línea de configuración. Saber que la URL de la CIG-Ensino sigue un patrón anual predecible es más útil que cualquier prompt elaborado. Los agentes de IA son tan buenos como la información que les das y la claridad con la que defines la tarea. Y, con todo, esto no era el punto más valioso.

El punto que de verdad fue lo más valioso para mí fue el poder evaluar el uso de skills especializadas para Claude Code, que faciliten tareas específicas que pueden quedar fuera del alcance de tu conocimiento, o pasar por alto por simple despiste. Estas habilidades codificadas son algo que cambia del todo el juego.

Y como colofón, tengo un agente que me avisa, sin tener que andar preocupados por los despistes, con la fecha en la que se abre el plazo de solicitud de comisiones de conciliación para el curso 2026/27, que llegará en algún momento entre mayo y junio. El agente ya está vigilando. :mrgreen:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.