Hermes Agent 工具生态与 MCP 集成
Hermes 的所有能力都通过工具(Tools)暴露给 Agent。
工具组织成工具集(Toolsets),工具集再组合成平台配置。这三层结构决定了 Agent 在不同场景下能做什么:
工具(Tool)
└── 工具集(Toolset) # 相关工具的逻辑分组
└── 平台配置 # 哪个平台加载哪些工具集
└── 自定义工具集 # 你自己定义的组合
工具集管理命令
# 打开 curses TUI,按平台开/关工具集 hermes tools # 命令行列出所有工具和状态 hermes tools list # 按名称启用或禁用工具集 hermes tools enable NAME hermes tools disable NAME
桌面版,在左侧的技能与工具菜单:

关闭一个工具集,其中的工具从系统提示词中完全消失,不只是禁用——这直接节省 Token,并防止 Agent 误用不该用的工具。
内置工具集一览
Hermes 提供 70+ 内置工具,分为 28 个工具集。
以下按功能分类介绍最常用的工具集。
文件与系统
| 工具集 | 核心工具 | 主要用途 |
|---|---|---|
| file | read_file、write_file、list_dir | 文件读写、目录操作 |
| terminal | run_command、run_script | Shell 命令执行 |
| code | execute_code | 沙箱内代码执行(Python/JS/Bash) |
| computer | screenshot、click、type | 桌面 GUI 自动化 |
网络与内容
| 工具集 | 核心工具 | 主要用途 |
|---|---|---|
| web | web_search、web_extract | 网页搜索与内容提取 |
| browser | navigate、click、fill_form | 完整浏览器自动化 |
| vision | analyze_image、describe_image | 图片分析与描述 |
| audio | transcribe、tts | 语音转文字、文字转语音 |
Agent 能力
| 工具集 | 核心工具 | 主要用途 |
|---|---|---|
| memory | memory、session_search | 记忆管理与跨会话检索 |
| skills | skills_list、skill_view、skill_manage | 技能管理 |
| delegation | spawn_agent、spawn_parallel | 子 Agent 委托与并行 |
| kanban | task_create、task_update | 多 Agent 看板(需显式启用) |
媒体创作
以下工具集需 Nous Portal 或对应 API Key:
| 工具集 | 功能 | 说明 |
|---|---|---|
| image_gen | 文字生成图片 | 支持 FLUX、GPT-Image 等 9 种模型 |
| tts | 文字转语音 | 10 种 TTS 提供商,含本地 Piper |
自定义工具集
你可以在配置文件中将现有工具集组合成项目专属的工具集:
实例
# 自定义工具集:组合已有工具集为项目专属配置
custom_toolsets:
data-science:
- file
- terminal
- code
- web
然后在启动时指定:
实例
hermes --toolsets data-science
六种终端执行后端
终端工具集支持六种执行后端,决定了 Agent 的 Shell 命令在哪里运行,对应不同的隔离级别和「爆炸半径」。
| 后端 | 命令执行位置 | 隔离程度 | 典型场景 |
|---|---|---|---|
| local(默认) | 本机,当前用户权限 | 无 | 个人开发、日常使用 |
| docker | Docker 容器内 | 完全隔离 | 生产部署、安全沙箱 |
| ssh | 远程服务器 | 网络边界隔离 | 远程开发、高性能机器 |
| modal | Modal 云沙箱(VM) | 完全(云端) | 临时计算、评测任务 |
| daytona | Daytona 托管工作区 | 完全(云容器) | 托管云开发环境 |
| singularity | Singularity 容器 | 命名空间隔离 | HPC 集群、共享机器 |
切换后端
实例
hermes config set terminal.backend docker
# 切换到 SSH 后端
hermes config set terminal.backend ssh
hermes config set terminal.ssh_host user@your-server.com
Docker 后端完整配置示例:
实例
# Docker 后端配置
terminal:
backend: docker
docker_image: "nikolaik/python-nodejs:python3.11-nodejs20"
container_persistent: true # true = 绑定挂载,false = tmpfs 临时
安全原则:local 后端让 Agent 拥有和你相同的文件系统权限——适合个人机器,不适合生产服务。docker 后端是最简单有效的隔离方式。
危险命令审批
默认情况下,Hermes 会在执行可能有破坏性的命令前请求确认:
实例
# 审批模式配置
approvals:
mode: manual # manual(默认)| smart | off
timeout: 60 # 等待审批的秒数
cron_mode: deny # 定时任务遇到危险命令时的行为:deny | approve
在会话中临时绕过审批(谨慎使用):
实例
/yolo
# 再次输入关闭
/yolo
MCP:连接外部工具生态
MCP(Model Context Protocol)让 Hermes 无需修改核心代码就能接入外部工具服务器——GitHub、数据库、文件系统、浏览器堆栈、内部 API 等。
标准安装已包含 MCP 支持,无需额外步骤。
两种 MCP 服务器类型
本地 stdio 服务器:以子进程形式在本地运行,通过标准输入/输出通信:
实例
# MCP stdio 服务器配置
mcp_servers:
github:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_PERSONAL_ACCESS_TOKEN: "ghp_..."
filesystem:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
git:
command: "uvx"
args: ["mcp-server-git", "--repository", "/home/user/project"]
适用场景:工具已本地安装,需要低延迟访问本地资源。
远程 HTTP 服务器:直接连接到远程 MCP 端点:
实例
# MCP HTTP 服务器配置
mcp_servers:
# 静态 Bearer Token 认证
internal_api:
url: "https://mcp.internal.example.com/mcp"
headers:
Authorization: "Bearer ${MY_TOKEN}"
# OAuth 2.1 认证(Linear、Sentry、Figma、Stripe 等)
linear:
url: "https://mcp.linear.app/mcp"
auth: oauth
# 需要预注册 OAuth 客户端的提供商
googledrive:
url: "https://drivemcp.googleapis.com/mcp/v1"
auth: oauth
oauth:
client_id: "<your-oauth-client-id>"
client_secret: "<your-oauth-client-secret>"
适用场景:工具在远端托管,或组织内部有 MCP 接口。
Nous 精选 MCP 目录
Hermes 内置了一个经 Nous 审核的 MCP 目录,一键安装:
实例
hermes mcp
# 纯文本列表
hermes mcp catalog
# 按名称安装目录中的条目
hermes mcp install n8n
选择器会显示每个条目的当前状态:
n8n available 管理和检查 n8n 工作流 linear enabled Linear 问题/项目管理(远程 OAuth) github installed (disabled) GitHub 仓库 + PR 工具
安装时会自动完成三个步骤:
- 提示配置 API Key 或引导 OAuth 登录
- 探测服务器暴露的工具列表
- 显示工具选择清单,让你决定开启哪些工具
工具过滤:只暴露你需要的
每个 MCP 服务器都支持精细的工具过滤,减少 Agent 可用的攻击面:
实例
# MCP 工具过滤配置
mcp_servers:
github:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_PERSONAL_ACCESS_TOKEN: "ghp_..."
tools:
include: [list_issues, create_issue, update_issue, search_code]
# 没有列出的工具不会注册
resources: false
prompts: false
stripe:
url: "https://mcp.stripe.com"
headers:
Authorization: "Bearer ${STRIPE_KEY}"
tools:
exclude: [delete_customer, refund_payment] # 排除高风险操作
| 字段 | 行为 |
|---|---|
| tools.include | 只注册列表中的工具,其余全部排除 |
| tools.exclude | 排除列表中的工具,其余全部注册 |
| 两者都设置 | include 优先 |
| resources: false | 不暴露 MCP 资源访问工具 |
| prompts: false | 不暴露 MCP 提示词工具 |
过滤规则使用 MCP 原始工具名称(含连字符/点),不是 Hermes 注册后的下划线版本。
每个 MCP 服务器生成独立工具集
配置了 github MCP 服务器后,Hermes 会在运行时自动创建 mcp-github 工具集。
你可以像操作内置工具集一样管理它:
实例
# 在平台配置中引用 MCP 工具集
platform_toolsets:
cli:
- hermes-cli
- mcp-github
- mcp-linear
重新加载 MCP 配置
修改了 config.yaml 后,无需重启整个 Agent:
实例
/reload-mcp
# 或者从命令行
hermes mcp reload
如果是 OAuth 需要完成认证,30 秒超时不够用。建议先添加服务器配置,再在新终端中运行 hermes mcp login <server> 完成授权(等待时间最长 5 分钟)。
编辑器集成(ACP)
ACP(Agent Communication Protocol)让 Hermes 在编辑器内原生运行——聊天、工具活动、文件差异和终端命令都直接渲染在编辑器里。
支持的编辑器:VS Code、Zed、JetBrains 全系列。
标准安装已包含 ACP 支持:
实例
hermes acp
若安装时未包含完整依赖:
实例
cd ~/.hermes/hermes-agent
uv pip install -e ".[acp]"
| 编辑器 | 集成方式 | 功能 |
|---|---|---|
| VS Code | 扩展插件 | 内联代码补全、代码审查、重构建议 |
| Zed | 原生 Agent 模式 | stdio/JSON-RPC 通信、上下文感知 |
| JetBrains | 插件 | 代码生成、测试生成、文档注释 |
编辑器集成使用 stdio/JSON-RPC 协议与 Hermes Agent 通信,不依赖网络连接,适合离线使用。
语音模式
语音模式支持跨 CLI 和消息平台的完整语音交互:
- 麦克风录音输入(faster-whisper 本地语音识别,免费)
- TTS 语音回复(10 种提供商可选)
- Discord 语音频道实时对话
安装与启用
实例
cd ~/.hermes/hermes-agent
uv pip install -e ".[voice]"
实例
/voice on
# 按 Ctrl+B 开始录音,松开发送
# 在消息平台中
/voice on # 开启 TTS 回复
/voice tts # 只开启文字转语音(不开启语音输入)
/voice off # 关闭
TTS 提供商
| 提供商 | 特点 | 是否免费 |
|---|---|---|
| Edge TTS | 微软神经网络语音,多语言 | 免费 |
| Piper | 完全本地,低延迟 | 免费 |
| OpenAI TTS | 高质量,多音色 | 按量计费 |
| ElevenLabs | 顶级音质,克隆音色 | 按量计费 |
| MiniMax | 中文优化 | 按量计费 |
| Mistral Voxtral | 多语言 | 按量计费 |
Tool Gateway(Nous Portal 订阅)
通过 Nous Portal 订阅,一键获取四类工具的云端实现,无需分别申请 API Key:
| 工具 | 说明 |
|---|---|
| 网页搜索 | 搜索 + 内容提取(web 工具集) |
| 图片生成 | 9 种模型:FLUX、GPT-Image、Ideogram 等 |
| TTS | 文字转语音 |
| 云端浏览器 | 完整浏览器自动化(无需本地 Playwright) |
实例
hermes setup --portal
工具安全:MCP 环境变量隔离
MCP stdio 子进程接收一个经过过滤的环境,防止意外的凭据泄露。
默认只向 MCP 进程传递以下变量:
PATH, HOME, USER, LANG, LC_ALL, TERM, SHELL, TMPDIR(以及所有 XDG_* 变量)
其他所有环境变量(API Key、Token、密码)都被屏蔽。
只有在 MCP 服务器配置的 env: 块中显式声明的变量才会传递:
实例
# 只有显式声明的变量才会传入 MCP 子进程
mcp_servers:
github:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_PERSONAL_ACCESS_TOKEN: "ghp_..." # 只有这一个传入
此外,MCP 工具的错误信息在返回给 LLM 前会自动脱敏,敏感信息替换为 [REDACTED]。
常用命令速查
实例
hermes tools # 交互式工具集管理(TUI)
hermes tools list # 列出所有工具和状态
hermes tools enable NAME # 启用工具集
hermes tools disable NAME # 禁用工具集
# ─── MCP 管理 ────────────────────────────────────────────────
hermes mcp # 交互式 MCP 目录选择器
hermes mcp catalog # 纯文本目录列表
hermes mcp install <name> # 安装目录条目
hermes mcp add NAME --command CMD # 手动添加 MCP 服务器
hermes mcp remove NAME # 移除 MCP 服务器
hermes mcp list # 列出已配置的服务器
hermes mcp test NAME # 测试连接
hermes mcp login <server> # 完成 OAuth 授权
hermes mcp configure <server> # 重新配置工具选择
hermes mcp reload # 重新加载 MCP 配置
# ─── 终端后端 ────────────────────────────────────────────────
hermes config set terminal.backend docker
hermes config set terminal.backend ssh
hermes config set terminal.ssh_host user@host
# ─── ACP 编辑器集成 ──────────────────────────────────────────
hermes acp
# ─── Portal 订阅 ─────────────────────────────────────────────
hermes setup --portal
