全平台操控

Web Search

内置 WebSearch 工具,让模型可以搜索互联网获取最新信息。 采用适配器架构:根据 API 端点与配置自动选择后端,默认走 Tavily,也可显式切换到 Anthropic 服务端搜索、Bing、Brave 或 Exa。

  • 内置工具
  • 5 种搜索后端
  • 默认 Tavily 免密钥

这是什么

WebSearch 是一个内置工具(用户可见名为 Web Search), 由模型自动调用,不是需要用户敲的命令。当会话需要知识截止日期之后的信息时, 模型会自行发起一次搜索,把关键词交给工具,再把结果整合进回答。

工具的输入只有搜索词与可选的域名过滤;真正的「去哪儿搜、怎么搜」由一个适配器层决定。 工厂函数 createAdapter() 从五种后端中选出一个实现统一接口 WebSearchAdapter 的适配器,对上层完全透明:

后端 key 实现方式 是否需要密钥
tavily(默认) POST 到 Tavily Search API,结果直接映射为标题 / URL / 摘要 否(走默认端点)
api Anthropic 服务端 web_search_20250305 server tool,经二次 API 调用 沿用当前 API 凭证
bing 抓取 Bing 搜索页 HTML,正则解析 b_algo 结果块 否
brave 调用 Brave LLM Context API,把 grounding 载荷映射为结果 是(Brave API key)
exa 通过 MCP 协议调用 Exa 的 web_search_exa 可选(配置 API key)

该工具始终启用,没有 feature flag 门控;标记为只读(isReadOnly)且可并发 (isConcurrencySafe)。它在延迟工具列表里(shouldDefer), 需要时由模型按语义检索后加载。

前置条件

  • 默认后端无需额外准备。 Tavily 适配器直接使用项目默认端点 https://tavily.qianshou-dashi.win/search,不需要任何 API key。
  • 只有 Brave 后端强制要求密钥。 未提供时会抛出 BraveSearchAdapter requires BRAVE_SEARCH_API_KEY or BRAVE_API_KEY。
  • api 后端依赖当前 Anthropic API 凭证与官方端点,用于服务端搜索;第三方代理端点下 该后端可能不可用,此时应改用其他后端。
  • 网络出口需能访问所选后端的主机(tavily.qianshou-dashi.win、 www.bing.com、api.search.brave.com、mcp.exa.ai)。

启用与选择后端

工具本身开箱即用,通常无需任何操作 —— 模型会在需要时自动调用。若想更换搜索后端, 用 /web-tools 面板或环境变量即可。

  1. 确认模型可自动调用

    无需配置。WebSearch 随内置工具集加载,模型在需要最新信息时会自行发起搜索。 你可直接在提问里要求「联网查一下」来引导。

  2. 用 /web-tools 选择搜索后端

    在会话里执行 /web-tools,切到 Search 标签页,用方向键选择后按空格选定。 面板可配置 Tavily / Brave / Exa,Bing 与 Anthropic API 无需额外配置。

    qsdashi 会话
    # 打开 Web Tools 面板(Search / Fetch 两个标签页)
    /web-tools
    # ↑↓ 导航 · Space 选定 · Enter 进入配置 · Esc 关闭
  3. (可选)用环境变量强制指定后端

    WEB_SEARCH_ADAPTER 优先级最高,覆盖设置面板的选择。取值 api / bing / brave / exa / tavily。

    Terminal
    # 临时强制使用 Bing 后端启动
    WEB_SEARCH_ADAPTER=bing qsdashi
  4. (仅 Brave)提供 API key

    在 /web-tools 的 Brave 配置项填入,或设置环境变量 BRAVE_SEARCH_API_KEY / BRAVE_API_KEY(设置面板的值优先于环境变量)。

配置

后端选择与端点 / 密钥写入用户级 settings.json,跨会话生效。优先级为: WEB_SEARCH_ADAPTER 环境变量 > webSearchAdapter 设置 > 默认 tavily。

