Phase 14 - Lesson 10

Bibliotecas de Habilidades e Aprendizado ao Longo da Vida (Voyager)

Voyager (Wang et al., TMLR 2024) trata o código executável como uma habilidade (skill). As habilidades são nomeadas, recuperáveis, compostas e refinadas pelo feedback do ambiente. Esta é a arquitetura de referência para as skills do Claude Agent SDK, o skillkit e o padrão skill-library de 2026.

Tipo: Build Linguagens: Python (stdlib) Pré-requisitos: Phase 14 · 07 (MemGPT), Phase 14 · 08 (Letta Blocks) Tempo: ~75 minutos

Objetivos de Aprendizado

  • Nomear os três componentes do Voyager — currículo automático (automatic curriculum), biblioteca de habilidades (skill library) e mecanismo de prompting iterativo (iterative prompting) — e a função de cada um.
  • Explicar por que o Voyager torna o espaço de ação um código, e não comandos primitivos.
  • Implementar uma biblioteca de habilidades em stdlib com registro, recuperação, composição e refinamento direcionado por falhas.
  • Mapear o padrão do Voyager nas skills do Claude Agent SDK de 2026 e no ecossistema skillkit.

O Problema

Agentes que reconstroem cada capacidade do zero em cada sessão erram em três aspectos:

  1. Desperdício de tokens. Cada tarefa exige novamente o mesmo raciocínio.
  2. Perda de progresso. Uma correção aprendida na sessão A não é transferida para a sessão B.
  3. Falha na composição de longo prazo. Tarefas complexas exigem hierarquias de capacidade; prompts de uso único (one-shot prompts) não conseguem expressá-las.

A resposta do Voyager: tratar cada capacidade reutilizável como um bloco de código nomeado armazenado em uma biblioteca, recuperável por similaridade, combinável com outras habilidades e refinado por feedback de execução.

O Conceito

Três componentes

O Voyager (arXiv:2305.16291) estrutura um agente em torno de:

  1. Currículo automático (Automatic curriculum). Um propositor guiado pela curiosidade escolhe a próxima tarefa com base no conjunto atual de habilidades do agente e no estado do ambiente. A exploração é de baixo para cima (bottom-up).
  2. Biblioteca de habilidades (Skill library). Cada habilidade é um código executável. Novas habilidades são adicionadas quando uma tarefa é bem-sucedida. As habilidades são recuperadas por similaridade entre a consulta (query) e a descrição.
  3. Mecanismo de prompting iterativo (Iterative prompting mechanism). Em caso de falha, o agente recebe erros de execução, feedback do ambiente e a saída da autoverificação, e então refina a habilidade.

A avaliação no Minecraft (Wang et al., 2024): 3,3x mais itens únicos, ferramentas de pedra 8,5x mais rápidas, ferramentas de ferro 6,4x mais rápidas e travessia de mapa 2,3x mais longa em comparação com as linhas de base (baselines). Os números são específicos do Minecraft, mas o padrão se transfere.

Espaço de ação = código

A maioria dos agentes emite comandos primitivos. O Voyager emite funções JavaScript. Uma habilidade é:

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

Composta a partir de sub-habilidades. Armazenada e indexada por descrição e embedding. Recuperada como um programa, não como um prompt.

Esta é a skill do Claude Agent SDK de 2026: um bloco de código nomeado e recuperável, além de instruções que o agente carrega sob demanda.

Recuperação de habilidades

Nova tarefa: "fazer uma picareta de diamante" ("make a diamond pickaxe"). Agente:

  1. Gera o embedding da descrição da tarefa.
  2. Consulta a biblioteca de habilidades em busca das top-k habilidades semelhantes.
  3. Recupera craftIronPickaxe, mineDiamond, placeCraftingTable etc.
  4. Compõe a nova habilidade a partir das primitivas recuperadas + nova lógica.

Este é o padrão que os recursos do MCP (Fase 13) e as skills do Agent SDK implementam: recuperação sobre uma superfície de conhecimento/código, limitada ao escopo da tarefa atual.

Refinamento iterativo

O loop de feedback do Voyager:

  1. O agente escreve uma habilidade.
  2. A habilidade é executada no ambiente.
  3. Um de três sinais retorna: success, error (com stack trace) ou self-verification failure (falha de autoverificação).
  4. O agente reescreve a habilidade usando o sinal como contexto.
  5. Repete o loop até obter sucesso ou atingir o limite de rodadas.

Este é o Self-Refine (Lição 05) aplicado à geração de código com verificação baseada no ambiente. O CRITIC (Lição 05) é o mesmo padrão com ferramentas externas atuando como o verificador.

Currículo e exploração

