Hermes Agent: 工具与工具集

最后更新:2026-08-31

工具系统是 Hermes 的双手——光有大脑(LLM)不够,还需要手(工具)才能真正干活。70+ 内置工具让它能读写文件、搜索网页、执行代码、看图说话。

💡 提示:Hermes 的工具系统是可扩展的——内置 70+ 工具开箱即用,还可以自定义开发新工具。所有工具都在沙箱中执行,确保安全。

📋 前置知识:第7课 Skills 技能系统

1. 你将学到

编号 内容
70+ 内置工具分类
核心工具使用详解
工具权限与安全配置
自定义工具开发
工具集管理

2. 故事

(1) 痛点:AI 只会说不会做

Bob 让 ChatGPT "帮我查一下当前天气",AI 只能说"我无法联网"。让 AI "运行这段代码看结果",也做不到。

(2) 解法:70+ 工具让 Agent 真正干活

Alice 的 Hermes Agent 直接执行:

BASH
me: 查一下北京今天的天气
Agent: [调用 web_search 工具]
       [调用 web_scrape 工具]
       北京今天:晴,26°C,空气质量优

me: 帮我运行这段 Python 代码
Agent: [调用 code_execution 工具]
       代码执行成功,输出:Hello World

3. 内置工具分类

(1) 完整工具列表

类别 工具 功能说明
文件系统 fs_read 读取文件内容
fs_write 写入文件
fs_list 列出目录内容
fs_search 搜索文件内容
fs_move 移动/重命名
fs_delete 删除文件
Web web_search 搜索引擎查询
web_scrape 网页内容抓取
web_download 下载文件
web_api HTTP API 调用
代码执行 code_python Python 代码执行
code_shell Shell 命令执行
code_node Node.js 代码执行
视觉 vision_analyze 图像理解
vision_ocr 文字识别
vision_screenshot 截图
语音 voice_tts 文字转语音
voice_stt 语音转文字
数据 db_query 数据库查询
json_parse JSON 处理
csv_process CSV 处理
通信 email_send 发送邮件
msg_send 发送消息
系统 sys_info 系统信息
process_run 进程管理

(2) 工具使用频率统计

高频工具(每日使用):
  fs_read, fs_write, code_python, web_search

中频工具(每周使用):
  web_scrape, code_shell, db_query, vision_analyze

低频工具(按需使用):
  voice_tts, email_send, process_run, csv_process

4. 核心工具详解

(1) 文件系统工具

BASH
# 读取文件
me: 读取 src/main.py 的内容
Agent: [调用 fs_read("src/main.py")]
       ```python
       from fastapi import FastAPI
       app = FastAPI()
       ...
       ```

# 写入文件
me: 创建一个 README.md
Agent: [调用 fs_write("README.md", content)]
       ✅ README.md 已创建

# 搜索文件
me: 找出所有使用了 deprecated API 的文件
Agent: [调用 fs_search("deprecated", path="src/", type="py")]
       找到3个文件:
       - src/api/users.py (line 42)
       - src/api/auth.py (line 15)
       - src/utils/helpers.py (line 88)

(2) Web 工具

BASH
# 搜索
me: 搜索 React 19 新特性
Agent: [调用 web_search("React 19 new features")]
       React 19 主要新特性:
       1. Server Components 稳定版
       2. Actions 简化表单处理
       3. use() Hook
       ...

# 网页抓取
me: 抓取这个页面的标题和内容摘要
Agent: [调用 web_scrape("https://react.dev/blog")]
       标题: React 19 正式发布
       摘要: React 19 带来了...

(3) 代码执行工具

BASH
me: 帮我计算斐波那契数列第20项
Agent: [调用 code_python]
       ```python
       def fibonacci(n):
           if n <= 1:
               return n
           return fibonacci(n-1) + fibonacci(n-2)
       print(fibonacci(20))
       ```
       执行结果:6765

(4) 视觉工具

BASH
me: [上传截图] 这个页面有什么问题?
Agent: [调用 vision_analyze]
       分析截图:
       1. 导航栏文字被截断
       2. 按钮颜色对比度不足(WCAG AA 不达标)
       3. 移动端布局错位
       建议:修改 CSS...

5. 工具权限与安全

(1) 安全级别

级别 工具示例 需要确认
只读 fs_read, web_search, sys_info ❌ 自动执行
写入 fs_write, email_send ✅ 需确认
危险 fs_delete, code_shell, process_run ✅ 必须确认

(2) 安全配置