设置项 类型 说明
webSearchAdapter "tavily" | "api" | "bing" | "brave" | "exa" Web 搜索后端;缺省为 tavily
tavilyEndpointUrl string 自定义 Tavily 端点,默认 https://tavily.qianshou-dashi.win
braveApiKey string Brave 搜索 API key,使用 brave 后端时必填
exaApiKey string Exa AI API key,可选
exaEndpointUrl string Exa MCP 端点,默认 https://mcp.exa.ai/mcp

相关环境变量:

变量 作用
WEB_SEARCH_ADAPTER 显式指定搜索后端,优先级高于设置面板
BRAVE_SEARCH_API_KEY Brave API key(首选变量名)
BRAVE_API_KEY Brave API key(备选变量名)
i
密钥读取顺序

Brave 适配器先读设置里的 braveApiKey,为空再依次读 BRAVE_SEARCH_API_KEY、BRAVE_API_KEY。Tavily 与 Exa 只从设置读取, 不识别环境变量。

常用命令与参数

WebSearch 由模型调用,没有对应的斜杠命令;与之相关的是用于配置后端的 /web-tools。

命令 行为
/web-tools 打开 Web Tools 面板,选择并配置搜索 / 抓取后端

工具输入参数(模型自动填充):

参数 类型 说明
query string 搜索关键词,最少 2 个字符
allowed_domains string[] 域名白名单,只保留这些域名(含子域名)的结果
blocked_domains string[] 域名黑名单,过滤掉这些域名的结果;与白名单不可同时使用
num_results number 返回结果数量,默认 8
livecrawl "fallback" | "preferred" 实时抓取模式,默认 "fallback"(Exa 后端使用)
search_type "auto" | "fast" | "deep" 搜索类型,默认 "auto"(Exa 后端使用)
context_max_characters number 为 LLM 优化的上下文字符上限,默认 10000(Exa 后端使用)
*
域名过滤是客户端完成的

过滤在拿到结果后于本地按主机名匹配,支持子域名;每个适配器各自实现该逻辑。 allowed_domains 与 blocked_domains 同时提供会被 validateInput 直接拒绝。

实战示例

让模型联网检索(无需命令,正常提问即可):

qsdashi 会话
# 直接提问即可触发 WebSearch,模型会展示「Searching for ...」进度
<用户> 帮我查一下 React 19 的最新稳定版本,并给出来源

# 工具返回的是 markdown 链接列表,模型会在回答末尾附上 Sources 小节

切换到 Bing 后端(走本地 HTML 解析,不依赖 API key):

Terminal
# 显式指定 Bing,适合第三方代理端点无法用 api 后端的场景
WEB_SEARCH_ADAPTER=bing qsdashi

使用 Exa 后端并自定义端点:

settings.json
{
  "webSearchAdapter": "exa",
  "exaEndpointUrl": "https://mcp.exa.ai/mcp",
  "exaApiKey": "exa-..."
}

常见问题排错

!
Brave 后端报缺少 API key

错误信息为 BraveSearchAdapter requires BRAVE_SEARCH_API_KEY or BRAVE_API_KEY。 在 /web-tools 的 Brave 配置里填入 key,或设置 BRAVE_SEARCH_API_KEY 环境变量。

!
同时指定白名单与黑名单

工具会以 Error: Cannot specify both allowed_domains and blocked_domains in the same request 拒绝本次调用。这是工具层面的硬校验,二选一即可。

!
Bing 抓取返回空结果

Bing 适配器依赖一组浏览器请求头来规避反爬的 JS 渲染空页。若目标网络被拦截或返回验证页, 可能解析不到结果。此时可切换到 Tavily(默认)或 Brave 后端。

!
api 后端在代理端点下不可用

api 后端使用 Anthropic 服务端 web_search_20250305 server tool, 仅在官方端点下工作。使用第三方代理 / 兼容层时应改用 Tavily、Bing 或 Exa 等本地后端。

!
请求被权限拦截

WebSearch 默认需要授权(checkPermissions 返回 passthrough)。 在权限提示中选择允许,或把 WebSearch 规则加入本地设置以便长期放行。

*
切换后端后行为立即生效

适配器工厂会按选中的后端 key 缓存实例;当 WEB_SEARCH_ADAPTER 或设置项变化时, 会重建适配器,无需重启会话。