Day 4 · 调用内置工具:搜索、终端、浏览器
在一次对话里让 Hermes 至少调用 2 个内置工具(推荐 terminal + web_search),并看到它主动决定「用什么工具、为什么用」。
- 已完成 Day 2,主对话能正常使用
- 本机装了 Chrome(做 browser 部分时需要,前两个工具不需要)
工具 ≠ 技能
Section titled “工具 ≠ 技能”这是很多人一开始的困惑:
| 工具(Tool) | 技能(Skill) | |
|---|---|---|
| 粒度 | 低:一个原子能力 | 高:一段可复用工作流 |
| 例子 | web_search、terminal、read_file | code-review、daily-standup |
| 谁决定用 | Hermes 自己根据对话判断 | 你显式触发(/skill-name)或在对话里暗示 |
| 在哪里定义 | 内置,跟着版本发布 | 社区包,从 Skills Hub 安装 |
今天只讲工具。技能在 Day 5。
-
看看有哪些工具可用
在对话里输入:
/tools list或在终端(退出会话后):
Terminal window hermes tools --summary你会看到按 toolset 分组的工具列表。核心 toolset 包括:
toolset 里面是什么 webweb_search、web_extract——搜索、抓网页正文terminalterminal、process、read_file、patch——shell 执行、读写文件browserbrowser_navigate、browser_snapshot、browser_vision——驱动 Chromevisionvision_analyze——图片理解memorymemory、session_search——读写长期记忆(Day 6 会讲)todotodo——管理任务清单cronjobcronjob——定时任务(Day 7 会讲) -
试一下 terminal 工具
这个工具在 Day 1 你就已经用过了,但今天我们有意识地观察它:
你:用 terminal 统计当前目录下有多少 .md 文件正常情况下 Hermes 会:
- 告诉你它要运行什么命令(
find . -name "*.md" | wc -l之类) - 等你按回车确认(危险命令会强制确认,普通命令可配置为自动批准)
- 给你运行结果
- 告诉你它要运行什么命令(
-
试一下 web_search 工具——先解决 API Key
Hermes 的联网搜索默认走 Firecrawl(一个专业的爬虫 SaaS)。三条路径任选:
选择 怎么配 适合谁 Firecrawl 云服务 hermes config set FIRECRAWL_API_KEY fc-xxx(注册 firecrawl.dev 拿 key)想省事、不介意有云调用 自建 Firecrawl Docker 起一套,然后 hermes config set FIRECRAWL_API_URL http://localhost:3002隐私要求高、有 4–8GB 空闲内存 Nous Tool Gateway 订阅 Nous Portal,自动走 Portal 的工具代理,零配置 已经在用 Nous Portal 的付费用户 什么都不配 自动回退到内置的 duckduckgo-search技能(免费但质量一般)临时试试、低频场景 -
试一下 web_search
配好 Key 后,启动 Hermes,问一个需要实时信息的问题:
你:帮我搜一下 2025 年 Claude 4 发布的时间线Hermes 应该:
- 判断这需要联网(训练数据截止期之外的信息)
- 调用
web_search - 再用
web_extract抓几个结果页的正文 - 归纳给你带引用的答案
回复里应出现
[1][2]这类引用标记,点过去是原文链接。这就是 Hermes 调用工具成功的标志。 -
试一下 browser 工具——先启动带 CDP 的 Chrome
浏览器工具的原理是 Chrome DevTools Protocol (CDP):Hermes 连接一个开着调试端口的 Chrome 实例,通过协议驱动它。必须先把 Chrome 启动起来再连。
macOS:
Terminal window "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \--remote-debugging-port=9222 \--user-data-dir="$HOME/.hermes/chrome-debug" \--no-first-run &Linux:
Terminal window google-chrome \--remote-debugging-port=9222 \--user-data-dir="$HOME/.hermes/chrome-debug" \--no-first-run & -
连接并使用 browser
在 Hermes 对话里:
你:/browser connect应该回复
Connected to ws://localhost:9222。然后让它做点事:你:打开 https://news.ycombinator.com,告诉我第一页排名前 5 的帖子标题和链接。Hermes 会依次调用
browser_navigate→browser_snapshot(读取页面 accessibility tree)→ 归纳结果。全程你能在那个 Chrome 窗口里眼看着它在点。结束后:
你:/browser disconnect退出这个 CDP 连接,让 Hermes 回到默认模式。
-
按平台启用不同的工具
你可能不希望 Telegram 里的机器人能执行 shell 命令。
hermes tools(在终端,不是在对话里)会打开一个按平台配置的交互界面:Terminal window hermes tools典型的安全配置:
平台 启用的 toolset CLI(本地终端) 全部 Telegram / Discord / Slack 只开 web、memory、todo,关闭terminal和browserWebUI web、browser、vision这份配置写在
~/.hermes/config.yaml的toolsets字段下,可以手动编辑。
一次完整对话应该能看到 Hermes 自主选择和调用工具:
你:这个月 NousResearch/hermes-agent 仓库合并了哪些 release?
Hermes: 让我查一下最新的 release 信息。 → [tool] web_search: "NousResearch hermes-agent releases 2026" → [tool] web_extract: https://github.com/NousResearch/hermes-agent/releases
根据最新数据,这个月合并的 release 包括 ...(引用 [1][2])