Hermes 搜索与浏览器能力配置指南
服务器环境:Ubuntu 24.04 LTS,2C2G
Hermes版本:v0.18.0
时间:2026-07-02
浏览器搜索功能对 AI Agent 来说是非常重要的功能,Hermes 本身提供了良好的搜索支持,但官方文档和市面上的资料对于这部分的介绍还是太过简略了,于是我打算通过查阅源码+自行实践的方式,给出一份针对非付费用户的浏览器功能配置解决方案,在免费的同时为我们的hermes agent提供强大而完善的搜索能力(对于个人使用场景而言100%够用了)。
这份指南整理 Hermes 里 web 与 browser 两类能力的关系,并给出一套实用的配置方案:Web 侧使用 Hermes 原生 web toolset,后端选择 Tavily / Firecrawl / Brave Search;浏览器侧保留本地 Chromium via agent-browser 与 Camofox,两者按需要切换。
注意: 本博客中的hermes命令都是默认情况下的命令,如更改了地址或使用了其他profile,请将命令进行相应替换。
1. 先建立清晰认知
1.1 Hermes 支持的方案
Hermes 要用“浏览器”和“搜索”能力,大体有 3 类方案:
- 用 Hermes 内置 Web 工具
web_search、web_extract- 后端可选:Firecrawl、Parallel、Tavily、Exa
- 适合:搜索网页、抽取网页内容、部分爬取任务
- 配置入口:
config.yaml或hermes tools
- 用 Hermes 内置浏览器自动化
- Browserbase 云浏览器
- Browser Use 云浏览器
- Firecrawl 云模式
- Camofox 本地反检测浏览
- 本地 Chrome via CDP,使用
/browser connect - 本地 Chromium via
agent-browser - 适合:打开网页、点击、填表、登录后操作、截图、视觉分析、页面交互
- 通过 MCP 接第三方工具
- Hermes 可以通过 MCP 连接外部工具服务器,例如浏览器栈、搜索 API、内部爬虫、Playwright 服务等。
- 适合:你已有现成工具,或者想把搜索/浏览能力做成独立服务给 Hermes 调用。
其中,方案1就是hermes toolsets里的 web ,方案2就是 browser ,可以用 hermes tools list 命令查看。
然后,如果方案1后端用的是Tavily / Firecrawl 这类服务,可能就有小伙伴会疑惑,这些服务本身不也提供 MCP server吗,跟方案3有区别吗?实际上还是有区别的,存在两条路:
Hermes 内置 web toolset -> Tavily / Firecrawl API
Hermes MCP -> Tavily / Firecrawl MCP server -> Tavily / Firecrawl API
内置的 web 相当于把不同 provider 抽象成同一套工具,配置短的同时换 provider 也比较方便,比如 tavily 换 firecrawl ;但缺点是只能用 Hermes 内置抽象暴露出来的能力,如果 Tavily / Firecrawl 有一些高级特性,Hermes 内置工具未必全覆盖。
如果你只是想让 Hermes 会“搜索网页、读网页”,用内置 web 就够了,而且更推荐 ;如果你需要 Tavily / Firecrawl 的某些 MCP 专属能力,或者你想把同一个搜索 MCP server 复用给多个 Agent 客户端,再考虑 MCP。这里对我而言,使用内置的 web 已经绰绰有余了,就不再重复配置相关MCP了。
1.2 web 和 browser 不是同一类工具
Hermes 里的 web 更像“搜索与网页内容抽取 API”,主要工具是:
web_search:搜索互联网,返回结构化搜索结果。web_extract:给 URL,抽取网页正文或可读内容。
它适合:
- 查资料、找文档、搜报错。
- 总结多个网页。
- 快速获取网页正文。
- 需要来源链接、结构化搜索结果的任务。
browser 更像“真实浏览器自动化接口”(常见工具见后文),它适合:
- 打开网页并点击按钮。
- 填表、登录、翻页。
- 操作动态页面。
- 看截图、读页面可访问性树。
- 处理需要真实浏览器环境的网站。
一句话:
web = 搜索 / 抽取网页内容
browser = 操作网页 / 真实浏览器自动化
普通信息检索优先用 web,需要交互时再用 browser (信息检索之类的用 browser 当然也能胜任,但可能会涉及更多次的工具调用,以及更费token)。
1.3 web 配置关键字段解析
Hermes 的 web 支持一个总默认值,也支持按能力拆分:
web:
backend: tavily
search_backend: ""
extract_backend: ""
理解成:
search_backend 优先用于 web_search
extract_backend 优先用于 web_extract
backend 作为二者的共享 fallback
所以 search_backend 和 extract_backend 留空时,通常会回退到 backend。
例如:
web:
backend: tavily
表示搜索和抽取都用 Tavily。
而:
web:
search_backend: brave-free
extract_backend: firecrawl
表示搜索用 Brave Search,网页正文抽取用 Firecrawl。
注意:Brave Search 在 Hermes 里的 backend 名是 brave-free,并且它是 search-only,不能单独承担 web_extract。
1.4 Browser 的“统一接口,后端可替换”模型
Hermes 暴露给 Agent 的是一组统一的 browser_* 工具:
browser_navigate
browser_snapshot
browser_click
browser_type
browser_press
browser_scroll
browser_back
browser_console
browser_get_images
browser_vision
背后可以接不同浏览器后端:
browser_* tools
↓
Hermes browser dispatcher
↓
agent-browser / Camofox / CDP / Browserbase / Browser Use / Firecrawl ...
同一个 profile 同一时刻通常只有一个主要 browser backend 在实际工作。你可以都安装,但不是每次 browser_click 都让 Agent 同时在多个后端之间自由选择。
可以把它理解成“接口稳定,底层实现可换”。
1.5 本文关注的三种浏览器方案
agent-browser:本地 Chromium 默认方案
agent-browser 是 Hermes 的本地浏览器自动化路线。它会驱动本地 Playwright Chromium / headless Chromium。
**优点:**配置简单;成本低;适合普通网页自动化;和 Hermes 默认工具链贴合。
**缺点:**反检测能力弱;容易被一些网站识别为自动化或 headless;默认不提供完整 browser_cdp 能力。
适合作为普通默认方案。
Camofox:本地反检测浏览器方案
Camofox 是一个本地服务,背后是 Camoufox,一个带指纹伪装的 Firefox fork。Hermes 通过 CAMOFOX_URL 调用它。
**优点:**本地运行,不依赖云浏览器;反检测能力比普通 headless Chromium 更强;可以配 VNC 观察浏览器运行;可以配置持久化 profile,保留 cookie / 登录状态。
**缺点:**多一个服务要维护;它是 Firefox / Camoufox 路线,不是 Chromium(一些特性的支持可能不如chromium丝滑);不是完整 CDP 后端。
适合作为反爬优先方案。
CDP:连接自己启动的 Chrome / Chromium
CDP 是 Chrome DevTools Protocol,不是一种浏览器本身。你需要自己启动 Chrome / Chromium,并开放 remote debugging port。
服务器没有桌面 App 也可以用 CDP,只要有一个 headless Chromium 进程:
chromium \
--headless=new \
--remote-debugging-address=127.0.0.1 \
--remote-debugging-port=9222
CDP 优点是控制力强,适合 DevTools 级调试、cookie、storage、network、iframe、JS runtime 等高级操作。
但它不是反检测方案,而且需要额外维护浏览器进程。由于我暂时用不上它的这些特殊能力,故当前这套配置暂时不把 CDP 作为主力,只在后面简单留一个可选配置。
2. Web配置方案
本文只写三类 Web provider(都提供按月刷新的免费额度,好用!):
- Tavily:搜索 + 抽取。
- Firecrawl:搜索 + 抽取 + 部分爬取能力。
- Brave Search:搜索-only,需要搭配 Firecrawl 或 Tavily 做 extract。
首先,我们要配置相应服务商的API key(注册及申请key的过程非常简单,这里不做介绍)。这里提供两种配置方式(hermes交互+编辑配置文件,可以用交互进行配置,然后看配置文件进行验证)
方式一:交互式配置
运行命令:
hermes tools
选择Reconfigure an existing tool's provider or API key,进入 Web Search & Scraping,按提示选择 provider 并填写 key即可。
方式二:手动编辑 .env
用 vim 编辑:
vim ~/.hermes/.env
按你需要的 provider 写入对应 key:
# Tavily: search + extract
TAVILY_API_KEY=tvly-your-key-here
# Firecrawl: search + extract + crawl
FIRECRAWL_API_KEY=fc-your-key-here
# Brave Search: search-only
BRAVE_SEARCH_API_KEY=your-brave-search-key-here
如果使用自托管 Firecrawl(就是让 AI Agent 连接你自己部署的 Firecrawl 服务,而不是官方提供的云服务),也可以配置:
FIRECRAWL_API_URL=http://localhost:3002
配置好API key后,接下来配置实际请求的后端。
配置1:Tavily 作为默认 Web 后端
适合想简单、省心地让 web_search 和 web_extract 都走 Tavily。依旧有两种配置方式。
- 命令方式:
hermes tools
选择:
Web Search & Extract -> Tavily
- 手动配置:
vim ~/.hermes/config.yaml
写入:
web:
backend: tavily
use_gateway: false
这表示:
web_search -> Tavily
web_extract -> Tavily
配置示例2:Brave Search + Firecrawl
Brave Search 在 Hermes 里叫 brave-free,它只能搜索,不能抽取网页正文。所以推荐搭配 Firecrawl:
web_search -> Brave Search
web_extract -> Firecrawl
命令方式:
hermes tools
如果交互 UI 支持 per-capability 配置,就在 Web Search & Extract 里选择:
Search backend -> Brave Search / brave-free
Extract backend -> Firecrawl
手动配置:
vim ~/.hermes/config.yaml
写入:
web:
search_backend: brave-free
extract_backend: firecrawl
use_gateway: false
也可以把 extract 换成 Tavily:
web:
search_backend: brave-free
extract_backend: tavily
use_gateway: false
3. Browser 配置方案
本文只写两套主力方案(依旧提供命令交互+修改配置文件两种方式):
- 本地 Chromium via
agent-browser - Camofox 本地反检测浏览器
CDP 暂时不用,只在末尾保留说明。
3.1 启用 browser toolset
命令方式:
hermes tools enable browser
hermes tools list
看到类似:
✓ enabled browser 🌐 Browser Automation
就说明浏览器工具集已经启用。
也可以运行:
hermes tools
进入 Browser Automation,选择对应 provider / 后端。
3.2 本地 Chromium via agent-browser
这是普通默认方案。
命令方式
先启用 browser:
hermes tools enable browser
安装 / 初始化 agent-browser:
hermes tools post-setup agent_browser
如果想手动安装,也可以:
npm install -g agent-browser
agent-browser install
在 Linux 服务器上如果缺系统依赖,可用:
agent-browser install --with-deps
手动配置方式
编辑环境变量:
vim ~/.hermes/.env
确保没有启用 Camofox / CDP:
# 不要设置 CAMOFOX_URL
# 不要设置 BROWSER_CDP_URL
编辑配置:
vim ~/.hermes/config.yaml
推荐显式写:
browser:
cloud_provider: local
inactivity_timeout: 120
command_timeout: 30
cloud_provider: local 的意义是强制不用 Browserbase / Browser Use / Firecrawl 这类云浏览器 provider,走本地浏览器路线。
3.3 Camofox 本地反检测浏览器
Camofox 适合被普通 Chromium 自动化拦住的场景。
命令方式
启用 browser:
hermes tools enable browser
运行 Camofox 后置安装:
hermes tools post-setup camofox
也可以用交互式:
hermes tools
选择:
Browser Automation -> Camofox
手动安装 Camofox server
Docker 方式:
git clone https://github.com/jo-inc/camofox-browser
cd camofox-browser
make up
如果想开 VNC 观察浏览器:
make down
make build
mkdir -p ~/.camofox-docker
docker run -d \
--name camofox-browser \
--restart unless-stopped \
-p 9377:9377 \
-p 6080:6080 \
-p 5901:5900 \
-e CAMOFOX_PORT=9377 \
-e ENABLE_VNC=1 \
-e VNC_BIND=0.0.0.0 \
-e VNC_RESOLUTION=1920x1080 \
-e MAX_OLD_SPACE_SIZE=2048 \
-v ~/.camofox-docker:/root/.camofox \
camofox-browser:135.0.1-aarch64
注意:上面的镜像 tag 里的架构要按服务器实际情况调整,例如 x86_64 服务器不要直接照抄 aarch64。
手动配置 Hermes 使用 Camofox
编辑:
vim ~/.hermes/.env
写入:
CAMOFOX_URL=http://localhost:9377
只要 CAMOFOX_URL 存在,Hermes 的 browser_* 工具就会优先走 Camofox,而不是默认 agent-browser。
编辑:
vim ~/.hermes/config.yaml
推荐配置:
browser:
cloud_provider: local
inactivity_timeout: 120
command_timeout: 30
camofox:
managed_persistence: true
user_id: ""
session_key: ""
adopt_existing_tab: false
managed_persistence: true 表示让 Hermes 给 Camofox 使用稳定身份,便于 Camofox 侧复用 profile,从而保留 cookie / 登录态。实际是否持久化,还要看 Camofox server 是否正确支持基于 userId 的持久 profile。
如果 Camofox 跑在 Docker 里,并且需要访问宿主机上的本地服务,例如 http://127.0.0.1:3000,加上:
browser:
camofox:
rewrite_loopback_urls: true
loopback_host_alias: host.docker.internal
完整一点可以写成:
browser:
cloud_provider: local
inactivity_timeout: 120
command_timeout: 30
camofox:
managed_persistence: true
user_id: ""
session_key: ""
adopt_existing_tab: false
rewrite_loopback_urls: true
loopback_host_alias: host.docker.internal
如果 Camofox 不是 Docker,而是直接跑在宿主机上,一般不需要 rewrite_loopback_urls。
3.4 agent-browser 与 Camofox 怎么切换
使用 agent-browser:
vim ~/.hermes/.env
删除或注释:
CAMOFOX_URL=http://localhost:9377
确保没有:
BROWSER_CDP_URL=...
然后重启 Hermes。
使用 Camofox:
vim ~/.hermes/.env
写入:
CAMOFOX_URL=http://localhost:9377
然后确保 Camofox server 正在运行,再重启 Hermes。
理解优先级:
如果显式连接了 CDP / 设置了 BROWSER_CDP_URL
-> 走 CDP
否则如果设置了 CAMOFOX_URL
-> 走 Camofox
否则
-> 走 agent-browser 本地 Chromium
3.5 CDP 暂时不用,但以后可以这样配
如果以后需要 DevTools 级能力,可以在服务器上启动 headless Chromium:
chromium \
--headless=new \
--remote-debugging-address=127.0.0.1 \
--remote-debugging-port=9222 \
--no-sandbox
然后配置:
vim ~/.hermes/config.yaml
写入:
browser:
cdp_url: "http://127.0.0.1:9222"
或者在 Hermes 会话里使用:
/browser connect http://127.0.0.1:9222
不要把 CDP 端口暴露到公网。CDP 基本等于远程控制浏览器,安全风险很高。
4. 推荐组合
如果只想要一套日常配置:
web:
backend: tavily
use_gateway: false
browser:
cloud_provider: local
inactivity_timeout: 120
command_timeout: 30
如果日常经常遇到反爬:
web:
search_backend: brave-free
extract_backend: firecrawl
use_gateway: false
browser:
cloud_provider: local
inactivity_timeout: 120
command_timeout: 30
camofox:
managed_persistence: true
对应 .env:
BRAVE_SEARCH_API_KEY=your-brave-search-key-here
FIRECRAWL_API_KEY=fc-your-key-here
CAMOFOX_URL=http://localhost:9377
5. 验证
查看 toolset 状态:
hermes tools list
检查整体配置状态:
hermes setup
进入 Hermes 后可以测试:
用 web_search 搜索 Hermes Agent Camofox 配置,并给我来源链接。
再测试浏览器:
打开 https://example.com,告诉我页面标题。
如果使用 Camofox,可以同时检查 Camofox server:
curl http://localhost:9377/health
若开启了 VNC,可以访问:
http://localhost:6080
6. 最后的取舍
建议把思路保持简单:
搜索资料 / 抽取网页正文 -> web
操作网页 / 登录 / 点击 -> browser
普通浏览器自动化 -> agent-browser
反爬优先 -> Camofox
DevTools 级调试 -> CDP
本文的主力推荐是:
web: 原生 web toolset + Tavily / Firecrawl / Brave Search
browser: agent-browser 作为普通方案,Camofox 作为反爬方案
CDP: 先不用,后续有高级调试需求再开