🤖HermesBlog
Hermes 功能详解 · 第1篇2026/8/9· Easy Understand Hermes Agent

第1篇:工具与工具集——AI 的“手脚”

Hermes 功能详解第1篇:工具与工具集。AI 怎么联网、查文件、执行命令,全靠这些工具。

工具与工具集:AI 的手脚

第1篇:工具与工具集——AI 的“手脚”

大家好呀!今天咱们来聊聊 Hermes Agent 里最接地气的一个概念:工具(Tools)和工具集(Tool Sets)。

你可以把 AI 想象成一个超级聪明但“手无寸铁”的大脑——它再聪明,如果没法上网查资料、没法读写文件、没法调用计算器,那很多事还是干不了。而工具,就是给这个大脑装上“手脚”,让它能真正动手干活。

工具到底是什么?

简单说,工具就是一段可以被 AI 调用的函数。比如:

  • 一个 web_search 工具,让 AI 能上网搜东西
  • 一个 read_file 工具,让 AI 能读你电脑上的文件
  • 一个 terminal 工具,让 AI 能执行命令

每个工具都有名字、描述和参数。AI 会根据你的问题,自己决定该用哪个工具、怎么用。

目前官方注册表里大约有 85 个工具:4 个浏览器工具(browser_exec、browser_cdp、browser_dialog、browser_vault),4 个文件工具,2 个终端工具(terminal、process_manage),11 个桌面 GUI 工具(read_terminal、close_terminal、desktop_preview、drive_preview、annotate_preview、read_window_below、focus_pane、react_to_message、gui_tour、show_tip、set_theme,仅桌面应用会话可用),2 个网页工具,5 个飞书工具,5 个元宝工具,14 个看板工具(看板调度器拉起 agent 时才注册),1 个项目工具(desktop_project,桌面/GUI 会话),2 个 Discord 工具,3 个视频工具(video_generate、xai_video_edit、xai_video_extend),以及一批独立工具(memory、clarify、delegate_task、execute_code、cronjob_manage、session_search、skill_view/skill_manage/skills_list、text_to_speech、image_generate、vision_analyze、video_analyze、todo_list、computer_use、x_search)。

除了内置工具,Hermes 还能从 MCP 服务器动态加载工具。这类工具的名字会带上 mcp__<server>__ 前缀,比如 github 这个 MCP 服务器提供的 mcp__github__create_issue。想配置的话可以看 MCP 集成文档:https://hermes-agent.nousresearch.com/docs/user-guide/features/mcp

顺带一提,浏览器工具这边现在以 browser_exec 和 browser_vault 为主:它们驱动的是当前浏览器会话——Hermes 自己拉起的 Chromium、云浏览器,或者用 /browser connect 接上的浏览器。browser_exec 用预导入好辅助函数(new_tab、goto_url、wait_for_load、page_info、js、fill_input、click_at_xy、capture_screenshot、cdp、ensure_real_tab)的 Python 来操作真实浏览器,浏览器状态跨调用保留、Python 变量不保留,session 用来隔离并发任务,timeout_s 默认 300(最大 1800),需要 terminal 工具集。browser_vault 则能在当前页面上使用已保存的登录、密码、卡片、地址和一次性验证码,而不会让密钥进入对话,动作有 list、fill、save_login、enter_code、unlock。browser_cdp 和 browser_dialog 只在配置了 CDP 端点(/browser connect、BROWSER_CDP_URL 或 browser.cdp_url)时才提供,并且作用于那个浏览器;自己拉起和云端的会话里没有它们。

工具集:把工具打包管理

工具多了以后,总不能每次都一个个手动开关吧?所以 Hermes 引入了**工具集(Tool Sets)**的概念——你可以把常用工具打包成一组,按需启用。

比如:

hermes tools          # 查看和配置当前启用的工具

这个命令会打开一个交互界面,你可以勾选/取消勾选工具集,比如“网页搜索”、“文件操作”、“代码执行”等等。按需启用,省 token 又省心。

新版本有什么变化?

最新文档里,安装和配置流程也大大简化了。安装完成后,你可以用这些命令快速调整:

