Hermes 接上 Perplexity 搜索:一个 Key 同时升级联网搜索和网页摘录

你有没有被智能体的联网搜索坑过:问「某某框架 2026 年最新的稳定版是哪个」,它翻出来一堆三四年前的教程;免费搜索通道偶尔限流,报错之后只能重试。遇到这种情况,很多人第一反应是换模型,其实更该考虑换的是搜索后端——Hermes 的联网搜索本来就是可插拔的,后端可以单独挑。就在 9 月 4 日,Perplexity 的 Search API 合入了官方仓库,成为继 Exa、Parallel、Tavily、Firecrawl、Keenable 之后又一个带 API Key 的官方后端:只填一个 Key,web_search 和 web_extract 两个工具都能换上新引擎。这篇文章把「为什么要换、怎么配、有什么坑」一次讲清楚。
先弄清一件事:搜索是「两个工具、一个可换的后端」
Hermes 把联网能力拆成了两个工具:
web_search:根据你的问题去找候选页面,返回标题、链接和一段简介;web_extract:拿到具体网址后,读取并提炼页面内容。
两个工具各自走哪个厂商,是通过 web.search_backend 和 web.extract_backend 配置的(不分开配时,web.backend 同时管两个)。如果你没配过任何后端也不用担心——Hermes 内置了零配置的免费轮换机制,开箱即用,具体见《Hermes 联网搜索终于不用折腾 API Key!5 个免费通道》。今天讲的是付费升级路线:当免费通道的质量或稳定性不够用时,把后端换成你信任的商业搜索 API。
Perplexity 是什么,为什么值得一试
Perplexity 是很多人日常就在用的 AI 搜索产品,它背后是自家的网页索引。现在这套索引通过 Search API 开放给了 Hermes:
- 搜索结果带时间戳、按相关度排序,对「查最新版本、查近期事件」这类任务,比纯靠爬虫抓取的免费通道更不容易把旧页面顶到前面;
web_search请求里用了search_context_size: low,让每条结果的摘要保持在「简介」长度——够模型判断要不要点开,又不至于把几 KB 的正文塞进上下文烧 token;web_extract走的是官方pplx命令行工具同款的「相关段落摘录」接口,返回的是与你查询相关的页面片段,而不是整页原文(这一点后面会细说,是个容易踩的坑)。
需要提醒的是:Perplexity 没有匿名免费档,是纯付费、按请求计费的厂商,所以它也不参与 Hermes 的零配置免费轮换环——想完全免费,用上面链接里的免费通道即可;想稳定省心,才考虑它。
三步配好
第一步:拿 Key。 到 https://www.perplexity.ai/account/api 生成一个 API Key。
第二步:把 Key 写进环境变量。 编辑 ~/.hermes/.env,加一行:
PERPLEXITY_API_KEY=pplx-你的key
也可以直接用命令写(效果相同):
hermes config set env.PERPLEXITY_API_KEY pplx-你的key
如果你的网络需要走代理,或想指向自建网关,还可以加一个可选的 PERPLEXITY_BASE_URL 覆盖默认的 https://api.perplexity.ai。
第三步:把后端切到 Perplexity。 两种方式任选:
# 方式一:交互式选择器里挑 Perplexity
hermes tools
# 方式二:直接写配置
hermes config set web.backend perplexity
想得更细一点的话,可以只改其中一个能力——比如「搜索用 Perplexity、全文提取继续用 Firecrawl」:
hermes config set web.search_backend perplexity
hermes config set web.extract_backend firecrawl
web.backend、web.search_backend、web.extract_backend 都是 web 配置节下的真实字段,配完可以用 hermes config get web.backend 或 hermes status 验证。还有一个省事的细节:如果你只填了 Key、没有显式指定后端,Hermes 的「付费厂商优先」策略也会自动采用 Perplexity——它排在 Tavily 之后、Exa 之前;反过来,如果你已经配了别的付费 Key,现有配置不会被挤掉。
两个工具分别走什么接口
想知道背后发生了什么,看实现最清楚(plugins/web/perplexity/provider.py):
web_search调POST https://api.perplexity.ai/search,把返回里的snippet映射成摘要,单次结果数上限 20(这也是 Perplexity API 的硬上限);web_extract调POST /sdk/content/snippets,也就是官方pplx content snippets命令背后的同一路由。这里有个设计细节值得知道:web_extract本身不携带查询词,Hermes 就把网址路径里的词拼成一个相关性查询——比如抓example.com/docs/bloom-filter时,实际查询是 “bloom filter”;- 每次请求 60 秒超时;某个页面摘录失败时,会以该 URL 的
error字段返回,而不是让整个调用报错(所以接口返回 200 不代表每个页面都成功了)。
容易踩的坑:摘录 ≠ 全文
Perplexity 的 extract 给的是「与你查询相关的段落」,中间用省略号(…)标注被截掉的部分,不是逐字的整页原文。如果你需要的是完整正文——比如把整篇文档抓下来喂给模型做总结——请把 web.extract_backend 指回 Firecrawl、Exa 或 Parallel 这类支持全文提取的厂商。Perplexity 的摘录接口适合「快速判断这个页面到底讲了什么、值不值得细读」的场景,两者搭配用才顺手。
怎么才能用上
这个后端 9 月 4 日才合入官方仓库(PR #102055,提交 f1ccf436a2),而最新发布版 v0.21.0 是 8 月 31 日发布的,没有赶上这班车——也就是说目前只有 main 分支上有,正式版本要等下一个 release。想立刻体验可以跑 main 分支的源码;不着急的话,等 hermes update 提示新版本即可(本站有 v0.21.0 的发版记录可以对照时间线)。
小结
- 搜索质量不满意,先换后端,别急着换模型;
- Perplexity 一个 Key 同时点亮
web_search(排序+带时间戳的结果)和web_extract(相关段落摘录),但它是付费厂商,不进免费轮换环; - 配 Key 用
PERPLEXITY_API_KEY,切换用web.backend,细分用web.search_backend/web.extract_backend; - 要整页原文时记得把 extract 换回 Firecrawl / Exa / Parallel,Perplexity 只给「相关段落」;
- 目前仅在 main 分支,等下一个 release 正式落地。
想系统了解 Hermes 怎么帮你管住联网搜索的上下文开销,还可以看看《搜索结果缓存:让重复搜索不再烧 token》;命令细节见 hermes config 命令参考。