跳转到内容

Day 4 · 调用内置工具:搜索、终端、浏览器

在一次对话里让 Hermes 至少调用 2 个内置工具(推荐 terminal + web_search),并看到它主动决定「用什么工具、为什么用」。


  • 已完成 Day 2,主对话能正常使用
  • 本机装了 Chrome(做 browser 部分时需要,前两个工具不需要)

这是很多人一开始的困惑:

工具(Tool)技能(Skill)
粒度低:一个原子能力高:一段可复用工作流
例子web_searchterminalread_filecode-reviewdaily-standup
谁决定用Hermes 自己根据对话判断你显式触发(/skill-name)或在对话里暗示
在哪里定义内置,跟着版本发布社区包,从 Skills Hub 安装

今天只讲工具。技能在 Day 5。


  1. 看看有哪些工具可用

    在对话里输入:

    /tools list

    或在终端(退出会话后):

    Terminal window
    hermes tools --summary

    你会看到按 toolset 分组的工具列表。核心 toolset 包括:

    toolset里面是什么
    webweb_searchweb_extract——搜索、抓网页正文
    terminalterminalprocessread_filepatch——shell 执行、读写文件
    browserbrowser_navigatebrowser_snapshotbrowser_vision——驱动 Chrome
    visionvision_analyze——图片理解
    memorymemorysession_search——读写长期记忆(Day 6 会讲)
    todotodo——管理任务清单
    cronjobcronjob——定时任务(Day 7 会讲)
  2. 试一下 terminal 工具

    这个工具在 Day 1 你就已经用过了,但今天我们有意识地观察它:

    你:用 terminal 统计当前目录下有多少 .md 文件

    正常情况下 Hermes 会:

    1. 告诉你它要运行什么命令find . -name "*.md" | wc -l 之类)
    2. 等你按回车确认(危险命令会强制确认,普通命令可配置为自动批准)
    3. 给你运行结果
  3. 试一下 web_search 工具——先解决 API Key

    Hermes 的联网搜索默认走 Firecrawl(一个专业的爬虫 SaaS)。三条路径任选:

    选择怎么配适合谁
    Firecrawl 云服务hermes config set FIRECRAWL_API_KEY fc-xxx(注册 firecrawl.dev 拿 key)想省事、不介意有云调用
    自建 FirecrawlDocker 起一套,然后 hermes config set FIRECRAWL_API_URL http://localhost:3002隐私要求高、有 4–8GB 空闲内存
    Nous Tool Gateway订阅 Nous Portal,自动走 Portal 的工具代理,零配置已经在用 Nous Portal 的付费用户
    什么都不配自动回退到内置的 duckduckgo-search 技能(免费但质量一般)临时试试、低频场景
  4. 试一下 web_search

    配好 Key 后,启动 Hermes,问一个需要实时信息的问题:

    你:帮我搜一下 2025 年 Claude 4 发布的时间线

    Hermes 应该:

    1. 判断这需要联网(训练数据截止期之外的信息)
    2. 调用 web_search
    3. 再用 web_extract 抓几个结果页的正文
    4. 归纳给你带引用的答案

    回复里应出现 [1] [2] 这类引用标记,点过去是原文链接。这就是 Hermes 调用工具成功的标志。

  5. 试一下 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 &
  6. 连接并使用 browser

    在 Hermes 对话里:

    你:/browser connect

    应该回复 Connected to ws://localhost:9222。然后让它做点事:

    你:打开 https://news.ycombinator.com,告诉我第一页排名前 5 的帖子标题和链接。

    Hermes 会依次调用 browser_navigatebrowser_snapshot(读取页面 accessibility tree)→ 归纳结果。全程你能在那个 Chrome 窗口里眼看着它在点

    结束后:

    你:/browser disconnect

    退出这个 CDP 连接,让 Hermes 回到默认模式。

  7. 按平台启用不同的工具

    你可能不希望 Telegram 里的机器人能执行 shell 命令。hermes tools(在终端,不是在对话里)会打开一个按平台配置的交互界面:

    Terminal window
    hermes tools

    典型的安全配置:

    平台启用的 toolset
    CLI(本地终端)全部
    Telegram / Discord / Slack只开 webmemorytodo关闭 terminalbrowser
    WebUIwebbrowservision

    这份配置写在 ~/.hermes/config.yamltoolsets 字段下,可以手动编辑。


一次完整对话应该能看到 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])