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:
- Desperdicio de tokens. Cada tarea vuelve a requerir el mismo razonamiento.
- Pérdida de progreso. Una corrección aprendida en la sesión A no se transfiere a la sesión B.
- 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:
- 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).
- 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.
- 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:
- Genera el embedding de la descripción de la tarea.
- Consulta la biblioteca de habilidades para buscar las top-k habilidades más similares.
- Recupera
craftIronPickaxe,mineDiamond,placeCraftingTableetc. - 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:
- El agente escribe una habilidad.
- La habilidad se ejecuta en el entorno.
- Se devuelve una de tres señales:
success,error(con traza de pila/stack trace) oself-verification failure(fallo de autoverificación). - El agente vuelve a escribir la habilidad utilizando la señal como contexto.
- 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
- 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? - Implemente la fijación de versión por habilidad (version pinning). Cuando una habilidad padre compone la hija
crafting@1, un refinamiento acrafting@2no debe actualizar silenciosamente al padre. - 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.
- 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.
- 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
- Wang et al., Voyager (arXiv:2305.16291) — el artículo original sobre bibliotecas de habilidades
- Claude Agent SDK overview — skills como la facilitación de producto de 2026
- Anthropic, Building agents with the Claude Agent SDK — skills y subagentes en la práctica
- Madaan et al., Self-Refine (arXiv:2303.17651) — el bucle de refinamiento subyacente a Voyager