O módulo de currículo do Voyager propõe tarefas como "construir um abrigo perto do lago" com base no que o agente possui e no que ele ainda não fez. O propositor usa o estado do ambiente + o inventário de habilidades para escolher uma tarefa que esteja logo acima da capacidade atual — a zona ideal de exploração.

Para agentes em produção, isso se traduz em um operador do tipo "o que está faltando": dada a biblioteca de habilidades atual e um domínio, quais habilidades ainda não estamos cobrindo? As equipes normalmente implementam isso manualmente como uma revisão de currículo.

Onde este padrão falha

  • Degradação da biblioteca de habilidades (Skill library rot). A mesma habilidade é adicionada 10 vezes com descrições ligeiramente diferentes. Adicione uma etapa de eliminação de duplicatas (deduplication) na escrita; a recuperação deve retornar apenas uma.
  • Desvio de habilidade composta (Composed-skill drift). A habilidade pai depende de uma habilidade filha que foi refinada. Controle a versão das habilidades; um pai fixado na v1 não deve adotar magicamente a v3.
  • Qualidade de recuperação. A recuperação vetorial sobre descrições de habilidades se degrada conforme a biblioteca cresce além de algumas centenas de itens. Complemente com filtros de tags e restrições rígidas ("apenas habilidades com category=tooling").

Construa

code/main.py implementa uma biblioteca de habilidades com stdlib:

  • Skill — nome, descrição, código (como string), versão, tags, dependências.
  • SkillLibrary — registrar, pesquisar (sobreposição de tokens), compor (ordenação topológica de dependências) e refinar (incremento de versão na atualização).
  • Um agente programado por script que registra três habilidades primitivas, compõe uma quarta, encontra uma falha e realiza o refinamento.

Execute:

python3 code/main.py

O rastreamento (trace) mostra escritas na biblioteca, recuperação, composição, uma execução malsucedida e um refinamento para v2 — o loop do Voyager de ponta a ponta.

Use

  • Claude Agent SDK skills (Anthropic) — a referência de 2026: cada habilidade possui uma descrição, código e instruções; carregada sob demanda durante uma sessão do agente.
  • skillkit (npm: skillkit) — gerenciamento de habilidades multiagente para mais de 32 agentes de codificação de IA.
  • Bibliotecas de habilidades personalizadas — específicas de domínio (habilidades SQL para agentes de dados, habilidades Terraform para agentes de infraestrutura). O padrão Voyager é perfeitamente dimensionável.
  • OpenAI Agents SDK tools — no nível mais básico; cada ferramenta é uma habilidade leve.

Envie para Produção

outputs/skill-skill-library.md gera uma biblioteca de habilidades no formato do Voyager com registro, recuperação, versionamento e refinamento integrados para qualquer ambiente de execução de destino.

Exercícios

  1. Adicione um detector de ciclo de dependência a compose(). O que acontece quando a habilidade A depende de B que depende de A? Erro vs aviso?
  2. Implemente a fixação de versão por habilidade (version pinning). Quando uma habilidade pai compõe a filha crafting@1, um refinamento para crafting@2 não deve atualizar silenciosamente o pai.
  3. Substitua a recuperação por sobreposição de tokens por embeddings do sentence-transformers (ou uma implementação BM25 em stdlib). Meça a métrica retrieval@5 em uma biblioteca de testes com 50 habilidades.
  4. Adicione um agente de "currículo": dada a biblioteca atual e uma descrição do domínio, proponha 5 habilidades que estejam faltando. Execute-o semanalmente.
  5. Leia a documentação do Claude Agent SDK de skills da Anthropic. Portar a biblioteca de testes para o esquema de skill do SDK. O que muda em relação à descoberta de habilidades (discoverability)?

Termos-Chave

Termo O que dizem O que realmente significa
Habilidade (Skill) "Capacidade reutilizável" Bloco de código nomeado + descrição, recuperável por similaridade
Biblioteca de habilidades "Memória de procedimentos do agente" Armazenamento persistente de habilidades, pesquisável e combinável
Currículo "Propositor de tarefas" Gerador de metas de baixo para cima impulsionado pela lacuna de capacidade atual
Composição "DAG de Habilidades" Habilidades invocando habilidades; ordenadas topologicamente na execução
Refinamento iterativo "Loop de autocorreção" Feedback do ambiente + erros + autoverificação integrados na próxima versão
Espaço de ação como código "Ações programáticas" Emitir funções, e não comandos primitivos, para comportamentos estendidos no tempo
Deduplicação na escrita "Colapso de habilidades" Descrições quase duplicadas colapsam em uma única habilidade canônica

Leituras Adicionais

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