侧边栏壁纸
博主头像
一笑痕

仙人之下我无敌,
仙人之上一换一。

  • 累计撰写 67 篇文章
  • 累计收到 7 条评论

给 agent 的工具列表抽稀之后,路由试探次数掉到六分之一

2026-9-19 / 0 评论 / 3 阅读

给 agent 的工具列表抽稀之后,路由试探次数掉到六分之一

72 比 12。同样 4 个任务,工具列表从 26 个砍到 6 个,agent 找对工具要做的路由试探从 72 次掉到 12 次。数据来自对照实验(脚本 tools/verify-tool-list-route.py,桩模型固定输出序列驱动),先摆表,后解释。

对照数据

抽稀前: 工具 26 个,4 个任务路由试探合计 72 次
抽稀后: 工具 6 个,4 个任务路由试探合计 12 次

单工具位置对照(按字母序的下标 + 1 = 最少试探次数):
  bash         全表第  1 位 → 抽稀表第 1 位
  grep         全表第 22 位 → 抽稀表第 2 位
  read_file    全表第 24 位 → 抽稀表第 4 位
  write_file   全表第 26 位 → 抽稀表第 6 位
  spell_fix    全表第 25 位 → 抽稀表第 5 位
  list_thin    全表第 23 位 → 抽稀表第 3 位

C(26,6) = 230230 种抽稀组合,比 6 个工具全排列 720 种还多

怎么读

72 次和 12 次的比值是 6,恰好等于工具数之比(26 对 6 大约 4.3 倍,但试探次数的分布是线性的:每次试探固定消耗一次调用,命中率取决于目标工具在列表里的位置)。抽稀表里 6 个工具都是高频工具,平均位置 3.5,全量表里它们的位置平均 16.8。位置差 4.8 倍,试探次数差 6 倍,两者对得上。

位置对照那一块里最有意思的是 bash:全表第 1 位,抽稀表还是第 1 位。它没从抽稀里得到任何位置收益,这提示抽稀的收益不是均匀的,本来就在头部的工具几乎不变,尾部的高频工具才是最大赢家。write_file 从第 26 位提到第 6 位,试探次数直接砍到不足四分之一。

最后一行是给做工具设计的人看的:230230 种抽稀组合远超 720 种排列。想靠穷举找最优工具子集是不现实的,只能按调用频次和任务类型手工分表,或者按场景动态挂载。

这个实验的边界

桩模型是写死的序列:每个任务按「读一遍列表、猜一个工具,错了就重试」的固定策略推进,不调用任何真实模型。所以 72 和 12 这两个绝对值没有意义,有意义的是比值背后的机制:列表越长,头部位置的稀缺性越贵,目标工具的期望试探次数越大。真实 LLM 的路由策略比固定试探聪明,也可能被工具描述的措辞带偏到固定策略到不了的地方,这些都没实测。

现在的做法

不猜模型怎么选工具,直接控制变量:会话里只挂当前任务需要的 6 个以内工具,其余的按需再挂。这个做法在两类场景里有明显收益,多轮循环类任务(试探次数按轮数倍增)和上下文紧张的长会话(工具列表本身也占 token)。工具描述写得再好,也架不住列表里有 20 个「可能相关」的邻居在分散注意力。

    🤞 分享