hermes model          # 选择 LLM 提供商和模型
hermes tools          # 配置启用的工具
hermes gateway setup  # 设置消息平台(如 Telegram、Slack)
hermes config set     # 设置单个配置项
hermes config get     # 查看单个配置项
hermes setup          # 或者直接跑完整配置向导

如果你不想一个个配,还有一条捷径:

hermes setup --portal

这一条命令会帮你登录 Nous Portal、把提供商设为 Nous、并自动开启 Tool Gateway(包含网页搜索、图片生成、TTS、云浏览器等工具)。一个订阅,300+ 模型,工具全开,不用再一个个去申请 API key 了。

工具网关(Tool Gateway)是什么?

这是新版本的一个亮点。以前你想让 AI 搜网页,得自己去申请搜索 API 的 key,再配置进去。现在有了 Tool Gateway,这些工具由 Nous 云端统一托管,你只需要一个订阅,就能直接调用。

对于新手来说,这意味着:装完就能用,不用折腾各种 key。

连接外部应用:connections 工具集

新版本还多了一个 connections 工具集,专门用来管外部应用的连接。它把两种东西统一到一个工具 manage_connections 里:一种是 Nous 网关托管的应用(比如 Gmail),另一种是你本地配置的 MCP 服务器(比如 Linear)。

常用动作有 status(看状态,每个连接器会列出它的 accounts:别名、标签、状态、是否激活)、connect(连接)、reconnect(修复没连上的,加 force: true 可以强制重启一个正常工作的)、rename(改名)。连接或重连的目标可以带账号名({"name": "gmail", "alias": "work"}):用一个新名字 connect 就是再加一个账号,带名字 reconnect 只修那个账号、不会删任何东西。rename 一次只处理一个目标,形如 {"name": "gmail", "alias": "work", "to": "office"};alias 也可以填一个未命名账号的应用标签。MCP 那边(只对 mcp: true 的目标)还支持 install(装一个目录条目)、enable(启用一个被禁用的已配置服务器)、authorize(走 OAuth)。在桌面端、终端 UI 和经典 CLI 里,每个动作都会弹一张卡片,一直等到每个目标都连上、跳过或超过 300 秒的截止时间为止;结果会把目标标为 connected、skipped 或 not_connected,并且不带链接。MCP 的 install 会在卡片里收集该条目的配置值,如果它带 OAuth 就在卡片里跑授权(链接由用户自己打开,不会自动弹出),服务器接受 token 后把配置、token 和值一起保存。连上的 MCP 目标会带上 tools(注册的工具名)和 tools_listing,这些工具在同一轮里就能通过 tool_describe/tool_call 调用。带 discovery_error 的目标表示已授权但工具列不出来,再对它调一次 install 或 authorize 就能在不重新授权的情况下重试发现。

在没有卡片的场景(消息平台、脚本化调度),托管目标会按应用返回一个 connect_url 让用户自己点开,MCP 目标则立即执行:authorize 和带 OAuth 的 install 返回授权 URL,其他 install 和 enable 直接报告结果,缺凭证会以 failed 返回并指明要设置哪个变量。注意它不能断开、移除或撤销账号,那些得用户自己来。另外,一次调用的截止时间是固定的 5 分钟,由后端在调用开始时定死,重开聊天或重启桌面端都不会延长;而且只有当 Nous Portal 给登录账号开了连接器(token 上的 managed_tools 声明)时,这个工具才会出现,其他会话看不到它。

会“反问”的工具:clarify

新手最容易忽略、但特别好用的一个工具是 clarify——当你(AI)需要澄清、反馈或者做个决定才能继续时,就用它来问用户问题。

它每次调用都传一个 questions 数组,里面放 1~5 个问题(只有一个问题也要写成单元素数组)。每个问题支持三种模式:

  1. 单选——最多 4 个选项,用户挑一个,或者通过第 5 个“其他”选项自己输入答案。
  2. 多选——设 multi_select=true,会渲染成复选框,返回选中的选项列表。
  3. 开放式——不给选项,用户自由输入。

选项按“最优在前”排序,所以第一个选项在每个界面上都会标上 (Recommended),并且默认高亮;这个标签只是展示用的,AI 读到的答案里会把它去掉。经典 CLI 里多选用空格键勾选;没有原生复选框的消息平台上,用户直接回复逗号/空格分隔的编号(比如“1, 3”)或选项文字就行。

