SkillSeek이 LLM 에이전트 스킬 검색을 표준 IR 레시피로 되돌린다

SkillSeek: Revisiting Agent Skill Retrieval at Marketplace Scale

HF Daily2609.38822

Guanqun Yang, Wenlong Zhang, Tian Shi2026-09-30조회 1

무엇인가

Anthropic의 Agent Skills는 재사용 가능한 절차적 노하우를 SKILL.md 디렉터리로 묶는다. 시작 시 약 30토큰의 메타데이터만 로드하고, 관련 있다고 판단될 때 본문을, 필요할 때 번들 스크립트를 불러오는 점진적 로딩 방식이다. 문제는 풀의 크기다. 공개 스킬 집계는 47,150개, 55,315개, 118,000개를 넘어 최근 크롤에서는 주요 배포 플랫폼 전체에서 238,180개로 늘었다. 이제 병목은 스킬을 만드는 일이 아니라 고르는 일이다. 그렇다고 풀 전체를 컨텍스트에 넣는 건 답이 아니다. 192개짜리 작은 풀에서도 모든 스킬을 로드하면 통과율은 스킬 없음 기준선에 머물고 토큰 비용만 59% 늘었다. 선별된 부분집합도 공짜가 아니다. 관련 스킬 1개는 +17.8%, 2~3개는 +18.6%를 올리지만 4개 이상은 +5.9%로 퇴행하는 비단조 곡선을 그린다. 검색기는 그럴듯한 후보를 띄우는 게 아니라 어떤 스킬을 넣을지 정확히 골라야 한다.

어떻게 동작하나

기존 문헌의 표준 답은 선택을 에이전트 자신에게 맡기는 것이다. Liu 등(2026b)은 34,000개 마켓플레이스 풀에서 BM25와 밀집 임베딩(Qwen3-Embedding-4B)을 상호순위융합으로 묶고, 에이전트가 자기 결정 루프 안에서 질의를 다시 쓰고 후보를 탐색해 과제별로 정제된 스킬을 합성하게 한다. 이 설계의 강점은 실재한다. Terminal-Bench 2.0의 텐서 병렬화 사례에서 에이전트는 torch-tensor-parallel과 pytorch-research를 검색한 뒤, 전자의 가중치 샤딩과 후자의 커스텀 autograd.Function 패턴을 합친 새 스킬을 만들어낸다. 정적 검색기가 낼 수 없는 결과다. 대가는 매 과제마다 LLM 토큰을 쓴다는 점이고, 이들은 큐레이션 조건에서 마켓플레이스 조건으로 갈 때 Claude Opus 4.6의 통과율이 51.2%에서 40.1%로 떨어지고 정제 단계가 48.2%까지 회복시킨다고 보고한다.

무엇과 다른가

SkillSeek은 이 선택 문제를 결정적 2단계 검색으로 되돌린다. 1단계는 BGE-base 바이인코더(1억 1천만 파라미터, 768차원)가 질의를 색인된 모든 스킬과 코사인 유사도로 채점해 상위 20개를 뽑는다. 2단계는 bge-reranker-v2-m3 크로스인코더(5억 6천8백만 파라미터)가 20개의 (질의, 스킬) 쌍을 함께 재순위화해 상위 5개를 돌려준다. 색인 텍스트는 스킬 이름과 설명에 Tool-REX v3 4태그 구조 프로필(파일 형식, 주 연산, 보조 연산 2개)을 덧붙인 것이고, 이 태그는 LLM이 오프라인에서 생성한다. SKILL.md 본문은 색인하지 않고 필요할 때만 가져온다. 예컨대 pdf-excel-diff 스킬은 pdf, compare, excel, xlsx 태그가 붙어 크로스인코더가 필요로 하는 표면형을 복원한다. 배포는 MCP 서버로 하며 skill_lookup(query, k), skill_load(name), skill_list() 세 도구를 노출하고, 서버 측 X-Skill-Method 헤더로 에이전트 도구 스키마를 바꾸지 않고 검색 백엔드를 교체할 수 있다.

어떻게 쓰나

실험은 89개 과제의 SkillsBench 벤치마크에서 이뤄졌다. 풀은 두 종류다. 192개 큐레이션 풀은 SkillsBench 코퍼스로, 89개 과제에 233개 SKILL.md 파일이 붙고 이름 기준 중복 제거 후 192개가 남는다. 34K 마켓플레이스 풀은 Liu 등의 공개 수집본이다. 백본은 Qwen3.5-397B-A17B가 주력, MiniMax-M2.7이 보조다. 하네스는 OpenHands SDK를 썼고, 풀·백본·방법의 4×11 격자를 단일 트라이얼로 평가했다. 각 트라이얼은 30턴, 600초 벽시계로 제한되며 결정적 pytest 검증기가 과제별 검사를 묶어 0~1의 부분 점수를 준다. 통과율은 89개 과제의 평균 점수이고 미완료 트라이얼은 0으로 계산한다.

전제와 한계

