
1. 为什么工具调用是 Agent 的核心学习 Hermes Agent 时我发现一个很关键的问题如果一个大模型只能生成文本那么它本质上仍然是一个问答系统。它可以解释概念可以生成代码可以给出建议但它无法直接进入真实环境完成任务。例如用户让它“帮我分析当前项目”如果没有工具调用能力它只能要求用户把目录结构、文件内容和报错信息复制给它。用户提供多少它就分析多少。它无法自己查看文件也无法自己运行测试更无法根据执行结果继续调整判断。但是有了工具调用之后情况就不同了。Agent 可以自己读取目录、打开文件、搜索网页、执行命令、分析浏览器页面、管理记忆、调用外部 API。它不再只是根据用户粘贴的信息生成回答而是可以主动从环境中获取信息并根据任务目标执行下一步操作。这就是工具调用的意义没有工具调用模型只能回答问题。 有了工具调用模型可以围绕任务采取行动。所以工具调用系统是 Hermes Agent 从 Chatbot 走向 Agent 的关键环节。2. 工具调用的基本流程从用户体验上看工具调用好像很自然用户提出任务Agent 就开始读文件、执行命令、搜索信息。但从机制上看这个过程可以拆成几个步骤。一个典型流程是用户提出任务 ↓ 模型理解任务目标 ↓ 模型判断是否需要工具 ↓ 选择合适工具 ↓ 生成工具调用参数 ↓ 系统执行工具 ↓ 工具返回结果 ↓ 模型根据结果继续推理 ↓ 输出回答或继续调用工具例如用户输入请分析当前项目的主要模块并告诉我入口文件在哪里。Hermes Agent 可能会先调用终端工具查看目录ls然后读取 READMEread_file README.md接着查看配置文件read_file pyproject.toml最后根据这些工具返回的内容给出项目结构分析。这里需要注意真正做出最终判断的仍然是模型但模型的判断已经不再只依赖训练知识而是结合了当前环境中的真实信息。因此工具调用可以看作是 Agent 的“感知与行动接口”。3. Hermes Agent 中的工具类型Hermes Agent 的工具可以按用途分成几类。3.1 Web 工具获取外部信息Web 工具主要用于搜索网页和提取网页内容。这类工具适合处理需要最新信息或外部资料支撑的任务。例如请搜索 Hermes Agent 最新文档并总结它当前支持哪些工具类型。或者请查找某个开源项目的官方文档并总结安装流程。Web 工具的作用是让 Agent 不再只依赖模型训练时的知识而是可以访问当前网络上的信息。对于开源项目学习、论文调研、技术文档查询、产品资料核对等任务来说Web 工具非常重要。3.2 Terminal 工具执行命令Terminal 工具让 Hermes Agent 可以执行命令。例如ls pwd git status pytest npm test python script.py这类工具非常强大因为它让 Agent 能够真正进入本地开发环境。它可以查看目录运行测试检查依赖读取程序输出定位报错原因。但是Terminal 工具也是最需要谨慎使用的工具之一。因为终端命令不仅可以读取信息也可以修改系统状态。例如rm -rf git reset --hard pip install npm install docker stop这些命令可能删除文件、重置代码、修改环境或影响运行服务。所以使用 Terminal 工具时我认为最重要的习惯是先让 Agent 说明计划再让它执行。比如请先告诉我你准备执行哪些命令以及每条命令的作用。不要立即执行。这样可以减少误操作风险。3.3 File 工具读取和修改文件File 工具主要用于文件读取、文件编辑和补丁应用。这类工具和 Terminal 工具经常配合使用。例如Agent 可以先通过终端查看目录再用 File 工具读取具体文件最后通过 patch 修改代码。在学习源码或分析项目时File 工具通常用于只读分析请读取 README.md 和 src/main.py解释项目启动流程。不要修改文件。在代码修改场景中File 工具则可以用于精确改动请只修改 src/utils.py 中的 parse_config 函数不要改动其他文件。需要注意的是文件修改最好小步进行。不要一开始就让 Agent “重构整个项目”。更稳妥的方式是先让它提出修改计划再让它修改一个文件或一个函数。3.4 Browser 工具与网页进行交互Web 搜索和 Browser 工具有明显区别。Web 搜索更像是“查资料”适合搜索和提取网页内容。Browser 工具则更像是“操作网页”适合打开页面、点击按钮、填写表单、读取页面状态、截取页面快照等。例如请打开这个本地前端页面检查登录按钮是否可以点击。或者请访问项目文档页面并查看导航栏中有哪些模块。Browser 工具适合处理动态网页和交互式任务。比如测试本地 Web 应用、查看页面元素、分析控制台错误等。这类能力让 Agent 更接近一个自动化浏览器操作员而不仅是一个网页摘要工具。3.5 Vision 与 Media 工具处理图像、语音和多模态内容Hermes Agent 还支持与图像、语音、多媒体相关的工具例如图像分析、图像生成、文本转语音等。这些工具让 Agent 不再局限于纯文本任务。比如用户可以让它分析截图、理解界面、生成图片或把文本转成语音。对于普通源码学习来说这类工具不是最核心的。但如果要把 Hermes Agent 用在产品分析、UI 测试、内容生成或多模态任务中这类工具就很有价值。3.6 Memory 与 Session Search 工具跨会话回忆Memory 工具用于持久记忆Session Search 用于搜索过去的会话。这类工具很特殊因为它们不是直接操作外部文件或网页而是让 Agent 能够利用自己过去积累的信息。例如用户之前多次讨论某个项目Hermes 可以通过 session search 找回相关历史对话再结合当前任务继续推进。这类能力是长期 Agent 的基础。没有记忆和会话搜索Agent 每次都像重新开始有了记忆和历史检索Agent 才能在长期任务中形成连续性。3.7 Cron 与 Messaging 工具自动化和结果投递Cron 工具用于创建、更新、暂停、恢复和删除定时任务。Messaging 工具则用于把结果发送到外部平台。这类工具让 Hermes Agent 具备更强的长期自动化能力。例如每周五下午帮我总结这个项目的 issue 和 PR 状态并把结果发给我。这个任务背后可能涉及定时触发 读取 GitHub 状态 总结信息 发送消息这已经不是一次普通对话而是一个长期自动化工作流。3.8 MCP 工具连接外部工具生态MCP 是 Model Context Protocol 的缩写。简单理解MCP 提供了一种标准化方式让 Agent 可以连接外部工具服务器。Hermes Agent 支持通过 MCP 接入外部工具。例如 GitHub、数据库、文件系统、浏览器工具、内部 API 等都可以通过 MCP server 暴露给 Hermes 使用。这意味着 Hermes 的工具能力不是固定的。除了内置工具外它还可以通过 MCP 扩展到更大的工具生态。从架构角度看MCP 的意义很大。因为如果每个 Agent 项目都自己定义工具协议那么工具生态会非常割裂而 MCP 提供了一种更统一的连接方式让外部工具更容易被 Agent 使用。4. Tool 和 Toolset 的区别在 Hermes Agent 中除了 tool还有一个很重要的概念叫 toolset。简单理解tool一个具体工具。 toolset一组工具的集合。例如read_file 是一个 tool terminal 是一个 toolset web 是一个 toolset browser 是一个 toolset memory 是一个 toolsetToolset 的作用是把相关工具组合起来方便用户按场景启用。比如用户只想让 Hermes 做网页资料检索可以启用 web toolset如果要分析本地项目可以启用 file 和 terminal toolset如果要做网页交互测试可以启用 browser toolset。在命令行中可以指定 toolsetshermes chat --toolsets web,terminal这表示本次对话启用 web 和 terminal 相关工具。也可以使用hermes tools进入交互式工具管理界面查看和启用具体工具。Toolset 的意义在于控制 Agent 的能力边界。如果所有工具都默认打开Agent 可能拥有过强权限容易带来风险如果工具过少Agent 又无法完成任务。因此合理选择 toolset 是使用 Hermes Agent 的关键。5. 工具调用并不等于完全自动化这里需要特别强调一点工具调用不等于完全自动化。很多人一看到 Agent 可以调用工具就会以为它可以完全自主完成任务。但实际上工具调用只是给模型提供了行动能力并不保证它每次都能做出正确判断。Agent 可能会选错工具可能会生成错误参数也可能误解工具返回结果。尤其是在复杂任务中它需要多次调用工具每一步都可能产生偏差。因此使用工具调用型 Agent 时要把它看成一个可以执行操作的智能助手而不是完全可靠的自动驾驶系统。用户仍然需要设定边界、检查计划、确认高风险操作并在关键步骤进行监督。6. 一个典型工具调用案例分析代码项目下面以分析一个代码项目为例梳理 Hermes Agent 如何使用工具。用户进入项目目录cd ~/projects/demo hermes然后输入请只读分析当前项目。先查看目录结构再读取 README 和主要配置文件最后总结项目功能、技术栈和主要模块。不要修改任何文件。Hermes 可能会执行以下步骤1. 调用 terminal 工具查看当前目录 2. 调用 terminal 工具查看文件树 3. 调用 file 工具读取 README.md 4. 调用 file 工具读取 package.json 或 pyproject.toml 5. 根据文件内容判断项目类型 6. 总结项目功能、技术栈和模块结构。如果用户继续问请找出项目主入口文件并解释程序启动流程。Hermes 可能继续读取入口文件和相关模块。如果用户再问请判断这个项目应该如何运行测试。先说明命令不要立即执行。Hermes 可能会读取测试配置然后给出pytest或者npm test然后等待用户确认。这个过程体现了 Agent 的典型工作方式先感知环境再选择工具再基于结果继续推理。7. 工具调用中的安全边界Hermes Agent 的工具能力越强安全边界就越重要。我认为至少需要注意以下几类风险。7.1 文件修改风险如果 Agent 可以修改文件就可能误改代码、覆盖配置或删除重要内容。所以在只读分析阶段最好明确写不要修改、删除或创建任何文件。在允许修改时也要限制范围只修改 src/parser.py 这个文件。或者只生成 patch不要直接应用。7.2 命令执行风险Terminal 工具可以执行命令这意味着它可能影响系统环境。高风险命令包括rm mv chmod chown sudo git reset pip install npm install docker systemctl不是说这些命令永远不能用而是不能让 Agent 在没有说明计划的情况下直接执行。更安全的提示词是涉及安装、删除、重置、覆盖、权限修改的命令都必须先向我说明并等待确认。7.3 网络访问风险Web 和 Browser 工具可以访问外部网站。如果任务涉及登录、账号、Token、后台管理系统就需要特别谨慎。比如不要让 Agent 随意在真实业务系统中提交表单不要把敏感凭据直接暴露给 Agent也不要在不清楚后果的情况下让它执行交易、付款、删除数据等动作。7.4 MCP 工具风险MCP 可以把很多外部系统接入 Hermes。它很强大但也意味着风险更复杂。例如GitHub MCP 可能可以创建 issue、修改 PR数据库 MCP 可能可以查询甚至修改数据企业内部 API MCP 可能触发业务流程。所以 MCP 工具更需要权限最小化。只暴露任务需要的工具不要把所有接口都直接开放给 Agent。8. 如何写适合工具调用的提示词使用 Hermes Agent 时提示词不能只写“帮我看看”。更好的方式是把目标、步骤、边界和输出格式说清楚。一个通用模板是请完成以下任务 目标 …… 步骤 1. 先…… 2. 再…… 3. 最后…… 限制 1. 不要…… 2. 如果需要执行高风险操作先说明并等待确认。 3. 不要修改指定范围以外的文件。 输出 请按照……格式输出。例如请只读分析当前 Python 项目。 目标 判断项目的主要功能、技术栈和启动流程。 步骤 1. 查看目录结构 2. 读取 README.md 3. 读取 pyproject.toml 或 requirements.txt 4. 找出主入口文件 5. 总结核心模块。 限制 1. 不要修改任何文件 2. 不要安装任何依赖 3. 执行命令前先说明目的 4. 只使用只读命令。 输出 请用“项目概述、技术栈、入口文件、核心模块、下一步阅读建议”五个部分回答。这种提示词对 Agent 更友好因为它明确告诉 Agent 应该如何使用工具而不是让它自由猜测。9. 工具系统背后的架构理解从开发者角度看Hermes Agent 的工具系统大致可以理解为三层。第一层是工具注册层。每个工具需要声明自己的名称、所属 toolset、参数 schema、执行 handler 和可用性检查。第二层是工具选择层。模型在对话过程中根据用户任务和当前工具 schema 判断是否需要调用工具以及调用哪个工具。第三层是工具执行层。当模型生成工具调用请求后Hermes 的运行时负责实际执行对应 handler并把结果返回给模型。这个架构有一个好处工具本身和模型推理相对解耦。工具可以不断扩展模型只需要看到工具 schema就能根据任务选择调用。这也是为什么 MCP 很重要。MCP 本质上进一步扩大了工具注册和发现的范围让外部工具也可以进入 Agent 的工具列表。10. 学习 Hermes 工具系统的路线如果只是普通使用者可以按照下面的顺序学习第一步学会查看当前可用工具 第二步学会用 toolsets 控制工具范围 第三步学会让 Hermes 只读分析文件 第四步学会让 Hermes 执行安全命令 第五步学会在修改文件前要求计划 第六步学会配置浏览器和 Web 工具 第七步再学习 MCP 扩展。如果是开发者后续可以进一步学习工具注册机制 工具 schema 设计 工具 handler 执行流程 可用性检查 check_fn toolset 组合机制 MCP 工具发现 插件工具注册这样就可以从“会使用工具”进一步走向“会扩展工具”。11. 小结这一期主要学习了 Hermes Agent 的工具调用系统。我的理解是工具调用是 Hermes Agent 成为 Agent 的关键。没有工具模型只能生成回答有了工具模型才能读取环境、执行命令、操作网页、调用外部系统并围绕真实任务持续推进。Hermes Agent 的工具体系包括 Web、Terminal、File、Browser、Media、Memory、Cron、Messaging、MCP 等多种能力。Tool 是具体能力Toolset 是能力集合。通过合理配置 toolsets用户可以控制 Agent 的能力边界。不过工具调用也带来了新的风险。Agent 一旦可以修改文件、执行命令、访问网页、调用外部 API就必须重视权限、确认机制和安全边界。因此使用 Hermes Agent 的正确方式不是把所有权限全部交给它而是让它在明确目标、明确步骤、明确限制的前提下完成任务。下一期我将继续学习 Hermes Agent 的 Memory 系统重点分析长期记忆如何让 Agent 跨会话保存用户偏好、项目背景和任务经验以及 memory 与普通上下文窗口之间的区别。