一次可以批量问好几个问题,不用一个个来回问。返回结果是 {responses, outcome}:responses 按顺序排列,每项带问题文本、choices_offered、status(answered/skipped/unanswered)和 user_response(没回答就是 null);outcome 是 submitted、cancelled、timed_out 或 undelivered。

不同界面的表现也不一样:

  • 桌面端把所有问题放在一张卡片上,选择和输入先暂存,最后点一次 Confirm and continue(至少答了一题才会亮)整批提交,空着的问题自动跳过;提交前都能改,点跳过则整批取消。
  • TUI 和 CLI显示一个紧凑的状态列表(✓ 已答 / ▸ 当前 / · 待答),只展开当前问题的选项。回车锁定当前答案并跳到下一个未答问题,Tab 可以在问题间自由切换,空提交就是跳过,Esc 取消整批。
  • 消息平台(Telegram、Discord 等)一次只问一个问题,一题一张卡片。回复 skip 跳过;用户不回,剩下的问题就不再发了。

如果中途超时,用户已经锁定的答案会保留下来,结果里带 "outcome": "timed_out",其余标成 "status": "unanswered"——这样 AI 就能分清“用户主动跳过”和“用户没在”。消息平台上还会附一个 "notice" 说明等待为什么结束(比如 [user did not respond within Nm],或者卡片被平台拒收时的 [clarify prompt could not be delivered],Hermes 会先退一步用纯文本编号列表重发一次,只有这次也失败才这么报;如果这次运行压根没有可提问的聊天界面,则是 [clarify prompt could not be delivered: no chat surface])。所以“没送达”永远不会被误报成“用户不理你”。

后台进程与结果保留

除了直接调用工具,Hermes 还能把命令放到后台跑。用 terminal 工具加 background=true 启动后,会返回一个 session_id,之后就能用 process_manage 工具管理它:

process_manage(action="list")       # 查看所有进程
process_manage(action="poll", session_id="proc_abc123")   # 查看状态
process_manage(action="wait", session_id="proc_abc123")   # 阻塞直到完成
process_manage(action="log", session_id="proc_abc123")    # 查看完整输出
process_manage(action="kill", session_id="proc_abc123")   # 终止进程
process_manage(action="write", session_id="proc_abc123", data="y")  # 发送输入

新版本里,已经完成的后台命令会保留退出状态和捕获的输出。你只要回到当初启动它的那个对话(或它的压缩续接),再用原来的 session_id 调用 process_manage(action="log") 看输出、process_manage(action="poll") 看退出状态就行。Hermes 会保留最新的 64 条已完成结果,从完成时刻起最多保留 7 天,存放在 profile 的 Hermes home 下的 logs/process-results/ 里。每条结果最多保留现有的滚动 200,000 字符输出尾部,并且始终套用终端密钥脱敏规则。注意:无关的对话、或者没有绑定所属会话的请求,即使拿到准确的进程句柄也读不到这些保留结果;恢复也不会重新执行命令或重放完成通知。

文件写入的“整文件基线”

文件工具这边也有个值得留意的细节:对于本地文件,一次完整的、未脱敏的读取(包括同一文件版本的所有分页)、一次成功的 write_file,或者你自己对某个已经完整读过的文件做的 patch,都会建立一个整文件基线。之后只要字节没变,再读一小块区域也不会丢掉这个基线。但如果文件被别的写入者改过、你压根没读过、或者只 patch 过却没完整读过,又或者视图里有隐藏/脱敏/被截断的内容,那在替换之前仍然需要先完整读一遍当前内容;当然,patch 依然可以用于定点编辑。另外要记住:通过终端命令或 execute_code 做的写入,不会建立 write_file 的基线。

定时任务与项目工作区

新版本还统一了定时任务管理:用 cronjob_manage 工具,通过 action="create"、"list"、"update"、"pause"、"resume"、"run"、"remove" 来管理任务,支持挂载一个或多个技能(更新时传 skills=[] 可清空)。Cron 运行在全新会话里,不带当前聊天上下文。