핵심 결과는 결정적 방법이 LLM 매개 루프와 관측상 동등하다는 것이다. 순수 BM25만으로도 네 설정 중 세 곳에서 liu_refined보다 높은 통과율을 기록했다. 192/Qwen3.5에서 0.430 대 0.397, 192/MiniMax에서 0.387 대 0.344, 34K/MiniMax에서 0.346 대 0.329다. 유일하게 liu_refined가 앞선 34K/Qwen3.5(0.442 대 0.420)에서는 Qwen3-Reranker-0.6B 변형이 0.442로 동일한 값을 냈다. 최고 크로스인코더는 나머지 설정에서도 liu_refined 이상이었고, 가장 큰 차이는 192/Qwen3.5의 +0.083(0.480 대 0.397)이다. 흥미로운 건 풀 크기에 따라 승자가 바뀐다는 점이다. 작은 큐레이션 풀에서는 가벼운 방법이 이기고, 큰 마켓플레이스 풀에서는 무거운 재순위화와 LLM 정제가 따라붙는다. 이 분리는 Liu 등의 자체 두 변형 안에서도 나타난다. 192 풀에서 liu_hybrid가 liu_refined를 Qwen3.5에서 +7.3%(0.470 대 0.397), MiniMax에서 +3.4%(0.378 대 0.344) 앞서지만, 34K/Qwen3.5에서는 liu_refined가 +2.5%(0.442 대 0.417)로 역전한다.

절제 실험은 34K/Qwen3.5 설정에서 세 가지 설계 선택을 흔든다. 색인 텍스트가 설계 공간을 지배한다. Tool-REX v3를 이름+설명으로 바꾸면 통과율이 2.2% 떨어지고, 원본 SKILL.md 본문을 덧붙이면 3.2% 더 떨어진다. 1단계 후보 깊이는 20이 가장 좋았고, 절반으로 줄이면 2.1%, 두 배나 다섯 배로 늘리면 3.5~4.5% 손해였다. 에이전트에 주는 상위 k는 k=1이 k=5 대비 2.0% 손해였고 k=3, 5, 10은 1% 안에서 동률이었다. 분석은 1단계 재현율 천장으로 패턴을 설명한다. 192 풀에서 BM25의 R@5는 0.546이고 BGE-base가 이를 따라잡으며 크로스인코더는 3.5%만 더한다. 34K 풀에서는 BM25 0.391, BGE-base 0.379로 천장과 멀고 재순위화가 5.4%, Tool-REX v3 색인에서는 9.9%까지 더한다. 재순위화 모델을 키우는 건 0.6B 근처에서 평탄해진다. Qwen3-Reranker는 0.6B 0.442, 4B 0.430, 8B 0.450으로 파라미터를 13배 늘려 +0.7%를 얻는다. 상위 5개 재현율이 가장 높은 Voyage rerank-2.5(72.2%)는 유용성 격차가 음수(−0.025)였다. 에이전트가 약 65% 과제에서 1순위 후보를 그대로 쓰기 때문에, 정답이 상위 5개 안에 있느냐보다 1순위가 실제로 도움이 되느냐가 중요하다는 진단이다. 비용은 결정적이다. SkillSeek의 바이인코더와 크로스인코더는 CPU에서 skill_lookup 호출당 중앙값 약 1.1초(p95 1.9초)로 돌고, 트라이얼당 총지출은 27.54달러로 스킬 없음 기준선 27.41달러와 50센트 차이다. liu_hybrid는 에이전트 루프에 44% 할증을 붙여 39.43달러, liu_refined는 정제 서브에이전트 비용을 더해 51.30달러가 된다.

개발자 입장에서 이 논문의 실무적 메시지는 명확하다. 에이전트 스킬 검색의 기본값으로 표준 IR 레시피를 먼저 두고, LLM 매개 정제는 결정적 방법이 못 미치는 영역에 예비로 남겨두라는 것이다. SkillSeek은 MCP 서버라 Claude Code, Codex CLI, OpenHands처럼 MCP를 지원하는 하네스에 소스 수정 없이 붙는다. 색인에는 본문이 아니라 이름, 설명, 구조화 태그를 넣어야 하고, 에이전트에는 상위 3~5개를 주는 게 적절하다. 검색을 CPU에서 결정적으로 돌리면 과제마다 LLM 토큰을 쓰지 않아 비용이 스킬 없음 기준선 근처에 머문다. 다만 상위 5개 재현율 같은 검색 지표만 보면 안 된다. 정답이 목록에 있어도 1순위가 쓸모없으면 통과율이 떨어질 수 있다는 유용성 격차 진단을 함께 봐야 한다. 마켓플레이스 규모에서 설명이 거의 쌍둥이인 스킬들이 서로를 밀어내는 순위 실패도 검색기가 검증기 인식 신호를 갖지 못해 생기는 문제로, 이 영역이 LLM 정제가 실제로 값을 하는 지점이다.

저자들이 밝힌 한계도 분명하다. 각 격자 칸은 89개 과제 단일 트라이얼이고, 한 설정을 세 번 반복했을 때 표준편차가 약 1%였으므로 2% 미만 차이는 노이즈로 취급한다. 그래서 이들은 자신들의 결과를 '해결된 우위'가 아니라 '관측상 동등'이라고 부른다. 완료되지 못한 트라이얼은 0점으로 계산해 모든 방법의 절대 통과율을 낮추고 방법 간 격차를 압축한다. MiniMax-M2.7에서는 OpenRouter 네트워크 오류가 과제 절반가량을 때려 절대 수치가 5~10% 떨어진다. 192 풀은 모든 과제에 관련 스킬이 있도록 손수 큐레이션된 것이라 작은 풀 수치에는 선택 편향이 섞인다. 1단계 대안 비교는 R@5 재현율만으로 이뤄졌고, 이는 논문 결론이 말하는 양과 다르다. 무엇보다 모든 결과는 SkillsBench 89개 과제, OpenHands 하네스, 두 백본, 두 풀에 한정된다. 터미널·웹·소프트웨어 엔지니어링 에이전트는 검색 요구가 다르고, 16,129개 공개 스킬과 4,392개 평가 질의를 짝지은 SkillRet 같은 독립 벤치마크에서 이 레시피가 전이되는지는 열린 문제로 남겨뒀다.