Phase 14 - Lesson 10

Bibliotecas de Habilidades y Aprendizaje Continuo (Voyager)

Voyager (Wang et al., TMLR 2024) trata el código ejecutable como una habilidad (skill). Las habilidades son nombradas, recuperables, componibles y refinadas por la retroalimentación del entorno. Esta es la arquitectura de referencia para las skills de Claude Agent SDK, skillkit y el patrón skill-library de 2026.

Tipo: Build Lenguajes: Python (stdlib) Prerrequisitos: Phase 14 · 07 (MemGPT), Phase 14 · 08 (Letta Blocks) Tiempo: ~75 minutos

Objetivos de Aprendizaje

  • Nombrar los tres componentes de Voyager (currículo automático, biblioteca de habilidades y mecanismo de prompting iterativo) y la función de cada uno.
  • Explicar por qué Voyager define el espacio de acciones como código, no como comandos primitivos.
  • Implementar una biblioteca de habilidades con stdlib que incluya registro, recuperación, composición y refinamiento guiado por fallos.
  • Mapear el patrón de Voyager en las skills de Claude Agent SDK de 2026 y el ecosistema skillkit.

El Problema

Los agentes que reconstruyen cada capacidad desde cero en cada sesión cometen tres errores:

  1. Desperdicio de tokens. Cada tarea vuelve a requerir el mismo razonamiento.
  2. Pérdida de progreso. Una corrección aprendida en la sesión A no se transfiere a la sesión B.
  3. Fallo en la composición de largo plazo. Las tareas complejas requieren jerarquías de capacidades; los prompts de un solo intento (one-shot prompts) no pueden expresarlas.

La respuesta de Voyager: tratar cada capacidad reutilizable como un bloque de código nombrado almacenado en una biblioteca, recuperable por similitud, componible con otras habilidades y refinado por la retroalimentación de la ejecución.

El Concepto

Tres componentes

Voyager (arXiv:2305.16291) estructura a un agente en torno a:

  1. Currículo automático (Automatic curriculum). Un proponedor guiado por la curiosidad elige la siguiente tarea basándose en el conjunto actual de habilidades del agente y el estado del entorno. La exploración es de abajo hacia arriba (bottom-up).
  2. Biblioteca de habilidades (Skill library). Cada habilidad es código ejecutable. Se añaden nuevas habilidades cuando una tarea tiene éxito. Las habilidades se recuperan mediante la similitud entre la consulta y la descripción.
  3. Mecanismo de prompting iterativo (Iterative prompting mechanism). En caso de fallo, el agente recibe errores de ejecución, retroalimentación del entorno y el resultado de la autoverificación, y luego refina la habilidad.

La evaluación en Minecraft (Wang et al., 2024): 3.3 veces más objetos únicos, herramientas de piedra 8.5 veces más rápido, herramientas de hierro 6.4 veces más rápido y un recorrido del mapa 2.3 veces más largo en comparación con las líneas base (baselines). Las cifras son específicas de Minecraft, pero el patrón se transfiere.

Espacio de acción = código

La mayoría de los agentes emiten comandos primitivos. Voyager emite funciones de JavaScript. Una habilidad es:

async function craftIronPickaxe(bot) {
  await mineIron(bot, 3);
  await mineStick(bot, 2);
  await placeCraftingTable(bot);
  await craft(bot, 'iron_pickaxe');
}

Compuesta a partir de sub-habilidades. Se almacena indexada por descripción y embedding. Se recupera como un programa, no como un prompt.

Esta es la skill de Claude Agent SDK de 2026: un bloque de código nombrado y recuperable, además de instrucciones que el agente carga bajo demanda.

Recuperación de habilidades

Nueva tarea: "hacer un pico de diamante" ("make a diamond pickaxe"). Agente:

  1. Genera el embedding de la descripción de la tarea.
  2. Consulta la biblioteca de habilidades para buscar las top-k habilidades más similares.
  3. Recupera craftIronPickaxe, mineDiamond, placeCraftingTable etc.
  4. Compone la nueva habilidad a partir de las primitivas recuperadas + nueva lógica.

Este es el patrón que implementan los recursos de MCP (Fase 13) y las skills de Agent SDK: recuperación sobre una superficie de conocimiento/código, acotada al alcance de la tarea actual.

Refinamiento iterativo

El bucle de retroalimentación de Voyager:

  1. El agente escribe una habilidad.
  2. La habilidad se ejecuta en el entorno.
  3. Se devuelve una de tres señales: success, error (con traza de pila/stack trace) o self-verification failure (fallo de autoverificación).
  4. El agente vuelve a escribir la habilidad utilizando la señal como contexto.
  5. Se repite el bucle hasta tener éxito o alcanzar el límite de rondas.

