Agente de IA especializado frente a navaja suiza universal: así recortamos la latencia de respuesta de 17 a 7,7 segundos
Sustituir un perfil de herramientas universal por un plugin especializado y estrecho, junto con la desactivación de los sondeos de entorno y de un paso de razonamiento innecesario, comprimió el prefijo del sistema de 15.266 a 1.424 tokens (10,7 veces menos) y aceleró la respuesta de 17 a 7,7 segundos. Todos los cálculos en los que el modelo de lenguaje tiende a equivocarse o a ceder ante la insistencia del usuario —las rachas de días de estudio, la acumulación de experiencia, el baremo de evaluación y la legalidad de las jugadas de ajedrez— se delegan a un plugin determinista en Python sobre SQLite. La estabilidad del progreso del usuario exige una normalización explícita del identificador de sesión; de lo contrario, la rotación de la clave de servicio al reiniciar la pasarela borra silenciosamente el historial del alumno.

- Reducción de la latencia de respuesta: la mediana bajó de ~17 s (13,3–20,6 s) a 7,7 s (7,25–7,93 s)
- Compresión del prefijo de entrada: de 15.266 a 1.424 tokens por petición (un ahorro de 10,7 veces sin modificar la lógica de negocio)
- Volumen del núcleo determinista: 766 líneas de un plugin de Python de gamificación sobre SQLite y 342 líneas de un verificador de notación
- Techo práctico del archivo de personalidad: unos 20.000 bytes para `SOUL.md` sin perder la atención del modelo hacia la mitad de la instrucción
La primera tentación al montar un agente de IA es darle acceso a todo de golpe: terminal, navegador, búsqueda web, archivos y servidores MCP. El golpe de realidad llegó con un simulador de ajedrez infantil, montado sobre un endpoint local `/v1/chat/completions`. El niño movía una pieza en el tablero y el comentario del entrenador tardaba 17 segundos en llegar, tiempo en el que el joven jugador ya había hecho otras dos jugadas.
El análisis mostró que, de los 15.266 tokens del prefijo de entrada, casi 14.000 correspondían a esquemas JSON de herramientas que nunca se invocaban en una partida de ajedrez, más la recopilación automática de datos del sistema operativo al arrancar. Es más, el agente con acceso a `execute_code` se lanzaba a escribir y ejecutar scripts en el sandbox ante la menor dificultad, convirtiendo una sola jugada en veinte llamadas a la API.
¿Cómo logran tres líneas de configuración comprimir el prompt 10,7
veces y eliminar la latencia?
Para transformar al pensativo generalista en un servicio rápido no hizo falta reescribir el código del plugin. Bastó con ajustar tres parámetros en la configuración del runtime:
1. Dejamos que la plataforma `api_server` cargara un único conjunto de herramientas de dominio (`[chess]`), eliminando los conjuntos de archivos y shell. 2. Desactivamos `environment_probe`, que en cada arranque interrogaba al host y volcaba una instantánea del entorno en el prompt del sistema. 3. Fijamos `reasoning_effort: none`: dado que los datos tácticos ya los calcula el motor Stockfish, el modelo no necesita construir una cadena de razonamiento antes de responder; su tarea es verbalizar con viveza un veredicto ya resuelto.
En mediciones de control con la caché precalentada, el tiempo de respuesta pasó de `13,3 / 17,3 / 20,6 s` a `7,25 / 7,74 / 7,93 s` (mediana de 7,7 s), y el consumo de tokens de entrada cayó 10,7 veces, de 15.266 a 1.424.
Recortar el conjunto de herramientas ahorra tokens y protege al sistema de iniciativas propias en la terminal, mientras que la eliminación del paso de razonamiento innecesario es lo que aporta la mayor ganancia en segundos. Un detalle importante: los perfiles de herramientas para la mensajería y para el planificador (`cron`) se definen por separado; si se olvida incluir el plugin en la sección `cron`, el envío matutino se pondrá a buscar datos leyendo archivos sin avisar.
¿Cómo dividir la personalidad en dos capas y delegar el cálculo de las
rachas a SQLite?
La personalidad de un agente especializado se diseña en dos niveles: un bloque de activación breve en `config.yaml` (10–15 líneas) define la asignación de tareas (`tutor_state` al inicio del diálogo, `tutor_record_lesson` tras el ejercicio), mientras que el reglamento de tono y pedagogía vive en `SOUL.md`. El techo práctico de ese archivo es de unos 20.000 bytes (en mis bots oscila entre 6,7 y 19,9 KB): si se infla más, el modelo pierde de vista las reglas que quedan en el medio.
El modelo de lenguaje interpreta emociones de maravilla, pero calcula mal fechas, puntos de experiencia y notas según baremos. En el tutor de idiomas, toda la matemática de la gamificación (10 niveles de 0 a 8.000 XP, hitos de rachas de 3 a 365 días, 15 insignias y cristales) se delega a un plugin de Python de 766 líneas sobre SQLite:
```python if last_date == today: streak = max(1, prev_streak) elif last_date == yesterday or not last_date: streak = (prev_streak + 1) if last_date == yesterday else 1 else: gap_days = (parse_date(today) - parse_date(last_date)).days if freezes > 0 and gap_days == 2: freezes -= 1 streak = prev_streak + 1 events.append({"type": "freeze_used", "msg": "Заморозка спасла серию дней!"}) else: if prev_streak > 1: events.append({"type": "streak_reset", "old": prev_streak}) streak = 1 ```
La herramienta devuelve un array `events`, y en el propio campo `description` del esquema JSON de la función se incrusta una directiva: felicitar con emoción al alumno por cada evento de `events` y no inventar nada por cuenta propia sobre el saldo. De forma análoga, en el simulador de negociaciones de compras, un baremo de 4 módulos con una escala de 40 puntos cada uno verifica mediante código los marcadores clave (riesgos, verificación de datos, negociación), para que el participante no pueda «convencer» a la red neuronal de que le suba la nota.
¿Por qué el progreso se borraba silenciosamente tras cada reinicio y
cómo se cura el framework?
En las primeras versiones, el motor pasaba al controlador de la herramienta un parámetro `task_id` igual al ID de la sesión actual, y yo lo usaba como clave primaria del alumno. Al pulsar `/new` o reiniciar el contenedor se generaba un nuevo `task_id`, y la persona veía una hoja en blanco en lugar de 30 días de estudio. El problema se resolvió con un resolutor de clave en dos niveles que extrae mediante una expresión regular el ID permanente de la cuenta a partir de `telegram:dm:<user_id>` o lo contrasta con `sessions.json`, garantizando una clave estable `tg:<id>`.
Para no tener que reconstruir una imagen de varios gigabytes por cada librería nueva, el despliegue instala los paquetes con `pip install --target` en el volumen `data/pylibs`, aplica `chown -R` para el usuario sin privilegios de root y limpia `__pycache__`. Y allí donde el transporte base no incluía el teclado inferior o se tragaba el comando `/start`, unos parches autorreparadores de `bootstrap.sh` comprueban al arrancar los anclajes en el código del adaptador, insertan el bloque necesario y verifican el archivo mediante `py_compile`.
El patrón de «el plugin determinista calcula, el modelo especializado interpreta» está integrado en la base de [Nomad AI](https://nomadnet.ai) y del entorno en la nube [agent.nomadnet.ai](https://agent.nomadnet.ai). Los laboratorios para construir este tipo de agentes están disponibles en [Hamidun Academy](https://academy.hamidun.com) (72 horas de prueba gratis), y los plugins ya listos junto con más de 370 habilidades los analizamos en [Vibe Club](https://hamidun.com/club).
- 27 oct 2026Cloudflare reduce un 68% el coste de la revisión de código con IA: de $2,43 a $0,77
- 27 oct 2026S3AC devuelve el crítico al RL para LLM: ganancias desde 1.5B hasta 397B parámetros
- 27 oct 2026Del prompting a la ingeniería de contexto: 6 técnicas prácticas que ahorran horas de ajuste de respuestas
- 26 oct 2026Thinking-in-Bets: los agentes fijan sus afirmaciones antes de la crítica y claudican menos
Preguntas frecuentes sobre la noticia
¿Cómo logran tres líneas de configuración comprimir el prompt 10,7 veces y eliminar la latencia?
Para transformar al pensativo generalista en un servicio rápido no hizo falta reescribir el código del plugin. Bastó con ajustar tres parámetros en la configuración del runtime: 1. Dejamos que la plataforma `api_server` cargara un único conjunto de herramientas de dominio (`[chess]`), eliminando los conjuntos de archivos y shell. 2. Desactivamos `environment_probe`, que en cada arranque interrogaba al host y volcaba una instantánea del entorno en el prompt del sistema. 3. Fijamos `reasoning_effort: none`: dado que los datos tácticos ya los calcula el motor Stockfish, el mod
¿Cómo dividir la personalidad en dos capas y delegar el cálculo de las rachas a SQLite?
La personalidad de un agente especializado se diseña en dos niveles: un bloque de activación breve en `config.yaml` (10–15 líneas) define la asignación de tareas (`tutor_state` al inicio del diálogo, `tutor_record_lesson` tras el ejercicio), mientras que el reglamento de tono y pedagogía vive en `SOUL.md`. El techo práctico de ese archivo es de unos 20.000 bytes (en mis bots oscila entre 6,7 y 19,9 KB): si se infla más, el modelo pierde de vista las reglas que quedan en el medio. El modelo de lenguaje interpreta emociones de maravilla, pero calcula mal fechas, puntos de exp
¿Por qué el progreso se borraba silenciosamente tras cada reinicio y cómo se cura el framework?
En las primeras versiones, el motor pasaba al controlador de la herramienta un parámetro `task_id` igual al ID de la sesión actual, y yo lo usaba como clave primaria del alumno. Al pulsar `/new` o reiniciar el contenedor se generaba un nuevo `task_id`, y la persona veía una hoja en blanco en lugar de 30 días de estudio. El problema se resolvió con un resolutor de clave en dos niveles que extrae mediante una expresión regular el ID permanente de la cuenta a partir de `telegram:dm:<user_id>` o lo contrasta con `sessions.json`, garantizando una clave estable `tg:<id>`. Para no
Delegate Deep Research, Coding & Multi-Step Workflows to Nomad Agent
Deploy autonomous task execution with Nomad Agent (agent.nomadnet.ai) — automated web research, data synthesis, code generation, and MCP tool orchestration.
Lo esencial de la IA — una vez por semana
Siete historias que de verdad importaron, elegidas a mano. Sin ruido ni notas de prensa.
¡Listo! Revisa tu correo para la confirmación.