OpenClaw 用 Tavily Skill 检索网页信息:替代默认 Brave Search(未配置 Brave Key 将无法 web_search)
OpenClaw 做“联网检索”时,很多人第一反应是直接用内置 web_search。但需要先明确一个前提:OpenClaw 默认的 web_search 走 Brave Search API,如果你没有配置 Brave 的 API Key(例如没有设置 BRAVE_API_KEY),那它默认是不能用来检索网页的。
如果你更希望“开箱可用、面向 LLM 的结构化搜索结果”,一个很实用的做法是:用 Tavily 代替 Brave——通过自定义 Skill 调用 Tavily Search API,把搜索能力接入到 OpenClaw 的工具链里。
1. 为什么“默认 Brave”不配置就没法搜
OpenClaw 的 web_search 设计目标是“轻量搜索工具”,默认对接 Brave。它不会替你“自动申请/内置 Key”,也不会在没有 Key 的情况下提供可用的免费兜底。
所以你在以下场景会卡住:
-
你装好了 OpenClaw,也能正常对话
-
但一让它“帮我搜索某某信息”,就会返回搜索失败/鉴权失败/无结果
解决思路只有两条:
-
把 Brave Key 配齐(让
web_search按默认路线工作) -
换一个可用的搜索 Provider(本文选择 Tavily)
2. 选择 Tavily 的理由(以及它更适合 Skill 形态)
Tavily 的定位更接近“给 Agent/LLM 用的 Search API”,特点是:
-
返回结构化结果(标题、URL、摘要、可选原文片段等),更利于模型继续推理/总结
-
接入成本低:拿到 API Key 后即可用
-
与 Skill 非常匹配:Skill 本质是“给模型的一份可执行操作手册”,而 Tavily 正好是一个简单 HTTP API
你可以把它当成:
-
“先搜(Tavily)→再抓(OpenClaw 的网页抓取工具/浏览器工具)→再总结(模型)” 的第一步。
3. 总体方案:用 Skill 把 Tavily 变成你的默认搜索入口
思路如下:
-
不强行改 OpenClaw 的内置
web_search -
在你的 workspace
skills目录里新增一个自定义 Skill(例如“tavily-search”) -
该 Skill 的内容是:教模型如何用命令行(curl)调用 Tavily Search API,并要求输出带引用的结果
这样做的好处:
-
对 OpenClaw 版本升级更友好(几乎零侵入)
-
你可以按自己的需求固化“搜索深度、返回条数、输出格式、引用规范”
4. 准备:获取并配置 Tavily API Key
-
在 Tavily 控制台获取 API Key。
-
把 Key 放到环境变量里(示例):
export TAVILY_API_KEY="..."
关键提醒(非常常见的坑):
-
如果你的 OpenClaw 是以 daemon/systemd/launchd 方式运行,它读取到的环境变量不一定等于你当前终端的环境变量。
-
你需要确保运行 OpenClaw 的那个服务环境里同样有
TAVILY_API_KEY。
5. 实战:写一个 Tavily 搜索 Skill(核心内容)
Skill 的核心就是一段“可复用的操作说明”,让模型在需要检索时按步骤调用。
下面给一个可直接照抄的 Skill 逻辑(你可以按自己的习惯改名字/输出格式):
5.1 Skill 约束与输出目标
建议你在 Skill 里明确:
-
只做“搜索”这一步,不把网页全文都塞进来
-
输出固定结构:查询词、Top N 结果列表(title、url、snippet/summary)、下一步建议
-
强制引用:最终回答里必须包含 URL
5.2 Tavily Search API 调用示例(curl)
Tavily 的搜索接口通常是一个 HTTPS POST 请求。示例:
curl -sS https://api.tavily.com/search \
-H 'Content-Type: application/json' \
-d "$(jq -n \
--arg key \"$TAVILY_API_KEY\" \
--arg q \"你的查询词\" \
'{
api_key: $key,
query: $q,
search_depth: "advanced",
max_results: 5,
include_answer: false,
include_raw_content: false
}')"
说明:
-
search_depth:你可以按成本/质量选择(例如 basic/advanced) -
max_results:建议 3~8,太多会让模型后处理成本变高 -
include_raw_content:通常先关掉,避免一次把 payload 打爆;需要时再对特定链接做抓取
如果你不想依赖 jq,也可以在 Skill 里给出纯 JSON 的 curl 版本(略)。
6. 使用方式:让 OpenClaw“先用 Tavily 搜,再决定抓哪些页面”
你可以在对话里这样驱动:
-
“用 tavily-search 检索:{问题}。给出 5 条结果,每条附上 1~2 句摘要与 URL。然后选最相关的 2 条建议我下一步抓取哪两个页面。”
6.1 例子:用 Tavily 定向检索知乎(site 语法)
如果你已经在本机把 Tavily skill 做成了一个脚本(例如 skills/tavily-search/scripts/search.mjs),那么可以直接用 site:zhihu.com 做定向检索。
示例:检索知乎上与 OpenClaw 相关的文章,并返回前 5 条:
node /Users/xxxxxx/clawd/skills/tavily-search/scripts/search.mjs "site:zhihu.com OpenClaw" -n 5
说明:
-
site:zhihu.com:只返回知乎域名下的结果 -
-n 5:返回 5 条(参数名以你的脚本实现为准)
一个更工程化的模板是:
-
Tavily 搜索:返回候选来源
-
选 2~3 条最可信来源
-
用 OpenClaw 的网页抓取/浏览器能力打开并抽取要点
-
最终回答:给结论 + 引用
这样能显著降低“搜索阶段就引入大量噪声”的概率。
7. 对比结论:Brave 与 Tavily 怎么选
-
你已经有 Brave Search API Key:
- 直接把 Brave 配齐,
web_search用起来最顺滑
- 直接把 Brave 配齐,
-
你没有 Brave Key,或者不想折腾 Brave 的配置:
- 别指望默认
web_search自动可用,改用 Tavily(Skill 方式)更快落地
- 别指望默认
从可维护性角度:
-
Brave:更像“OpenClaw 内置默认线路”,但前提是你愿意把 Key 配到位
-
Tavily:更像“你自己的可控工具链”,通过 Skill 你可以固定输出结构与流程
8. 安全与工程建议(别跳过)
-
API Key 只放环境变量,不要写进 Skill 文档、不要提交到仓库
-
如果你把 OpenClaw 暴露在公网(不推荐),请务必做 allowlist / pairing / 鉴权,并尽量不要让它拥有可滥用的网络检索能力
-
给 Skill 增加“结果可信度规则”:优先官方文档、标准组织、主流媒体/厂商博客;对论坛/二手转载保持谨慎
9. 小结
-
OpenClaw 默认
web_search基于 Brave Search API:不配置 Brave Key 就无法稳定检索网页。 -
使用 Tavily 的最稳妥方式是:通过自定义 Skill 把 Tavily Search API 接入 OpenClaw,把它当作你的默认搜索入口。
-
推荐流程:Tavily 先搜 → 选来源 → 再抓取/总结 → 最终回答附引用。

