스킬 라이브러리와 평생 학습(Skill Libraries and Lifelong Learning, Voyager)

Voyager(Wang et al., TMLR 2024)는 실행 가능한 코드를 스킬(Skill)로 다룹니다. 스킬은 이름이 있고, 검색 가능하며, 조합 가능하고, 환경 피드백(Environment Feedback)으로 개선됩니다. 이것이 Claude Agent SDK skills, skillkit, 그리고 2026년 스킬 라이브러리 패턴의 참조 아키텍처입니다.

유형: Build 언어: Python (stdlib) 선수 학습: Phase 14 · 07 (MemGPT), Phase 14 · 08 (Letta Blocks) 소요 시간: 약 75분

학습 목표

  • Voyager의 세 구성 요소인 자동 커리큘럼(Automatic Curriculum), 스킬 라이브러리(Skill Library), 반복 프롬프팅(Iterative Prompting)을 말하고 각 역할을 설명합니다.
  • Voyager가 행동 공간(Action Space)을 원시 명령(Primitive Command)이 아니라 코드로 두는 이유를 설명합니다.
  • 등록, 검색, 조합, 실패 기반 개선(Failure-driven Refinement)을 갖춘 표준 라이브러리(stdlib) 기반 스킬 라이브러리를 구현합니다.
  • Voyager 패턴을 2026년 Claude Agent SDK skills와 skillkit 생태계에 매핑합니다.

문제

모든 세션에서 모든 능력을 처음부터 다시 만드는 에이전트(Agent)는 세 가지 측면에서 잘못된 동작을 합니다.

  1. 토큰 낭비. 모든 작업이 같은 추론을 다시 끌어냅니다.
  2. 진전 손실. A 세션에서 배운 수정 사항이 B 세션으로 전이되지 않습니다.
  3. 장기 조합 실패(Long-horizon Composition Failure). 복잡한 작업은 능력 계층(Capability Hierarchy)을 필요로 합니다. 단발성 프롬프트만으로는 이를 표현할 수 없습니다.

Voyager가 제시하는 답은 재사용 가능한 각각의 능력을 라이브러리에 저장된 이름 있는 코드 조각으로 다루는 것입니다. 이 코드는 유사도로 검색할 수 있고, 다른 스킬과 조합할 수 있으며, 실행 피드백으로 개선됩니다.

사전 테스트

2문제 · 이 강의를 시작하기 전에 얼마나 알고 있는지 확인해보세요

1.Voyager 아키텍처의 세 가지 구성 요소는 무엇인가요?

2.Voyager가 행동 공간(action space)으로 원시 명령 대신 코드(JavaScript 함수)를 출력하는 이유는 무엇인가요?

0/2 답변 완료

개념

세 구성 요소

Voyager(arXiv:2305.16291)는 에이전트를 다음 구조로 구성합니다.

  1. 자동 커리큘럼(Automatic Curriculum). 호기심 기반 제안기(Curiosity-driven Proposer)가 에이전트의 현재 스킬 집합과 환경 상태를 바탕으로 다음 작업을 고릅니다. 탐색은 상향식(Bottom-up)으로 이루어집니다.
  2. 스킬 라이브러리(Skill Library). 각 스킬은 실행 가능한 코드입니다. 작업이 성공하면 새 스킬이 추가됩니다. 스킬은 질의와 설명의 유사도로 검색됩니다.
  3. 반복 프롬프팅 메커니즘(Iterative Prompting Mechanism). 실패하면 에이전트는 실행 오류, 환경 피드백, 자기 검증(Self-verification) 출력을 받아 스킬을 개선합니다.

마인크래프트(Minecraft) 평가(Wang et al., 2024)의 결과는 다음과 같습니다. 기준선 대비 고유 아이템은 3.3배, 석기 도구는 8.5배 빠르게, 철 도구는 6.4배 빠르게, 지도 이동 거리는 2.3배 길게 달성했습니다. 숫자는 마인크래프트에 특화되어 있지만, 패턴은 다른 도메인으로도 전이됩니다.

행동 공간 = 코드

대부분의 에이전트는 원시 명령을 출력합니다. 반면 Voyager는 JavaScript 함수를 출력합니다. 스킬은 다음과 같은 형태입니다.

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

스킬은 하위 스킬(Sub-skill)들로부터 조합됩니다. 설명과 임베딩(Embedding)을 키로 삼아 저장됩니다. 프롬프트가 아니라 프로그램으로 검색됩니다.

