乐于分享
好东西不私藏

MCP 插件越装越笨?别再骂模型了,Agent 开发者的 4 个坑和 3 条自救清单

MCP 插件越装越笨?别再骂模型了,Agent 开发者的 4 个坑和 3 条自救清单

为什么工具、插件装得越多, AI 助手反而越笨——是模型不行,还是配置搭错了?

刚装 Cursor 、 Claude Code 时它写代码、查文档、改 bug 一气呵成。等你把浏览器、数据库、 Jira 、 Slack 、 Figma 全接进来,它开始犯低级错误:项目里有现成函数它要重写,问当前报错却去搜 Stack Overflow 。

读完能判断 AI 助手是工具不够还是工具过载,并拿到三条修剪清单。结论先说:这不是模型变笨,是工作环境被搞复杂了

工具数量上去之后,四个工程机制在同时拉低表现:工具选择悖论、工具描述相似度导致的路由混淆、长上下文工具清单污染、错误级联。对应的三条可执行结论是:工具数经验上限、按场景拆 Agent 而不是堆工具、工具描述写清「什么时候不用我」。 工具越多 AI 越笨不是玄学,是工具选择、上下文和错误传播机制在恶化;正确做法不是少用工具,而是按场景拆工具集、把工具描述当成 prompt 工程来做。

一、工具选择悖论

工具选择本质是分类任务——模型要在 N 个工具里判断这一步该调谁。候选少时不难,工具从 3 个变成 30 个、其中还有好几个功能重叠时,难度不是线性上升,而是跳变。

这跟人面对一本厚菜单是同一个道理。选项越多,越容易在两个差不多的菜之间犹豫,最后随便点一个。 Anthropic 在《 Building effective agents 》里专门讲过一个叫 routing 的工作流:复杂任务应先分类,把不同类型的输入分发给专门的 prompt 和工具集;他们的原意是,在一个 prompt 里为一种输入做优化,往往会损害它在其他输入上的表现。

让一个模型同时背着写代码、查数据库、回 Slack 、改 Figma 的所有工具,等于让一个后端工程师同时兼任 DBA 、客服和设计师。不是他不聪明,是每次决策都得先在一堆不相关选项里筛一遍

二、工具描述雷同

这个机制更隐蔽,也更普遍:你的工具描述长得太像了

我见过不止一份 MCP 配置,三个搜索工具的 description 分别是 "Search the web""Search online""Search for information"。数据来源、功能边界、适用场景一概没写。把这三个选项扔给模型,它靠什么区分?参数名?排序?运气?

Anthropic 在附录《 Prompt engineering your tools 》里说得很直白:工具的命名、描述和参数格式,应该像 prompt 本身一样被认真设计;工具定义和规格"值得和你给模型的整体 prompt 同等对待"。

这一条在实际配置里被严重低估。大多数人接 MCP 时直接抄默认 description ,能跑通就不动。但 description 是模型唯一的路由信号——它没法像人一样打开工具看一眼,只能凭这段文字判断这工具是干嘛的、什么时候该用。描述糊一层,选错率立刻上去。

三、长工具清单吃掉上下文

第三个机制更物理:每个工具的完整 schema (名字、描述、所有参数、类型、枚举值)都要随每次请求发给模型。二三十个工具挂上去,光工具定义就要吃掉好几千 token 。

直接后果是成本和延迟——你在为这次根本用不到的工具买单。更隐蔽的后果是注意力被稀释,也就是我称为「上下文污染」的现象:模型要先穿过一段巨大、同质化的工具定义,才看得到你真正的指令。这就像把"我要那个"的小纸条夹在 50 页菜单最后,纸条不是看不见,是被淹没了。

MCP 让"接工具"变得异常容易,也让"接太多工具"变得异常便宜——便宜到你在添加时不会停下来想一句:这个工具,这次任务真用得到吗

四、错误级联

最后这个机制最致命。 Agent 本质是个循环:调一个工具,拿回结果,基于结果判断下一步,再调下一个。 Anthropic 把这描述为"每一步从环境获取 ground truth 来评估进展"。

问题在于,这个 ground truth 本身也可能是错的

模型选错工具、拿到答非所问的返回,它不会天然知道是自己选错了——它会把错误返回当成事实继续往下推。你让它查某个用户的订单,它选错了全网搜索工具,搜到一篇无关博客,然后一本正经地基于那篇博客写一份"订单分析"。这种错误在工具少时偶发,工具多、描述又糊时变成高频。你看对话历史觉得它"越聊越傻",其实不是变傻,是第一脚踩空之后,后面每一步都在错误的地基上盖楼。

反方:数量不是元凶

得踩一脚刹车。数量不是根因,描述、 routing (按场景路由)和失败兜底才是。 官方 demo 和成熟产品挂十几个工具照样稳,真正决定表现的是三件事:工具描述是否可区分、有没有分层路由、失败之后有没有兜底。把锅全甩给"插件多了"是误诊。

