SkillWeaver: LLM 에이전트를 위한 조합형 스킬 라우팅 — 분해·검색·조합
목차
개요
LLM 에이전트는 점점 더 외부 스킬에 의존한다. 여기서 스킬은 언제 어떻게 호출할지에 대한 설명이 붙은, 재사용 가능한 도구 명세를 뜻한다. 이 논문은 Anthropic의 SKILL.md 명세를 따르며, 스킬은 구조화된 자연어 문서와 조합 가능성 메타데이터를 강조한다는 점에서 전통적 API와 구분된다.
실제 사용자 질의는 단일 스킬 선택이 아니라 여러 스킬의 조합을 요구하는 경우가 많다. 예를 들어 “데이터셋을 내려받고, 변환한 뒤, 시각 리포트를 만들어줘”라는 질의는 API 클라이언트, 데이터 처리기, 시각화 도구를 모두 필요로 한다.
저자들은 이를 조합형 스킬 라우팅(Compositional Skill Routing) 문제로 정식화한다. 복잡한 질의와 대규모 스킬 라이브러리가 주어졌을 때, 질의를 원자적 하위 작업으로 분해하고, 각 하위 작업에 적합한 스킬을 검색한 뒤, 실행 가능한 계획으로 조합하는 것이 목표다.
이를 위해 SKILLWEAVER 프레임워크와 COMPSKILLBENCH 벤치마크를 제안한다. SKILLWEAVER는 LLM 작업 분해기, FAISS 인덱싱 기반 바이인코더 스킬 검색기, 의존성 인지 DAG 플래너를 결합한 분해-검색-조합 구조다. COMPSKILLBENCH는 공개 MCP 생태계에서 수집한 2,209개 실제 스킬, 24개 기능 카테고리, 300개 조합형 질의로 구성된 최초의 전용 벤치마크다.
핵심 발견은 작업 분해 품질이 주된 병목이라는 점이다. 표준 LLM 분해는 단계 수준에서 카테고리 재현율 34.2%에 그친다. 저자들은 이를 해결하기 위해 검색 신호를 분해 입력으로 되먹이는 반복적 스킬 인지 분해(SAD)를 제안한다.
방법론
문제 정의: 조합형 스킬 라우팅
스킬 라이브러리는 N개의 스킬 집합 S로 정의된다. 각 스킬은 이름, 자연어 설명, 전체 명세 본문(지침·예시·설정), 그리고 분류 체계 C에서 온 기능 카테고리 집합으로 구성된 튜플이다.
조합형 스킬 라우팅의 목표는 세 가지를 산출하는 것이다. 첫째, 질의 q를 K개의 원자적 하위 작업으로 나눈 분해 결과를 만든다. 둘째, 각 하위 작업을 스킬에 대응시키는 스킬 할당을 수행한다. 셋째, 단계 간 의존성을 명시하는 실행 계획(DAG)을 구성한다.
이 라우팅 함수는 하위 작업과 스킬의 관련도, 그리고 스킬 간 호환성을 동시에 최적화한다. 목적 함수는 관련도 합과 호환성 합을 가중치 α로 절충하며, α는 0과 1 사이 값으로 관련도-호환성 트레이드오프를 조절한다. 일반적으로 이 결합 최적화는 다루기 어렵지만, 캐스케이드 파이프라인이 다루기 쉬운 근사를 제공하고 SAD가 이를 더 조인다.
SkillWeaver 3단계 파이프라인
SKILLWEAVER는 조합형 스킬 라우팅을 세 개의 직렬 단계로 구현한다.
1단계는 분해(Decompose)다. 지시 튜닝된 LLM이 복잡한 질의를 받아, 각각 정확히 하나의 스킬을 요구하는 원자적 하위 작업의 순서 리스트를 JSON 문자열 배열로 출력한다.
2단계는 검색(Retrieve)이다. 각 하위 작업에 대해 바이인코더(all-MiniLM-L6-v2, 384차원)로 상위 m개 후보를 코사인 유사도 기준으로 검색한다. 임베딩은 L2 정규화 후 FAISS로 색인되어 정확한 내적 검색을 수행한다. 표현 방식은 메타데이터만 쓰는 방식(이름 + 설명)과 본문 인지 방식(이름 + 설명 + 본문 앞 2000자)을 비교한다.
3단계는 조합(Compose)이다. 단계별 검색 후보가 주어지면, 검색 관련도와 단계 간 호환성을 결합한 목적으로 최종 스킬 할당을 선택한다. 호환성 점수는 입출력 타입 강제, 카테고리 Jaccard, 키워드 공기(共起)로 측정하며 가중치 α는 0.5다(0.3에서 0.7 구간에서 견고). 단계 간 의존성은 언어적 표지와 입출력 중첩으로 탐지하여, 가능한 경우 병렬 실행을 위한 DAG를 만든다.
현재 평가는 병목으로 식별된 분해-검색 단계에 집중한다. 조합 단계는 프레임워크의 구조적 완성으로 제안되며, 독립 평가에는 벤치마크에 없는 호환성 정답 주석이 필요하다. 다만 모의 실행기를 활용한 파일럿 연구에서 SAD 경로 계획은 76.7%의 체인 완료율을 달성해 종단 간 실행 가능성을 검증했다.
SAD: 반복적 스킬 인지 분해
핵심 통찰은 LLM 분해기가 스킬 메타데이터와 잘 정렬되지 않는 일반적 설명을 만든다는 점이다. SAD(Skill-Aware Decomposition)는 이를 교정하는 반복적 정렬 절차다.
반복 i의 분해 결과가 주어지면, 각 하위 작업에 대해 상위 후보를 검색하고 힌트 집합을 구성한 뒤 다시 분해한다. 2회차 분해 프롬프트는 1회차에서 검색된 상위 H개 스킬 이름 목록을 “관련 가능 스킬”로 제시하며 재분해를 유도한다.
이는 유한한 스킬 힌트 집합 공간에 대한 고정점 반복이다. 힌트 집합 크기가 H로 고정되고 각 원소가 유한한 스킬 라이브러리에서 뽑히므로 비둘기집 원리에 의해 수열은 반드시 순환·수렴한다. 실제로는 한 번의 반복이면 분해 정확도가 수렴하여, 2패스 변형이 기본값이 된다.
SAD는 초기 분해가 부실해도 작동한다. 부정확한 설명이라도 부분적 키워드 중첩으로 관련 스킬을 떠올리게 해, 어휘 다리(vocabulary bridge) 역할을 한다. 알고리즘은 힌트 수 H를 15, 수렴 임계값을 0.6으로 두고, 직전 힌트 집합과의 Jaccard가 임계값을 넘으면 수렴으로 보고 종료한다.
CompSkillBench 벤치마크
스킬 풀은 공개 MCP 서버 생태계(2,200개 이상의 커뮤니티 등록 서버)에서 구성된다. 큐레이션 파이프라인은 awesome-mcp-servers 레지스트리에서 2,228개 항목을 추출하고, 15자 미만이거나 배지 이미지 위주인 항목을 제거해 2,213개로 줄인 뒤, 동일 정규화 이름을 병합해 2,209개 고유 스킬을 얻는다. 레지스트리의 49개 세분 태그는 24개 표준 기능 카테고리로 매핑된다.
질의는 서로 다른 카테고리의 스킬을 조합한 다단계 작업으로 생성되며 세 난이도로 나뉜다.
난이도와 메트릭
질의는 쉬움(150개, 2스킬·2카테고리), 보통(100개, 3스킬·3카테고리), 어려움(50개, 4~5스킬·4~5카테고리)으로 구성되어 총 300개다. 각 질의에는 정답 하위 작업 설명, 정답 스킬 ID, 필요 카테고리, 순차 실행 순서가 붙는다.
평가 메트릭은 세 단위로 정의된다.
| 메트릭 | 정의 |
|---|---|
| Skill Recall@k | 정답 스킬이 상위 k 후보에 나타나는 단계 비율 |
| Category Recall@k | 정답 카테고리의 어떤 스킬이든 상위 k에 나타나는 단계 비율 |
| Chain Exact Match | 모든 단계가 정답 스킬을 정확히 고른 질의 비율 |
| Chaincat | 정답 카테고리 스킬을 고른 단계의 질의당 평균 비율 |
| Decomposition Accuracy (DA) | 예측 하위 작업 수가 정답과 정확히 일치한 질의 비율 |
DA는 엄격한 구조 메트릭이다. 정답이 3단계인 질의를 (유효한 중간 단계 하나를 더해) 4단계로 분해하면 DA는 0이 된다. 완화 DA(DA±1)는 예측 단계 수가 정답의 ±1 이내인 비율로, 모호한 작업 경계를 포착한다.
실험 설정에서 주 분해기는 Qwen2.5-7B-Instruct다(온도 0.1, top-p 0.9, 최대 256 토큰). 검색기는 all-MiniLM-L6-v2 바이인코더와 FAISS IndexFlatIP를 쓰며, 2,209개 스킬 색인 구성에 15초, 질의 배치당 검색 지연은 15ms 미만이다. 실험은 단일 NVIDIA V100-SXM2-16GB GPU에서 수행되며 7B 모델은 약 15GB VRAM에 전부 적재된다.
주요 결과
메인 결과와 병목 분석
2,209개 실제 MCP 스킬 풀에서 바닐라 분해는 CatR@1 34.2%, DA 51.0%(DA±1 71.3%)에 그친다. SAD는 단일 반복으로 DA를 67.7%로 끌어올린다(상대 +32.7%, Wilcoxon p 값 10^-6 미만). DA±1도 84.3%로 +18.2% 향상되며, CatR@1은 37.0%로 방향성 있는 개선을 보인다.
분해 품질이 병목임을 보이는 수치
| 방법 | DA | DA±1 | CatR@1 | CatR@10 |
|---|---|---|---|---|
| Vanilla (Qwen2.5-7B, 300쿼리) | 0.510 | 0.713 | 0.342 | 0.686 |
| + SAD (H=15) | 0.677 | 0.843 | 0.370 | 0.703 |
| LLM-Direct (qwen-max, 100스킬 노출) | 0.900 | 0.960 | 0.211 | – |
| ReAct-style (반복) | 0.000 | 0.040 | 0.154 | – |
| qwen-max + SAD (50쿼리) | 0.920 | 0.980 | 0.394 | – |
분해 정확도(DA)가 맞춰지면 검색 품질도 따라온다. DA=1로 조건화하면 CatR@1이 34.2%에서 41.2%로, CatR@10은 81.6%까지 오른다. 이는 분해 단위가 검색을 게이팅하는 캐스케이드 구조를 보여준다.
SAD의 기제는 어휘 정렬이 아니라 단위 교정이다. SAD는 바닐라가 단계 수를 틀린 75개 질의(25%)를 고치며, 이들에서 CatR@1이 23.6%에서 37.0%로 오른다. 반면 두 방법 모두 DA가 맞는 128개 질의에서는 CatR@1이 통계적으로 동일하다(41.7% 대 40.9%, p=0.97).
LLM-Direct 천장 추정도 의미가 크다. 7B보다 훨씬 큰 qwen-max에 정답 스킬을 포함한 100개 스킬 이름을 보여주고 직접 고르게 하면 DA는 90%로 높지만 CatR@1은 21.1%에 불과하다. 이는 프롬프트에 스킬을 나열하는 방식만으로는 검색 기반 라우팅을 따라잡지 못함을 뜻한다.
난이도별로도 SAD 개선은 일관된다. 쉬움은 DA 44.7%에서 63.3%(+41.6%), 보통은 66.0%에서 78.0%(+18.2%), 어려움은 40.0%에서 60.0%(+50.0%)로 향상된다. 가장 큰 상대 이득이 어려운 질의에서 나타나, 작업이 복잡할수록 분해가 중요하고 SAD가 더 가치 있음을 확인한다.
오라클 단계 수 제약 베이스라인은 기제를 더 분리한다. 정답 K를 프롬프트로 강제하면 DA 99.3%(사실상 완벽한 단위)에 CatR@1 39.8%로, SAD의 DA=1 조건 CatR@1 41.2%와 거의 일치한다(차이 1.4pp). 다만 오라클 단위에서도 CatR@1은 약 40%에서 정체되고 CatR@10은 79.1%에 이르러, 표현 수준의 독립적 병목이 남아 크로스인코더 재순위화를 동기화한다.
일반화·전이·컨텍스트 절감
SKILLWEAVER는 컨텍스트 윈도우 소비를 크게 줄인다. 2,209개 스킬을 모두 노출하면 약 884K 토큰이 들지만, SKILLWEAVER는 질의당 평균 2.9개 스킬만 노출한다.
컨텍스트 윈도우 소비 비교
| 전략 | 도구 수 | 추정 토큰 | 절감 |
|---|---|---|---|
| 전체 도구(나이브) | 2,209 | 884K | – |
| 상위 k 검색 | 10 | 4,000 | 99.5% |
| SKILLWEAVER (평균) | 2.9 | 1,160 | 99.9% |
전이 실험은 SAD가 미관측 스킬에도 일반화함을 보인다. 보안·코드 실행 2개 카테고리(191개 스킬)를 제거해 대상 카테고리가 색인에 없는 62개 질의에서도 SAD는 상대 DA +35.6%를 달성한다. 스킬 20%(442/2,209)를 무작위로 제거한 조건에서도 상대 DA +23.2%를 유지한다. 이는 SAD가 특정 스킬-힌트 매핑을 암기하는 것이 아니라 스킬 라이브러리의 구조적 어휘를 활용함을 확인한다.
교차 모델 검증도 같은 결론을 준다. Qwen2.5-14B는 바닐라 DA 32.0%에서 SAD DA 68.0%(+36pp)로 오르고, qwen-max는 바닐라 66.0%에서 SAD 92.0%로 오른다. 흥미롭게도 14B 바닐라 DA(32%)가 7B 바닐라(51%)보다 낮은데, 이는 14B의 과분해 경향(질의당 평균 4.72단계 대 정답 평균 2.94) 때문이다. SAD가 14B 평균을 3.18단계로 줄여, SAD가 용량 부스터가 아니라 단위 교정기임을 가장 깨끗하게 보여준다.
수렴 분석에서 1회차가 DA 향상의 대부분을 잡는다(51.3%에서 67.0%). CatR@1은 2회차에서 정점(38.9%)을 찍고 3회차에 36.1%로 하락하며, 힌트 Jaccard는 0.32→0.47→0.52로 단조 증가한다. 저자들은 지연이 중요한 배포에는 T=1을, 검색 정밀도가 중요할 때는 T=2를 기본값으로 권한다.
재순위화 파일럿은 남은 격차를 메우는 검증된 지렛대다. Qwen2.5-7B 리스트와이즈 재순위기가 SAD의 상위 10 후보를 재정렬하면 CatR@1이 37.1%에서 40.9%로 오른다(상대 +10.3%, p 값 0.01 미만). BGE-base 인코더 교체 점검에서는 CatR@1이 45.1%까지 올라, 인코더 선택이 직교 축임을 확인한다.
한계와 주의사항
벤치마크 질의는 카테고리에 매칭된 동사구로부터 템플릿 생성되어 체계적 패턴을 가진다. 스킬 풀 자체는 실제 2,209개 MCP 서버지만 질의는 합성 조합이다. 다만 이 풀의 CatR@1이 34~39%로 CatR@10 천장 70%보다 한참 낮다는 점은 템플릿 편향이 결과를 부풀리지 않음을 시사한다.
평가는 검색 중심이다. 올바른 스킬 카테고리가 검색되는지를 측정할 뿐, 정확한 스킬이 선택·실행되는지는 보지 않는다. 조합 단계는 구조적 완성으로 제안되며, 독립 평가에는 벤치마크에 없는 호환성 정답 주석이 필요하다.
SAD는 기본 단일 반복 모드에서 두 번의 LLM 추론 패스를 요구해, 분해 단계 벽시계 시간을 약 2배로 늘린다(검색 추가 지연은 15ms 미만). 주 평가는 Qwen2.5-7B를 쓰고 qwen-max로 50쿼리 교차 점검했으며, GPT-4o·Claude 등 더 넓은 다중 모델 평가는 향후 과제다. 또한 단일 오프더셸프 인코더를 쓰며 하위 작업-스킬 일대일 매핑을 가정하는데, 다대다 매핑 완화는 향후 과제로 남는다.
인간 스타일 질의에서 엄격 DA는 8.5~21.5%로 낮다. 이는 개방형 단계 경계 때문이며, 완화 DA±1(30.5~50.5%, 상대 +66%)이 실제 단위 품질을 더 잘 반영한다.
결론
이 논문은 단일 스킬 선택을 넘어, 분해·검색·조합을 통합하는 조합형 스킬 라우팅 문제를 정식화했다. SKILLWEAVER는 LLM 분해기, FAISS 바이인코더 검색기, 의존성 인지 DAG 플래너를 결합한 분해-검색-조합 프레임워크다. COMPSKILLBENCH는 2,209개 실제 MCP 스킬과 300개 조합형 질의로 이 과제를 평가하는 최초의 전용 벤치마크다.
핵심 발견은 분해 단위가 검색을 게이팅하는 1차 병목이라는 점이다. SAD는 검색 신호를 분해 입력으로 되먹여 DA를 51.0%에서 67.7%로(상대 +32.7%) 끌어올리며, 이 이득은 미관측 카테고리(+35.6%)와 무작위 보류 스킬(+23.2%)에도 일반화된다. SKILLWEAVER는 작업 시 컨텍스트를 99% 이상 줄이고, 리스트와이즈 재순위화 파일럿은 표현 수준 병목을 메우는 검증된 다음 지렛대를 제시한다.