이것이 곧 2026년 Claude Agent SDK skill입니다. 에이전트가 필요할 때 불러오는, 이름과 검색 가능한 코드 그리고 지시문이 묶인 단위입니다.

스킬 검색

새 작업이 "다이아몬드 곡괭이를 만들어라"라고 해보겠습니다. 에이전트는 다음 단계를 수행합니다.

  1. 작업 설명을 임베딩으로 변환합니다.
  2. 스킬 라이브러리에서 유사도 상위 k개(top-k) 스킬을 질의합니다.
  3. craftIronPickaxe, mineDiamond, placeCraftingTable 등을 검색합니다.
  4. 검색된 원시 스킬과 새 로직을 조합해 새 스킬을 만듭니다.

이는 MCP 리소스(Resources)(Phase 13)와 Agent SDK skills가 구현하는 패턴입니다. 현재 작업에 맞게 범위가 제한된 지식/코드 표면(Knowledge/Code Surface) 위에서 검색을 수행하는 방식입니다.

반복 개선

Voyager의 피드백 루프는 다음과 같습니다.

  1. 에이전트가 스킬을 작성합니다.
  2. 스킬이 환경에서 실행됩니다.
  3. 세 가지 신호 중 하나가 돌아옵니다. success, error(스택 트레이스 포함), self-verification failure입니다.
  4. 에이전트는 그 신호를 맥락으로 삼아 스킬을 다시 작성합니다.
  5. 성공하거나 최대 라운드(Max Rounds)에 도달할 때까지 반복합니다.

이는 코드 생성에 적용된 Self-Refine(05강)이며, 환경 기반 검증(Environment-grounded Verification)이 결합되어 있다는 점이 핵심입니다. CRITIC(05강)은 외부 도구를 검증기(Verifier)로 사용하는 동일한 패턴입니다.

커리큘럼과 탐색

Voyager의 커리큘럼 모듈은 "호수 근처에 쉼터를 지어라" 같은 작업을 제안합니다. 에이전트가 이미 가진 능력과 아직 시도하지 않은 영역을 바탕으로 다음 작업을 고릅니다. 제안기는 환경 상태와 스킬 목록을 사용해 현재 능력보다 살짝 높은 수준의 작업을 고르며, 이 지점이 곧 탐색의 적정 지점(Exploration Sweet Spot)입니다.

프로덕션 에이전트(Production Agent)에서는 이 개념이 "무엇이 빠졌는가(What's Missing)" 운영 방식으로 변환됩니다. 현재 스킬 라이브러리와 도메인이 주어졌을 때, 아직 다루지 못하는 스킬은 무엇인가? 일반적으로 팀에서는 이를 커리큘럼 리뷰(Curriculum Review)로 수동 구현합니다.

이 패턴이 잘못되는 지점

  • 스킬 라이브러리 부패(Skill Library Rot). 같은 스킬이 조금씩 다른 설명으로 10번 추가되는 현상입니다. 쓰기 시점 중복 제거(Deduplication)를 추가하고, 검색은 하나만 반환하도록 만드세요.
  • 조합 스킬 표류(Composed-skill Drift). 부모 스킬이 의존하는 자식 스킬이 개선되면 부모도 의도치 않게 영향을 받습니다. 스킬에 버전을 붙이세요. v1에 고정된 부모가 v3을 자동으로 가져다 써서는 안 됩니다.
  • 검색 품질(Retrieval Quality). 스킬 설명 기반 벡터 검색은 라이브러리가 수백 개를 넘어가면 품질이 떨어집니다. 태그 필터와 강한 제약(예: "category=tooling인 스킬만")으로 보강하세요.

만들어보기

code/main.py는 표준 라이브러리(stdlib) 기반 스킬 라이브러리를 구현합니다.

  • Skill — name, description, code(문자열), version, tags, dependencies로 구성됩니다.
  • SkillLibrary — register, search(토큰 겹침), compose(의존성 위상 정렬), refine(업데이트 시 버전 증가)을 제공합니다.
  • 세 개의 원시 스킬을 등록하고, 네 번째 스킬을 조합하고, 실패한 뒤 개선하는 스크립트형 에이전트가 포함되어 있습니다.

실행 방법은 다음과 같습니다.

python3 code/main.py

실행 추적(Trace)은 라이브러리 쓰기, 검색, 조합, 실패한 실행, v2 개선까지의 흐름을 보여주며, Voyager의 루프를 처음부터 끝까지 재현합니다.