YAML
tools:
  # 沙箱配置
  sandbox: true
  sandbox_type: "docker"     # docker / subprocess / none
  
  # 代码执行限制
  code_execution:
    max_time: 30             # 最大执行30秒
    max_memory: "512MB"      # 最大内存
    allowed_languages:
      - python
      - javascript
      - bash
    network_access: false    # 禁止网络访问
    
  # 文件系统权限
  filesystem:
    allowed_paths:
      - "~/projects"
      - "/tmp/hermes"
    denied_paths:
      - "~/.ssh"
      - "~/.gnupg"
      - "/etc"
    allow_delete: false      # 禁止删除
    max_file_size: "10MB"
    
  # Web 访问限制
  web:
    rate_limit: 10           # 每分钟10次
    blocked_domains: []
    user_agent: "HermesAgent/1.0"

6. 自定义工具开发

(1) 工具定义文件

YAML
# ~/.hermes/tools/jira-search.yaml
name: "jira_search"
description: "搜索 Jira 工单"
category: "communication"
version: "1.0.0"

parameters:
  - name: "query"
    type: "string"
    required: true
    description: "搜索关键词"
  - name: "project"
    type: "string"
    required: false
    default: "PROJ"
  - name: "status"
    type: "string"
    required: false
    enum: ["open", "in_progress", "closed"]

execution:
  type: "api"
  method: "GET"
  url: "${JIRA_URL}/rest/api/2/search"
  headers:
    Authorization: "Bearer ${JIRA_TOKEN}"
  params:
    jql: "project = {project} AND summary ~ '{query}' AND status = {status}"

output:
  format: "json"
  transform: |
    results.map(issue => ({
      key: issue.key,
      summary: issue.fields.summary,
      status: issue.fields.status.name,
      assignee: issue.fields.assignee?.displayName
    }))

(2) Python 工具

PYTHON
# ~/.hermes/tools/custom_metrics.py
from hermes import Tool, ToolResult

class CustomMetricsTool(Tool):
    name = "custom_metrics"
    description = "获取项目自定义指标"
    category = "data"
    
    parameters = {
        "metric": {"type": "str", "required": True},
        "time_range": {"type": "str", "default": "7d"}
    }
    
    def execute(self, metric: str, time_range: str = "7d") -> ToolResult:
        # 自定义逻辑
        data = self.fetch_metric(metric, time_range)
        return ToolResult(
            success=True,
            data=data,
            summary=f"{metric} 最近{time_range}: {data['trend']}"
        )

7. 工具集管理

(1) 工具集概念

工具集是预配置的工具组合,适用于特定场景:

YAML
# 工具集:前端开发
toolsets:
  frontend-dev:
    tools:
      - fs_read
      - fs_write
      - code_node
      - code_shell
      - web_search
      - vision_analyze
    config:
      fs_write.allowed_extensions: [".ts", ".tsx", ".css", ".html"]
      code_shell.allowed_commands: ["npm", "npx", "git"]

  # 工具集:数据分析
  data-analysis:
    tools:
      - fs_read
      - code_python
      - db_query
      - csv_process
      - json_parse
    config:
      code_python.packages: ["pandas", "numpy", "matplotlib"]

(2) 使用工具集

BASH
# 指定工具集启动
hermes chat --toolset frontend-dev

# 对话中切换
/toolset data-analysis

# 查看当前工具集
/toolset list

❓ 常见问题

Q 工具调用有延迟吗?
A 文件系统和代码执行通常 <1s,Web 工具取决于网络,2-10s。视觉工具 3-8s。
Q 代码执行安全吗?
A 默认在 Docker 沙箱中执行,限制网络访问和文件系统范围。可以通过配置调整安全级别。
Q 能限制工具的使用频率吗?
A 可以。rate_limit 参数控制每分钟最大调用次数,防滥用。
Q 自定义工具开发难吗?
A 简单 API 调用只需写 YAML 定义文件。复杂逻辑用 Python 类,继承 Tool 基类即可。
Q 工具调用消耗 Token 吗?
A 消耗。工具调用的参数和返回结果都计入 Token。但工具结果通常比让 LLM 自己生成更省 Token。
Q 如何查看工具调用日志?
A hermes tool log 查看最近调用记录,包括参数、返回值、耗时。

📖 小节


📝 作业

  1. 基础题(难度⭐):使用文件系统工具和代码执行工具完成一个任务,观察工具调用过程。
  2. 进阶题(难度⭐⭐):开发一个自定义 YAML 工具,接入你的常用 API(如 GitHub API),验证调用成功。
  3. 挑战题(难度⭐⭐⭐):创建一个完整的工具集(5+ 工具),针对你日常工作场景,写出配置文件并测试。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