Intermedio6 min de lectura

Del prompt al diseño agéntico: por qué más skills no hacen un mejor agente

Saber escribir un buen prompt ya no alcanza: ahora se diseñan comportamientos con multiagentes, memoria, skills y herramientas. Pero cada pieza ocupa contexto y agrega mantenimiento. La clave es separar lo que el agente debería hacer de lo que no puede dejar de hacer.

  • #agentes
  • #diseño-agéntico
  • #skills
  • #contexto
  • #axon

El prompt se quedó corto

Durante dos años, la habilidad que se vendía era escribir un buen prompt: el rol, el formato, los ejemplos, la instrucción precisa. Sigue sirviendo. Pero en las comunidades de desarrolladores la conversación se movió a otra cosa, y tiene sentido: un prompt describe una respuesta, y lo que ahora se construye son comportamientos.

A eso se le empieza a llamar diseño agéntico. En lugar de redactar un mensaje, diseñas un sistema:

  • Arquitecturas multiagente: varios agentes con roles distintos que se reparten un objetivo. Lo explico en sistemas multiagente.
  • Memoria persistente: lo que el agente aprendió ayer sigue disponible hoy.
  • Skills: manuales de instrucciones que el agente carga cuando la tarea los necesita.
  • Herramientas externas: APIs, bases de datos y servidores MCP que le permiten actuar y no solo responder.

Todo junto permite que agentes de inteligencia artificial resuelvan objetivos complejos sin que alguien los supervise en cada paso. Hasta aquí, el entusiasmo está justificado.

Cada pieza cuesta contexto

El problema aparece cuando se trata cada pieza como gratuita. No lo es. Todo lo que el agente tiene que saber para decidir vive en la misma ventana de contexto: la descripción de cada skill, el esquema de cada herramienta, lo que recuperó de memoria, el historial.

Un modelo no lee su contexto como una lista ordenada de instrucciones que va cumpliendo. Cada token compite por atención con todos los demás. Cuando el contexto crece, la instrucción importante no desaparece, pero pesa menos. Distintos estudios lo han medido desde 2025: el rendimiento de los modelos cae a medida que la entrada se alarga, incluso en tareas que con poco texto resuelven sin error.

Explícamelo como…

Los sistemas de skills bien hechos lo mitigan cargando al principio solo el nombre y la descripción de cada skill, y el manual completo cuando hace falta. Ayuda, pero no elimina el problema. Con diez skills, el agente elige bien. Con ochenta, las descripciones se parecen, dos skills dan instrucciones que se contradicen, y el agente carga la que no era o ninguna. El resultado se nota así:

  • el agente se vuelve pesado: más tokens por paso, más latencia, más costo;
  • se vuelve confuso: sigue la instrucción que estaba más cerca y no la más importante;
  • y se vuelve impredecible: el mismo pedido activa skills distintas según cómo se formule.

El harness que nadie quiere mantener

La reacción natural es envolver al agente en más código: validaciones, reintentos, enrutadores, un orquestador que vigila al orquestador. Ese envoltorio se llama harness, y es necesario. Pero crece rápido, y llega un punto en que tiene más lógica que el agente, sin tests que la cubran, y cada cambio de modelo lo rompe por un lado distinto.

Un harness complejo tiene además el defecto que conté en la puerta que no se puede eludir: sus controles viven dentro del programa, y todo lo que vive dentro del programa se puede no llamar. Una refactorización, un camino nuevo, una herramienta que alguien agregó sin pasar por el validador, y el control queda al lado.

Mi opinión: separa lo que debería hacer de lo que no puede dejar de hacer

Muchas skills y mucho harness son, en el fondo, el mismo error: usar un único mecanismo para dos tipos de instrucción que no se parecen.

El saber hacer. Cómo se redacta un informe, qué tono usar con un cliente, qué pasos seguir para revisar un contrato. Si el agente lo hace un poco distinto, no pasa nada grave. Esto va en el prompt o en una skill, y está bien que sea una sugerencia.

Lo que no puede pasar. Que un dato de un paciente salga sin filtro. Que el agente gaste más del presupuesto. Que una conjetura del modelo se guarde como un hecho. Si esto falla una vez de cada mil, falla. Esto no puede vivir en una skill, porque una skill es texto que el modelo puede no seguir.

Escribir en una skill "nunca envíes datos personales sin anonimizar" es pedirle al modelo que se porte bien. Lo más inteligente es mover las reglas del segundo tipo a un lugar donde no se puedan eludir: el compilador. Para eso construí AXON, un lenguaje de programación que compila para un modelo en lugar de para un procesador —AXON programming language en la documentación, axon-lang en la terminal—.

La regla que en una skill sería un párrafo, en AXON es parte del tipo:

type ClinicalNote compliance [HIPAA] { patient_id: String, text: String }

shield PHIShield {
  scan: [pii_leak]
  on_breach: halt
  severity: critical
  compliance: [HIPAA]
}

Si un endpoint recibe un ClinicalNote y no declara un shield que cubra HIPAA, el programa no compila. No ocupa contexto, porque el modelo no tiene que recordarla, y no depende de que el agente elija la skill correcta, porque no hay nada que elegir. La demo completa, con la salida real del compilador, está en HIPAA y LLM.

Conviene ser preciso con lo que esto logra. Un lenguaje no hace que el modelo acierte: la respuesta sigue siendo una muestra de una distribución. Lo que sí hace es acotar qué puede pasar con esa respuesta: qué tipo tiene que tener para seguir, por qué controles cruza antes de salir, cuánto puede gastar. La salida del modelo se vuelve confiable en el sentido que importa en producción: sabes qué no puede hacer, aunque no sepas qué va a decir.

Dónde va cada regla

Tipo de reglaEjemploDónde viveSi falla
Estilo y criterio"Resume en tres puntos, tono formal"PromptUna respuesta peor
Procedimiento experto"Cómo revisar un contrato de arrendamiento"SkillEl agente hace la tarea peor
Acceso al mundoConsultar el inventarioHerramienta o MCPEl agente no puede actuar
Invariante"La PHI nunca sale sin shield"Tipo y compiladorEl programa no compila

La cuarta fila es la que casi todos intentan resolver con las tres primeras. Y es la que más caro sale cuando falla.

Cómo adelgazar un agente

  1. Haz inventario de tus skills y tus instrucciones. Marca cuáles son saber hacer y cuáles son invariantes.
  2. Saca los invariantes del texto. Llévalos a un lugar que se verifique antes de ejecutar: tipos, esquemas de salida validados, y cuando el riesgo lo pide, un compilador que no deje pasar el programa.
  3. Fusiona o borra las skills que se pisan. Dos skills parecidas cuestan más que una algo más larga.
  4. Mide el contexto por paso. Si crece con cada skill que agregas, cada skill nueva hace un poco peores a las anteriores.
  5. Prefiere patrones simples antes que un multiagente. Un flujo fijo con un buen paso de modelo le gana a tres agentes que discuten.

Para llevarte

  • El diseño agéntico es real: multiagentes, memoria, skills y herramientas resuelven cosas que un prompt no puede.
  • Pero cada pieza ocupa contexto y compite por la atención del modelo. Más skills pueden dar un agente más pesado y más confuso.
  • Un harness grande tiene controles que se pueden rodear, y se vuelve difícil de mantener.
  • Separa el saber hacer (prompt y skills, pueden ser sugerencias) de lo que no puede pasar (tipos y compilador, no pueden serlo).