给编码 Agent 装专用搜索工具,是否一定比内置网页搜索更可靠?我们的答案是:不一定。工具决定能抓到什么,模型决定如何查证,而评测者自己的核验链路也可能出错。
2026 年 7 月,我们让 Tavily、Exa、Brave Search、DuckDuckGo、TinyFish 和不安装额外 MCP 的裸模型完成同一组七道题。题目覆盖官方定价、动态排行榜、论文与项目对应关系、不存在仓库识别、中文检索和多源交叉验证。评分只代表当时的接口、模型与网络环境。
先说结论
Tavily 和 Exa 在这组任务里最均衡;裸模型基线排在中上游,证明内置搜索并不天然弱;DuckDuckGo 是成本最低的可用方案;Brave Search 在无法抓取动态页面时表现得较保守;TinyFish 的轻量接口能完成基础题,但深层核验能力受限。
比排名更重要的是:所有候选都识别出了刻意编造的仓库名,没有在最基础的“查无此物”题上硬编。真正拉开差距的是三件事——能否找到一手来源、能否识别页面的时间变化、能否发现多个官方数字之间并不属于同一口径。
最典型的翻车:动态页面只抓到一半
一道题要求核实 Exa 的免费额度。最初,我们用不执行 JavaScript 的网页读取器打开定价页,只拿到了页面后半段,于是错误地把候选给出的免费额度判成幻觉。
当多个独立候选都返回同一数字后,我们换成真实浏览器重新核验,才发现遗漏内容位于动态渲染区域。这个过程说明,“我打开了官网”并不等于“我看到了官网全部内容”。
因此本文不保留那次测试中的具体免费额度:定价会变,页面结构也会变。需要使用时,应直接访问 Exa 当前定价页 和 计费文档,同时标记查询日期与计量单位。
动态排行榜题暴露了三层能力
另一道题要求核实一个模型在代码排行榜上的位置。候选大致分成三层:
- 第一层能抓到当前榜单,并解释排名为什么与发布时不同;
- 第二层能进一步发现“代码榜”其实有不同分榜,避免把前端榜与通用编程榜混为一谈;
- 第三层只能找到发布新闻,但会明确说无法验证当前排名。
第三层不一定比给出数字更差。面对动态渲染页面,诚实报告抓取限制,往往比用旧新闻冒充实时结果更可靠。
六个方案怎么选
| 方案 | 适合场景 | 使用前要知道 |
|---|---|---|
| Tavily | 通用 Agent 搜索、抽取、抓取与站点遍历 | 需要服务配置;结果仍要回到一手来源 |
| Exa | 技术资料、代码语境和相似内容检索 | 定价与额度属于动态信息,按官网当日口径判断 |
| Brave Search | Web、新闻、图片、视频和本地搜索 | 需要 API Key;动态网页抓取能力与搜索结果不是一回事 |
| DuckDuckGo MCP | 零门槛原型、轻量查询 | 社区封装并非 DuckDuckGo 官方产品,维护与接口稳定性需自查 |
| TinyFish | 简单搜索封装或个人工作流 | 接口少时,深度研究需要模型自行补足查询策略 |
| 裸模型内置搜索 | 低频搜索、先验证是否真需要 MCP | 能力依赖宿主产品,速度和可控性不一定稳定 |
一套比“换工具”更有用的核验流程
- 先找官方文档、论文、监管披露或项目仓库,再用媒体补背景。
- 对价格、排名、版本和人员信息标注查询日期。
- 区分“搜索结果摘要”“抓取到的页面正文”和“浏览器实际渲染内容”。
- 两个数字冲突时,先检查时间、计量单位、用户层级和活动额度,而不是挑一个顺眼的。
- 让 Agent 明确列出“已确认、推断、未确认”,并保留直达链接。
- 对关键结论至少换一种访问方式复核一次。
专用搜索工具带来的最大价值,不只是更多结果,而是更可控的搜索、抽取和引用接口。但“工具返回了链接”仍不等于事实成立。搜索 Agent 的最后一公里,始终是来源分级、口径对齐和二次验证。
参考资料
- Tavily 官方 MCP 仓库
- Exa 官方 MCP 仓库
- Exa MCP 文档
- Brave Search 官方 MCP 仓库
- DuckDuckGo MCP 社区仓库
- Model Context Protocol 官方文档
资料复核日期:2026-08-23。正文删除了会快速过期的具体价格、额度和排行榜分数;实测名次仅用于解释方法,不构成长期产品排名。