Este es Self-Refine (Lección 05) aplicado a la generación de código con verificación basada en el entorno. CRITIC (Lección 05) es el mismo patrón utilizando herramientas externas como verificador.

Currículo y exploración

El módulo de currículo de Voyager propone tareas como "construir un refugio cerca del lago" basándose en lo que el agente tiene y lo que aún no ha hecho. El proponedor utiliza el estado del entorno + el inventario de habilidades para elegir una tarea justo por encima de la capacidad actual: el punto ideal de exploración.

Para agentes de producción, esto se traduce en un operador de "qué falta": dada la biblioteca de habilidades actual y un dominio, ¿qué habilidades aún no estamos cubriendo? Los equipos suelen implementar esto manualmente como una revisión del currículo.

Dónde falla este patrón

  • Deterioro de la biblioteca de habilidades (Skill library rot). La misma habilidad añadida varias veces con descripciones ligeramente diferentes; mitigar mediante la deduplicación al escribir; la recuperación devuelve solo una.
  • Desviación de habilidades compuestas (Composed-skill drift). La habilidad padre depende de una habilidad hija que fue refinada. Gestione las versiones de las habilidades; un padre fijado a la v1 no debería adoptar mágicamente la v3.
  • Calidad de la recuperación. La recuperación vectorial sobre descrições de habilidades se degrada a medida que la biblioteca supera los pocos cientos de elementos. Suplemente con filtros de etiquetas y restricciones estrictas ("solo habilidades con category=tooling").

Constrúyalo

code/main.py implementa una biblioteca de habilidades con stdlib:

  • Skill — nombre, descripción, código (como cadena), versión, etiquetas, dependencias.
  • SkillLibrary — registrar, buscar (superposición de tokens), componer (ordenación topológica de dependencias) y refinar (incremento de versión en la actualización).
  • Un agente programado que registra tres habilidades primitivas, compone una cuarta, encuentra un fallo y la refina.

Ejecútelo:

python3 code/main.py

La traza (trace) muestra escrituras en la biblioteca, recuperación, composición, una ejecución fallida y un refinamiento a v2: el bucle de Voyager de principio a fin.

Úselo

  • Claude Agent SDK skills (Anthropic) — la referencia de 2026: cada habilidad tiene una descripción, código e instrucciones; se carga bajo demanda durante una sesión de agente.
  • skillkit (npm: skillkit) — gestión de habilidades multiagente para más de 32 agentes de programación de IA.
  • Bibliotecas de habilidades personalizadas — específicas del dominio (habilidades de SQL para agentes de datos, habilidades de Terraform para agentes de infraestructura). El patrón de Voyager se escala perfectamente.
  • OpenAI Agents SDK tools — en el extremo inferior; cada herramienta es una habilidad ligera.

Envíelo a Producción

outputs/skill-skill-library.md genera una biblioteca de habilidades con el formato de Voyager con registro, recuperación, control de versiones y refinamiento de código para cualquier entorno de ejecución de destino.

Ejercicios

  1. Añada un detector de ciclos de dependencia a compose(). ¿Qué sucede cuando la habilidad A depende de B, la cual depende de A? ¿Error o advertencia?
  2. Implemente la fijación de versión por habilidad (version pinning). Cuando una habilidad padre compone la hija crafting@1, un refinamiento a crafting@2 no debe actualizar silenciosamente al padre.
  3. Reemplace la recuperación por superposición de tokens con embeddings de sentence-transformers (or a BM25 stdlib impl). Mida la métrica retrieval@5 en una biblioteca de prueba de 50 habilidades.
  4. Añada un agente de "currículo": dada la biblioteca actual y una descripción del dominio, proponga 5 habilidades que falten. Ejecútelo semanalmente.
  5. Lea la documentación de skills de Claude Agent SDK de Anthropic. Porte la biblioteca de prueba al esquema de skill del SDK. ¿Qué cambia respecto a la descubribilidad (discoverability)?

Términos Clave

Término Lo que la gente dice Lo que realmente significa
Habilidade (Skill) "Capacidad reutilizable" Bloque de código nombrado + descripción, recuperable por similitud
Biblioteca de habilidades "Memoria de procedimientos del agente" Almacenamiento persistente de habilidades, con capacidad de búsqueda y composición
Currículo "Proponedor de tareas" Generador de metas de abajo hacia arriba impulsado por la brecha de capacidad actual
Composición "DAG de habilidades" Habilidades que invocan habilidades; ordenadas topológicamente al ejecutarse
Refinamiento iterativo "Bucle de autocorrección" Retroalimentación del entorno + errores + autoverificación que se integran en la siguiente versión
Espacio de acción como código "Acciones programáticas" Emitir funciones, no comandos primitivos, para comportamientos extendidos en el tiempo
Deduplicación al escribir "Colapso de habilidades" Descripciones casi duplicadas que se unifican en una sola habilidad canónica

Lecturas Adicionales

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).