词元之母TOK.MOM - 平台充值汇率 1:1 即 1 人民币充值到账 1 美元,支持一个 Key 调用近 600+ 海内外模型,限时特价模型低至 1 折,欢迎上岸!
web_search、web_extract 以及(可选的)深度爬取工具调用。内置提供商——Firecrawl、SearXNG、Tavily、Exa、Parallel、Brave Search(免费层)和 DDGS——均以插件形式存放于 plugins/web/<name>/ 目录下。你可以在该目录旁新建一个目录来添加新提供商,或覆盖已有的内置提供商。<repo>/plugins/web/<name>/(以 kind: backend 自动加载,始终可用)~/.hermes/plugins/web/<name>/(通过 plugins.enabled 或 hermes plugins enable <name> 按需启用)hermes_agent.plugins 入口点的包register(ctx) 函数调用 ctx.register_web_search_provider(...) ——将实例注册到 agent/web_search_registry.py 中的注册表。各能力的活跃提供商由配置决定:| 能力 | 配置键 | 回退至 |
|---|---|---|
web_search | web.search_backend | web.backend |
web_extract | web.extract_backend | web.backend |
web_extract 内的深度爬取模式 | web.extract_backend | web.backend |
hermes tools 会引导用户完成选择。plugins/web/my-backend/
├── __init__.py # register() 入口点
├── provider.py # WebSearchProvider 子类
└── plugin.yaml # 包含 kind: backend 和 provides_web_providers 的清单文件brave_free/ 和 ddgs/ 是代码库中最小的参考实现——brave_free 是需要 API key 的纯搜索提供商,ddgs 是无需 key 且懒加载 SDK 的提供商。agent.web_search_provider.WebSearchProvider。唯一必须实现的成员是 name、is_available(),以及你所实现的 search() / extract() / crawl() 中的相应方法。| 键 | 用途 |
|---|---|
kind: backend | 将插件路由至后端加载路径 |
provides_web_providers | 该插件注册的提供商 name 列表——在 register() 运行之前,加载器即可通过此字段在 hermes tools 中公示插件 |
requires_env | 在 hermes plugins install 期间进行交互式凭据提示(富格式说明参见构建 Hermes 插件) |
agent/web_search_provider.py。可覆盖的方法如下:| 成员 | 必须 | 默认值 | 用途 |
|---|---|---|---|
name | ✅ | — | 在 web.*_backend 配置中使用的稳定 id |
display_name | — | name | 在 hermes tools 中显示的标签 |
is_available() | ✅ | — | 轻量可用性检查——环境变量、可选依赖等 |
supports_search() | — | True | web_search 路由的能力标志 |
supports_extract() | — | False | web_extract 路由的能力标志 |
search(query, limit) | 条件必须 | 抛出异常 | 当 supports_search() 返回 True 时必须实现 |
extract(urls, **kwargs) | 条件必须 | 抛出异常 | 当 supports_extract() 返回 True 时必须实现 |
search() 和 extract() 均可定义为 async def——调度器通过 inspect.iscoroutinefunction 检测协程函数 并相应地进行 await。对于小型后端,执行阻塞 I/O(HTTP、SDK 调用)的同步实现也完全可行;调度器会处理线程调度。supports_* 标志将调用路由至正确的提供商。一种常见的多提供商配置:web.search_backend 或 web.extract_backend 未设置时,均回退至 web.backend。若该项也未设置,Hermes 将根据环境变量的存在情况,选取第一个支持所请求能力的可用提供商。False)即可,注册表会在对应工具调用时跳过它——当用户仅将 X 用于搜索而要求 agent 进行提取时,不会看到误导性的"提供商 X 失败"错误。