桌面/GUI 会话里还多了 desktop_project 工具,一个动作枚举管三件事:create 新建一个桌面项目(命名工作区)并把当前对话切进去(传 path 可锚定到某个仓库/文件夹);list 列出所有桌面项目和当前激活的那个;switch 按名称、slug 或 id 把当前对话切到已有项目,并把会话工作区移到该项目的主文件夹。

桌面专属的两个新工具集:catalog 和 setup

新文档里还冒出两个只在桌面端出现的工具集,值得单独说一下。

catalog 工具集:只对来源是桌面应用的会话启用(不管它连的是哪个后端)。CLI、TUI、hermes -z、cron、看板和消息会话永远拿不到它,哪怕你在配置列表里点名要它也没用;all 也不包含它。想去掉的话用 agent.disabled_toolsets: [catalog]。它里面的 manage_catalog 工具默认藏在 tool_search 后面(延迟加载)。search 会列出匹配 query 的目录插件和 hub 技能(可以再限定一个 kind),带上 id、kind、display、tier、platforms 和 installed(是否已存在于当前聊天的 profile),纯查询、不改任何东西。install 接收 items: [{kind, id}],弹一张审批卡片,每个条目一行(Install、Advanced、Skip);目录里不认识的 id,或者当前系统跑不了的插件,会直接画成失败并给出原因。批准的那一行会按目录里审过的 commit 装进当前聊天的 profile(或者在 Advanced 里选的 profile),走和 Plugins 标签页一样的 kill list、安全扫描和实时激活,所以插件的 MCP 工具和技能立刻就能在该 profile 已打开的聊天里用。结果会把每行标成 connected(带 tools 和 skill)、skipped、failed(带 detail)或 not_connected;失败的行和装好、跳过的行一样会结束等待,而且 install 会把一个已在磁盘上但没启用的目录插件打开。模型不能自己传来源、commit、profile 或设置。在别的地方调用,它会返回该跑的 hermes plugins install / hermes skills install 命令。

setup 工具集:由桌面 setup profile 自己的配置(platform_toolsets.cli)启用,只有桌面会话能拿到它的工具,CLI、hermes -z、cron、看板和消息会话永远没有;all 也不包含它,hermes tools 里也不会列出来。它的 setup_choose 工具只在 setup 工具集里、只在桌面会话可用,除非 tools.tool_search.defer 列表点了它的名,否则从不延迟。它会在 setup 聊天里弹一张卡片:kind 可以是 question、accent、theme、layout、connectors、plugins、tour 或 fork,question 是卡片标题。options 是必填的:最多 12 行 {id, label, detail?}(id 不能重复)会替换应用自带的列表,传 [] 则对选择器显示应用自带列表、对 question 类型则要求自由输入。tour(Quick tour、Show me everything、Skip)和 fork(两个首批任务,卡片出现时根据之前选的应用、插件和这台电脑生成)也都在这里。

有些工具“搬家”了:Honcho、Home Assistant 和 Spotify

如果你在旧文档里见过 Honcho 和 Home Assistant 的工具,注意它们已经不再是内置工具了,现在都改由插件提供:

Spotify 工具也一起搬走了:spotify_playback、spotify_devices、spotify_queue、spotify_search、spotify_playlists、spotify_albums、spotify_library(工具集名 spotify)不再是内置工具,现在来自 spotify 目录插件——先 hermes plugins install spotify,再 hermes spotify login,用法见:https://hermes-agent.nousresearch.com/docs/user-guide/features/spotify

所以如果你发现这些工具“不见了”,不是坏了,是去插件目录里等你自己装。

小结

  • 工具 = AI 的“手脚”,让它能真正执行任务
  • 工具集 = 把工具打包,按需启用
  • Tool Gateway = 云端托管工具,一个订阅全搞定
  • connections = 统一管理托管应用和本地 MCP 服务器的连接
  • clarify = 让 AI 在动手前先问清楚,支持单选、多选和自由回答
  • catalog / setup = 只在桌面端出现的两个工具集,一个管插件和技能的安装,一个管 setup 卡片
  • Honcho、Home Assistant 和 Spotify 工具已改为插件提供,需要单独安装
  • 配置工具用 hermes tools,快速上手用 hermes setup --portal

下一期咱们聊聊怎么用 hermes model 切换模型,让你的 AI 大脑随时换“芯”!

📖 官方文档

本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › reference/tools-reference