Gavel은 고정 LLM의 순전파에서 스킬 라우팅 신호를 읽는 라우터다.
The Router Within: Eliciting Native Skill Routing from a Frozen LLM
무엇인가
이 논문은 LLM 에이전트가 스킬 라이브러리에서 올바른 스킬을 고르는 문제를 다룬다. 스킬은 SKILL.md 같은 문서로 지시·스크립트·참조 파일을 묶어 에이전트의 파라미터 지식을 확장하지만, 잘못 고르면 스킬이 없을 때보다 나빠진다. 현재 배포된 하네스는 progressive disclosure로 모든 스킬의 이름과 설명을 시스템 프롬프트에 미리 넣고 에이전트가 읽을 스킬을 정하게 한다. 이 방식은 라이브러리 크기에 비례해 컨텍스트를 오염시키고, Codex는 스킬 메타데이터를 컨텍스트의 2%로 제한해 나머지를 버린다. 검색 파이프라인은 선택을 외부 임베딩·재순위 모델로 옮겨 컨텍스트를 덜어내지만, 선택이 에이전트 능력에서 분리되어 에이전트가 좋아져도 함께 좋아지지 않는다. 논문은 에이전트 능력으로 선택하되 컨텍스트 밖에서 선택하는 세 번째 설계를 제안한다. 요구사항은 스킬 텍스트가 선택 전까지 컨텍스트에 들어가지 않을 것, 별도 모델을 두지 않을 것, 새 스킬 설치 시 학습을 돌리지 않을 것이다.
어떻게 동작하나
제안 방법 Gavel은 Glance And Verdict from a frozen LLM의 약자로, 고정된 에이전트 LLM의 순전파에서 라우팅 신호를 읽는다. 1단계 glance는 모델에 새 어텐션 헤드를 이식한다. 학습되는 것은 질의 사상 W_q와 키 사상 W_s 두 개뿐이고 값 경로는 없다. 두 사상은 중간층 ℓ*의 은닉 상태를 읽는데, 이 층은 행렬 엔트로피가 바닥나는 압축 골짜기로 약 70% 지점이며 Qwen3-32B에서는 64개 블록 중 45번 블록 뒤다. 작업 토큰의 상태는 디코딩 중 이미 나오므로 q_i ∝ W_q h_ℓ*(x)_i로 질의가 되고, 스킬은 설치 시 고정 프롬프트 r(s)로 한 번 순전파해 모든 토큰의 키 d_j^s ∝ W_s h_ℓ*(r(s))_j를 저장한다. 라우팅 시 각 작업 토큰은 모든 스킬에 대해 m_i(s)=max_j <q_i, d_j^s>를 계산한다. 학습은 다중 양성 대조 손실로 m_bar(s)=mean_i m_i(s)를 점수화하며, 그래디언트는 은닉 상태에서 멈춰 W_q와 W_s만 갱신되고 백본은 고정된다. 라우팅 때는 평균 대신 각 토큰이 상위 k개 스킬에만 투표하는 g(s|x)=1/Σw_i Σ_{i:s∈T_i} w_i m_i(s)를 쓴다. k는 라이브러리가 100개 이상이면 10이다. 스킬 뱅크는 ε-커버로 압축해, 버려진 키가 남은 키의 ε 거리 안에 있게 하고 max_D <q,d> - ε ≤ max_C <q,c> ≤ max_D <q,d>를 보장한다. farthest-first traversal로 만들며, 논문의 설정에서 ε=0.83, 뱅크 약 8.5배 축소, 모든 벤치마크에서 최대 1.6점 손실이다.
무엇과 다른가
2단계 verdict는 glance가 만든 후보 목록만 다시 본다. glance 점수가 최고점에서 Δ=0.133 이내인 후보, 평균 약 9개만 verdict를 받는다. 각 후보에 대해 설치 때의 r(s) 뒤에 작업 x를 이어 붙여 순전파하고, 두 신호를 읽는다. 하나는 작업의 평균 로그우도 L(s|x)=1/|x| Σ_i log p_M(x_i | r(s), x_<i)로 스킬이 작업을 얼마나 잘 예상하는지 측정한다. 다른 하나는 고정 질문 u를 덧붙여 이 스킬이 작업에 필요한 것을 제공하는지에 대한 예/아니오 로그오즈 V(s|x)=log Σ_{t∈Y} p_M(t|r(s),x,u) - log Σ_{t∈N} p_M(t|r(s),x,u)다. 인과 마스크 때문에 한 번의 순전파로 두 신호를 얻는다. 최종 결정은 S(s|x)=g(s|x)+αL(s|x)+γV(s|x)로 세 전문가를 곱으로 융합한다. 논문은 세 점수를 같은 log p(s|x)의 추정으로 해석하며, α=1.0, γ=0.025를 쓴다. 어느 전문가든 다른 둘이 용인한 후보를 거부할 수 있고, 선택 전까지 스킬 텍스트는 컨텍스트에 들어가지 않는다.
어떻게 쓰나
실험은 Qwen3-32B를 고정 백본으로 쓴다. W_q와 W_s는 총 7.9M 파라미터이고, SkillRet의 학습 질의 51,104개와 공개 저장소에서 모은 9,084개 스킬로 한 번만 학습한다. 이후 다른 라이브러리에서는 모든 수치가 제로샷이다. 작성된 작업에서의 평가는 세 벤치마크다. SkillRet 공식 테스트 v1은 Claude가 쓴 질의 4,997개와 홀드아웃 스킬 6,660개, SRA-Bench는 6개 추론·코딩 벤치마크에서 온 작업과 웹에서 모은 26,262개 스킬 중 층화 표본 861개, Eval-Core는 실제 task.md 질의 75개와 두 풀의 78K 문서다. 점수는 전체 라이브러리에서 단일 선택 스킬이 작업에 맞는지 보는 Hit@1이고, 골드 라벨이 충분한 스킬을 놓치는 문제 때문에 GPT-5.6 Sol이 양방향 비교로 판정한다. 비교 대상은 Qwen3-Embedding-8B로 20개를 추린 progressive disclosure, SkillRouter의 0.6B 임베더+0.6B 재순위기, Qwen3-Embedding-8B+Qwen3-Reranker-8B, BM25, SKILLRET-Emb-0.6B다. Gavel 전체 파이프라인은 가장 강한 파이프라인을 SkillRet에서 3.8점, SRA-Bench에서 13.4점, Eval-Core에서 1.3~2.7점 앞선다. glance 단독도 SRA-Bench와 Eval-Core에서 가장 강한 검색 단계이고 SkillRet에서는 최고 임베더와 1점 이내다. 외부 파이프라인은 1.2B~16B 파라미터를 더하지만 7.9M의 Gavel 격차를 좁히지 못한다.
전제와 한계
작성된 작업뿐 아니라 롤아웃 중간에 스킬 필요가 생기는 경우도 평가한다. SkillTraj는 372개 시뮬레이션 에이전트 궤적 벤치마크로, 각 궤적은 도구 호출이 있는 다중 턴 대화이고 홀드아웃 SkillRet 라이브러리 6,660개 중 필요한 스킬이 등장하는 지점을 표시한다. 네 시나리오는 사용자 요청 116개, 도구 결과 106개, 에이전트 계획 105개, 잘못된 스킬 복구 45개다. Gavel은 모든 시나리오에서 가장 강한 다른 시스템보다 8.6~21.9점 앞선다. SkillRouter는 모든 시나리오에서 더 큰 미학습 Qwen3 모델보다 뒤처지고, 큰 모델들도 전체 다중 턴 노이즈보다 깨끗한 마지막 메시지에서 더 나은 경우가 많다. 실제 배포 실험에서는 mini-swe-agent bash 하네스에 Gavel을 통합하고, SkillTraj 결정 지점을 양성으로, 스킬이 필요 없던 궤적을 음성으로 삼아 언제 스킬 호출을 시도할지 게이트를 학습한다. Skill-Use의 177개 실행 작업과 79개 스킬에서 progressive disclosure 프롬프트를 쓰면 Qwen3-32B는 스킬을 거의 읽지 않지만, Gavel을 넣으면 같은 고정 모델이 90% 넘게 올바른 스킬을 발동한다. 나머지 5%에서는 라우터가 아무것도 로드하지 않는다. 이는 Codex의 여러 오픈 프런티어 모델과 매 궤적마다 스킬을 로드하는 검색·재순위 파이프라인보다 앞선다. 백본이 커질수록 Gavel도 좋아지며, 0.6B Gavel이 32B progressive disclosure를 이기고, Qwen3.8-27B에서도 메타데이터 메뉴 선택은 같은 백본 Gavel보다 12.2점 뒤진다.
절제 실험은 각 구성요소의 기여를 분리한다. glance를 Jina-ColBERT-v2로 바꾸면 후보 선정과 융합 점수 g를 대체하는데, 모든 벤치마크에서 크게 진다. 이는 토큰 쌍 비교 방식이 아니라 에이전트 LLM의 더 나은 압축에서 이득을 얻는다는 뜻이다. 전문가 곱을 포인트와이즈 재순위로 바꿔 V만 쓰면 자기 보고 판단의 보정 문제로 SkillRet의 모호한 질의를 뒤섞는다. verdict를 스킬 본문 생성으로 바꿔 스킬 본문의 평균 로그우도를 쓰면 본문이 작업에 맞는지보다 모델 자신의 문체와 닮았는지를 반영해, 보정이 α를 0으로 밀어내고 모든 벤치마크에서 뒤진다. verdict를 progressive disclosure로 바꿔 glance의 20개 후보를 메뉴로 주면 Eval-Core에서는 가장 근접하지만, 올바른 스킬 구분에 긴 절차적 본문이 필요한 SRA-Bench에서는 크게 뒤진다. 20개 전체 본문을 메뉴에 넣어도 격차는 닫히지 않는다.
개발자 관점에서 이 논문은 스킬 라우팅을 컨텍스트에 메타데이터를 쌓는 문제로 보지 않고, 에이전트 자체의 은닉 상태를 읽는 경량 라우터로 푸는 설계를 제시한다. 새 스킬은 설치 시 한 번의 순전파와 ε-커버 압축만 필요하고, 선택 전까지 스킬 텍스트가 컨텍스트에 들어가지 않아 라이브러리 규모와 컨텍스트 오염의 결합을 끊는다. 다만 전제가 있다. 고정 백본의 중간층 은닉 상태에 접근할 수 있어야 하고, W_q와 W_s는 한 번 학습하지만 백본이 바뀌면 전이 효과를 확인해야 한다. 평가는 골드 라벨이 불완전해 GPT-5.6 Sol 판정에 의존하고, SkillTraj는 실제 로그가 아니라 GPT-5.6 Sol이 쓰고 Claude 심사자가 통과시킨 시뮬레이션 궤적이다. verdict는 평균 약 9개 후보에만 적용되고, ε-커버 압축은 최대 1.6점 손실을 감수한다. 라이브 하네스의 게이트도 SkillTraj 기반 양성·음성으로 학습된다. 논문은 같은 read-out이 도구, 메모리, MCP 서버 라우팅에도 쓰일 수 있는지는 열린 질문으로 남긴다.