Anthropic 在那篇文章的总结里给过三条原则:保持设计简单、透明展示规划步骤、精心打磨 agent-computer 接口( ACI )。第一条是"简单",不是"少"——简单意味着结构清晰、职责明确,而不是工具数量上的苦行僧主义。

所以"7 个工具"这类数字,可以当成社区经验法则提醒自己,但别当成有论文背书的硬阈值。最佳数量随模型版本、描述质量、任务类型变化很大;真正靠谱的判断方式,是在你自己的任务集上测——选错率上去了,就是该拆了

从工具选择悖论、工具描述相似度导致的路由混淆、长上下文工具清单污染、错误级联四个机制解释'工具越多 AI 越笨',并给出三条可执行结论:工具数经验上限、按场景拆 Agent 而非堆工具、工具描述要写清'什么时候不用我'

五个典型场景,对号入座

这四个机制不是抽象概念,在常见配置里几乎天天发生。下面几个场景,你大概率遇过至少一个。

场景一: AI 编程助手挂了 30 个 MCP 。 文件搜索、代码检索、全网搜索、内部 wiki 搜索的描述分别写着 "search files""search code""search the web""search docs",功能边界全靠模型猜。你让它"找一下项目里订单状态是怎么流转的",它先调全网搜索,再调文件搜索,再调代码检索,三个结果混在一起,最后给你一段半对半错的总结。这是工具描述雷同 + 选择悖论同时发作。

场景二:一个 Agent 同时背客服、运维、退款三套工具。 售后会话里它能查订单、能退款、能查数据库、能发 Slack 通知、还能搜知识库。用户只是问"我的快递到哪了",它从十几个工具里挑,挑中了退款接口还理直气壮。这是没有 routing——一个 prompt 优化多种输入,结果每种都做不好。

场景三:自动化脚本里塞了天气、新闻、日历、邮件一堆工具。 你让它"写今天的工作日报",它先调天气、再调新闻,最后才回到日历和邮件,输出里还硬塞了一段天气寒暄。工具本身没问题,问题是它们不该同时出现在这个会话里。

场景四:工具返回空或报错, Agent 硬着头皮编。 数据库查询超时返回空列表,它不报错,反而基于"没有订单"这个错误前提继续推理,告诉你"本月没有销售数据"。这是错误级联 + 缺失败兜底,四个机制里最危险的一种。

场景五:接了十几个 MCP server ,每个还带 5-8 个工具。 光是工具 schema 就占掉三四千 token ,每次对话你都在为这次用不到的工具买单,模型真正该注意的用户指令反而被挤到注意力边缘。这是长工具清单造成的上下文污染。

三条处方: Agent 工具集自检清单

如果你觉得上面的描述似曾相识,不用急着删插件。按这三条修剪,见效通常比换模型快。三条合起来,就是一份可复用的 Agent 工具集自检清单。

第一,按场景拆工具集,不要按"我装了什么"堆。 写代码的会话只留编码、文件、终端相关工具;做调研再开一个配置,加载浏览器、搜索、笔记类工具。把一个大而全的 Agent 拆成几个专门的 Agent ,本质就是 routing 。你不需要一个万能助手,你需要几个在各自场景里足够利落的助手。

第二,工具描述里写清"什么时候不要用我"。 这是投入产出比最高的一条。给每个功能相近的工具补上三件事:数据来源是什么、和相似工具的区别是什么、哪种请求不要调它。拿"搜索"类工具举例,坏描述是三个工具都叫 "Search the web";好描述长这样:

web_search:"Search the public web for up-to-date information. Do NOT use for code in the current repository—use codebase_search instead."
codebase_search:"Search files and code in the current repository. Do NOT use for external documentation—use web_search or docs_search."
docs_search:"Search the team internal wiki and API docs. Do NOT use for public web content."

三句话把边界钉死,模型基本不会再选错。这比你换一个更强的模型便宜得多。

第三,给 Agent 留一个停手的出口,做好失败兜底。 工具调用失败、返回为空、结果明显异常时,别让它硬着头皮往下编——要么回到规划步骤重新选工具,要么把不确定性抛给你。 Anthropic 在 agent 章节专门强调过 checkpoint 和停止条件:让 Agent 在该停的时候停,比让它在错误的路上狂奔重要得多。

AI 助手不是装得越多越强。它更像一张工作台:工具就那么几样、每样放在该放的位置、用完归位,干活才快。把它塞成一个什么都有的杂物间,再好的模型也转不开身。

下次你觉得它变笨了,先别急着换模型。打开你的插件列表,问自己一句:这些工具,这次任务真的都用得到吗?

——这可能是你今天能给它做的最便宜的一次升级。

参考资料

Building effective agents — Anthropic Engineering[1] — routing 工作流、 Agent 循环、工具 prompt 工程与三条设计原则。
What is MCP? — Model Context Protocol[2] — MCP 作为连接 AI 应用与外部工具的开放标准的官方介绍。