사용해보기

  • Claude Agent SDK skills(Anthropic) — 2026년 참조 형태입니다. 각 스킬은 설명, 코드, 지시문을 가지며 에이전트 세션 중 필요한 시점에 로드됩니다.
  • skillkit(npm: skillkit) — 32개 이상의 AI 코딩 에이전트를 지원하는 교차 에이전트 스킬 관리 도구입니다.
  • 사용자 정의 스킬 라이브러리(Custom Skill Libraries) — 데이터 에이전트용 SQL 스킬, 인프라 에이전트용 Terraform 스킬처럼 도메인 특화로 만듭니다. Voyager 패턴은 작은 규모에서도 잘 동작합니다.
  • OpenAI Agents SDK tools — 최하단 형태입니다. 각 도구는 가벼운 스킬에 해당합니다.

산출물 만들기

outputs/skill-skill-library.md는 임의의 대상 런타임(Target Runtime)에 대해 등록, 검색, 버전 관리, 개선이 연결된 Voyager 형태의 스킬 라이브러리를 생성합니다.

연습문제

  1. compose()에 의존성 순환 탐지기(Dependency Cycle Detector)를 추가하세요. 스킬 A가 B에 의존하고 B가 A에 의존하면 어떻게 처리해야 할까요? 오류로 처리하나요, 경고로 처리하나요?
  2. 스킬별 버전 고정(Version Pinning)을 구현하세요. 부모 스킬이 자식 crafting@1을 조합한다면, crafting@2로 개선되더라도 부모가 조용히 업그레이드되어서는 안 됩니다.
  3. 토큰 겹침 검색을 sentence-transformers 임베딩이나 표준 라이브러리 BM25 구현으로 교체해 보세요. 50개 스킬로 구성된 장난감 라이브러리(Toy Library)에서 retrieval@5를 측정합니다.
  4. "커리큘럼" 에이전트를 추가하세요. 현재 라이브러리와 도메인 설명이 주어지면 빠진 스킬 5개를 제안하도록 하고, 이를 매주 호출하세요.
  5. Anthropic의 Claude Agent SDK skill 문서를 읽고, 장난감 라이브러리를 SDK의 스킬 스키마(Skill Schema)로 옮겨보세요. 발견 가능성(Discoverability) 측면에서 무엇이 달라지나요?

핵심 용어

용어흔한 설명실제 의미
스킬(Skill)"재사용 가능한 능력"이름과 설명이 붙은 코드 조각으로, 유사도로 검색할 수 있다.
스킬 라이브러리(Skill Library)"방법을 기억하는 에이전트의 메모리"지속 저장되는 스킬 모음으로, 검색과 조합이 가능하다.
커리큘럼(Curriculum)"작업 제안기"현재 능력 격차가 구동하는 상향식 목표 생성기다.
조합(Composition)"스킬 DAG"스킬이 스킬을 호출하며, 실행 시 위상 정렬된다.
반복 개선(Iterative Refinement)"자기 수정 루프"환경 피드백, 오류, 자기 검증이 다음 버전에 반영된다.
행동 공간으로서의 코드(Action-space-as-code)"프로그램형 행동"시간적으로 긴 행동을 표현하기 위해 원시 명령이 아니라 함수를 출력한다.
쓰기 시점 중복 제거(Dedup on Write)"스킬 접기(Skill Collapse)"거의 같은 설명을 하나의 표준 스킬로 합친다.

더 읽을거리

실습 코드

이 강의의 실습 코드 1개

main
Code

산출물

이 강의에서 생성된 프롬프트, 스킬, 코드 산출물 1개

skill-library

Generate a Voyager-shaped skill library with registration, retrieval by similarity, compositional execution, and failure-driven refinement.

Skill

확인 문제

3문제 · 모두 맞추면 완료 표시가 가능합니다

1.스킬 라이브러리가 500개 스킬로 불어났고 검색 품질이 저하되었습니다. 새 작업에 관련 없는 스킬이 반환됩니다. 가장 유력한 원인과 해결책은 무엇인가요?

2.부모 스킬이 자식 스킬 'crafting@1'에 의존하는데 crafting이 'crafting@2'로 개선되었습니다. 이것은 어떤 위험을 만드나요?

3.Voyager의 반복 개선 루프는 05강의 Self-Refine 패턴과 어떤 관계가 있나요?

0/3 답변 완료

추가 문제 풀기

AI가 강의 내용을 바탕으로 새로운 문제를 생성합니다