searchers 模块 — 网页搜索

🟢 该模块通过提供商(默认是 FireCrawl)为智能体提供网页搜索访问,并附带一个现成的演示智能体。该模块是 双传输 的:同一份代码既可作为 linked crate 使用,也可作为原生 DLL 使用。

提供内容

内容 标识符 描述
工具 kind: web_search 互联网搜索:title、url、description
智能体 searchers-demo 已接入 web_search 的演示智能体
提供商 8 个后端 见下表
设置 searchers/* 提供商密钥(机密),会投影到 env

该模块属于默认集合(server.yaml → modules.enabled 或 config/modules.enabled)。内核将其引擎 web_search 注册到工具工厂中,因此带有 kind: web_search 的 YAML 工具会自动可用。

提供商

provider 类型 密钥(env) 默认基础地址
firecrawl(默认) 搜索+抓取 FIRECRAWL_API_KEY https://api.firecrawl.dev
tavily 搜索 TAVILY_API_KEY https://api.tavily.com
brave 搜索 BRAVE_API_KEY https://api.search.brave.com
serper Google SERP SERPER_API_KEY https://google.serper.dev
serpapi Google SERP SERPAPI_API_KEY https://serpapi.com
exa 语义 EXA_API_KEY https://api.exa.ai
google Google CSE GOOGLE_API_KEY + cx https://www.googleapis.com
searxng 自托管,无需密钥 —(base_url 为必填) 你的部署实例

所有提供商都会将响应规范化为 { title, url, description }。base_url 可以被覆盖(自托管/代理)。提供商也可以针对每次调用单独选择:工具参数中的 provider 会覆盖配置。

web_search — 调用参数(由 LLM 指定)

结果是 JSON:

{ "provider": "firecrawl", "query": "…", "count": 3,
  "results": [ { "title": "…", "url": "https://…", "description": "…" } ] }

工具配置

# tools/web_search.yaml
kind: web_search
name: web_search
description: Поиск в интернете (title, url, snippet).
# provider: tavily                # по умолчанию firecrawl
# api_key: tvly-...               # явный ключ (не хранить в git)
# api_key_env: TAVILY_API_KEY     # имя переменной окружения (по умолчанию — по провайдеру)
# base_url: https://api.tavily.com
# cx: <google-cse-id>             # только для provider: google
# limit: 5

API 密钥

密钥按以下顺序解析:配置中的 api_key → 环境变量 api_key_env(默认情况下每个提供商各有自己的变量,见表格)。 提供商 searxng 不需要密钥。密钥也可以通过 设置 模块(设置 页面)指定:值会保存到数据库,并投影到相应的 env 变量,无需重启。.env/env.overrides.yaml 中的手动值 具有更高优先级。

演示智能体

searchers-demo 由模块以 config 包的形式提供,并会在 config/agents/ 旁边 自动加载(名称相同时,来自 config/agents 的智能体优先)。智能体声明了 tool_files: [tools/web_search.yaml], 该工具会自动添加到它的列表中。

智能体示例

# config/agents/my-search-agent/agent.yaml
name: my-search-agent
instructions: |
  Ты — исследовательский ассистент. Для актуальных фактов вызывай web_search,
  возвращай ответ и ссылки с краткими описаниями. Не выдумывай URL.
tool_files:
  - tools/web_search.yaml