SkillSeek: Revisiting Agent Skill Retrieval at Marketplace Scale
Guanqun Yang, Wenlong Zhang, Tian Shi, Ping Wang
cs.IR, cs.AI, cs.MA
2026-09-30
标准两段检索(BGE 双编码器+交叉编码器)在 SkillsBench 89 任务上追平 LLM 检索循环,单次成本从 51.3 降到 27.5 美元。
Anthropic 的 Agent Skills 把可复用的操作知识打包成 SKILL.md 目录,开源聚合最新爬到 238,180 个技能,瓶颈从写技能变成了选技能。两个直接办法都不行:把整个技能池塞进上下文,192 个技能的规模下 pass rate 就已回到无技能基线,token 开销还涨 59%;技能的增益又非线性,一个相关技能 +17.8%,两三个 +18.6%,四个以上掉回 +5.9%。文献里的标准答案(Liu et al.)把选择交给 agent 自己:BM25 与稠密向量融合检索,agent 在决策循环里改写查询、翻看候选,再把多个技能合成一个任务专属的新技能。合成的优势真实存在,池子里没有单一够用的技能时静态检索器给不了;代价是每个任务都要为这套循环付 LLM token。
SkillSeek 是确定性两段检索器,检索环节零 LLM 调用,配方全是现成件:
索引文本是设计里最讲究的一处。光有名字和描述,交叉编码器依赖的文件类型等表层形式经常缺失;把正文整段拼进去,实现细节的噪声又稀释判别信号。消融结果:Tool-REX v3 比纯名字+描述高 2.2%,再拼上正文反而掉 3.2%。
4×11 网格:两个技能池(192 精选 / 34K 市场)、两个 backbone(Qwen3.5-397B-A17B、MiniMax-M2.7)、11 种方法,89 个 SkillsBench 任务,OpenHands harness,每次试用上限 30 轮、600 秒,pytest 渐绩分落在 [0,1]。
| 方法 | 192/Qwen3.5 | 192/MiniMax | 34K/Qwen3.5 | 34K/MiniMax |
| 无技能 | 0.352 | 0.267 | 0.352 | 0.267 |
| bm25 | 0.430 | 0.387 | 0.420 | 0.346 |
| SkillSeek(bge-reranker-v2-m3) | 0.480 | 0.371 | 0.409 | 0.346 |
| SkillSeek(Qwen3-Reranker-0.6B) | 0.430 | 0.353 | 0.442 | 0.341 |
| liuhybrid | 0.470 | 0.378 | 0.417 | 0.335 |
| liurefined | 0.397 | 0.344 | 0.442 | 0.329 |
裸 BM25 在四个设置中的三个打平或超过 liurefined,唯一落后的 34K/Qwen3.5 由 Qwen3-Reranker-0.6B 补齐(同为 0.442)。
成本差距更大(34K/Qwen3.5):liurefined 单次试用总开销 51.30 美元,liuhybrid 39.43 美元,SkillSeek 27.54 美元,离无技能基线的 27.41 美元不到五毛。SkillSeek 检索侧全程 CPU,单次 lookup 中位 1.1 秒,零 LLM token。
机制解释是第一段召回天花板。192 池上 BM25 的 R@5 已到 0.546,重排器只能再挤 3.5%;34K 池 BM25 只有 0.391,重排器加 5.4%,换上 Tool-REX 索引加到 9.9%。轻池配轻排、重池配重排,同一规律在 Liu et al. 自己两个变体的对比里也成立。重排器规模在 0.6B 附近就饱和(8B 只多 0.7%),开源还压过试过的商业 API:Qwen3-Reranker-8B 0.450 对 Voyage rerank-2.5 的 0.435。
对做 agent 系统的人,这是「先跑便宜基线」的直接证据:技能检索这一步,标准 IR 配方应该是默认起点,省下的是每个任务都要付的检索 token。论文还贡献了一个诊断指标 helpfulness gap,即命中 gold 技能的任务 pass rate 减未命中任务的差值。Voyage rerank-2.5 召回率最高(top-5 达 72.2%)却出现负 gap(-0.025),检回它认定的 gold 反而拖累 agent;原因是 agent 约三分之二的任务直接押注 rank-1,排第一的技能好不好用比 gold 在不在 top-5 更要紧。LLM 介入的循环该留给它不可替代的场景:池子里没有单一够用的技能、需要合成时。
作者自己列得很实:主网格每格只跑一次,重跑一组的标准差约 1%,2% 以内的差距全算噪声,所以结论只敢说「观察到持平」而非统计等价;全部结果出自 89 个任务、一个 OpenHands harness、两个 backbone,terminal、web、SWE agent 场景是否成立未验证;失效 trial 记 0 分,压低所有方法的绝对值。对照系统也有两点存疑。liurefined 是作者复现的,且复现出符号翻转:Liu et al. 原文说 refinement 在 192/Qwen3.5 上 +4.1%,这里测出 -7.3%,对照强度本身要打折。另外单任务分析显示,34K 池上最大的损失(-0.50 到 -0.80)全部来自词面近孪生技能的误排序,失败模式是排序精度不是覆盖,这恰是 LLM 循环可能真正占优的地方,论文没有对此做正面比较。