工具是扩展 agent 能力的函数。它们被组织成逻辑 工具集 (toolsets),可以针对每个平台分别启用或禁用。
Hermes 内置了广泛的工具注册表,涵盖了网页搜索、浏览器自动化、终端执行、文件编辑、记忆、委派、强化学习(RL)训练、消息投递、Home Assistant 等。
高层类别:
| 类别 | 示例 | 说明 |
|---|---|---|
| 网页 (Web) | web_search, web_extract | 搜索网页并提取页面内容。 |
| X 搜索 | x_search | 通过 xAI 内置的 x_search 响应工具搜索 X (Twitter) 帖子和线索 —— 受限开通于 xAI 凭证(SuperGrok OAuth 或 XAI_API_KEY);默认关闭,可通过 hermes tools → 🐦 X (Twitter) Search 选择开启。 |
| 终端与文件 (Terminal & Files) | terminal, process, read_file, patch | 执行命令并操作文件。 |
| 浏览器 (Browser) | browser_navigate, browser_snapshot, browser_vision | 支持文本和视觉的交互式浏览器自动化。 |
| 媒体 (Media) | vision_analyze, image_generate, video_generate, video_analyze, text_to_speech | 多模态分析与生成。video_generate 和 video_analyze 为选择性开启(通过 hermes tools 或 --toolsets 添加 video_gen / video 工具集)。 |
| 代理编排 (Agent orchestration) | todo, clarify, execute_code, delegate_task | 规划、澄清、代码执行以及子代理委派。 |
| 记忆与回溯 (Memory & recall) | memory, session_search | 持久化记忆与会话搜索。 |
| 自动化与交付 (Automation & delivery) | cronjob, send_message | 定时任务(支持创建/列表/更新/暂停/恢复/运行/删除操作)以及外发消息交付。 |
| 集成 (Integrations) | ha_*, MCP server tools, rl_* | Home Assistant、MCP、RL 训练及其他集成。 |
有关基于代码派生的权威注册表,请参阅 内置工具参考 (Built-in Tools Reference) 和 工具集参考 (Toolsets Reference)。
# 使用特定的工具集hermes chat --toolsets "web,terminal"
# 查看所有可用工具hermes tools
# 针对各平台配置工具(交互式)hermes tools常用的工具集包括:web, search, terminal, file, browser, vision, image_gen, moa, skills, tts, todo, memory, session_search, cronjob, code_execution, delegation, clarify, homeassistant, messaging, spotify, discord, discord_admin, debugging, safe 以及 rl。
参阅 工具集参考 (Toolsets Reference) 以获取完整列表,包括平台预设(如 hermes-cli, hermes-telegram)以及动态 MCP 工具集(如 mcp-<server>)。
Hermes 里的 Terminal Backends 可以理解为:Hermes 执行命令时,到底在哪个环境里运行 shell 命令。
终端工具可以在不同的环境中执行命令:
| 后端 | 说明 | 使用场景 |
|---|---|---|
| local | 在您的机器上运行(默认) | 开发、信任的任务 |
| docker | 隔离的容器 | 安全、可复现性 |
| ssh | 远程服务器 | 沙箱化,防止代理修改自身代码 |
| singularity | HPC 容器 | 集群计算、无 root 权限 |
| modal | 云端执行 | 无服务器、扩展性 |
| daytona | 云端沙箱工作区 | 持久化远程开发环境 |
| vercel_sandbox | Vercel Sandbox 云端微型虚拟机 | 具备基于快照的文件系统持久化云端执行 |
# 在 ~/.hermes/config.yaml 中terminal: backend: local # 或: docker, ssh, singularity, modal, daytona, vercel_sandbox cwd: "." # 工作目录 timeout: 180 # 命令超时时间(秒)Docker 后端
Section titled “Docker 后端”terminal: backend: docker docker_image: python:3.11-slim单一持久化容器,全进程共享。 Hermes 在首次使用时会启动一个长寿命容器(docker run -d ... sleep 2h),并将每一个终端、文件和 execute_code 调用通过 docker exec 路由到该容器中。在 Hermes 进程的生命周期内,工作目录的更改、安装的软件包、环境调整以及写入 /workspace 的文件都会从一个工具调用延续到下一个工具调用,包括跨越 /new、/reset 以及 delegate_task 子代理。容器将在关机时停止并移除。
这意味着 Docker 后端表现得像一个持久的沙箱虚拟机,而不是每个命令都使用新鲜容器。如果您执行过一次 pip install foo,它在会话剩余时间内都会存在。如果您执行了 cd /workspace/project,后续的 ls 调用将看到该目录。有关完整的生命周期细节以及控制 /workspace 和 /root 是否在 Hermes 重启后保留的 container_persistent 标志,请参阅 配置 → Docker 后端。
SSH 后端
Section titled “SSH 后端”出于安全考虑推荐使用 —— 代理无法修改其自身代码:
terminal: backend: ssh# 在 ~/.hermes/.env 中设置凭据TERMINAL_SSH_HOST=my-server.example.comTERMINAL_SSH_USER=myuserTERMINAL_SSH_KEY=~/.ssh/id_rsaSingularity/Apptainer
Section titled “Singularity/Apptainer”# 为并行工作进程预构建 SIF 文件apptainer build ~/python.sif docker://python:3.11-slim
# 配置hermes config set terminal.backend singularityhermes config set terminal.singularity_image ~/python.sifModal (无服务器云)
Section titled “Modal (无服务器云)”uv pip install modalmodal setuphermes config set terminal.backend modalVercel Sandbox
Section titled “Vercel Sandbox”pip install 'hermes-agent[vercel]'hermes config set terminal.backend vercel_sandboxhermes config set terminal.vercel_runtime node24需同时使用 VERCEL_TOKEN、VERCEL_PROJECT_ID 和 VERCEL_TEAM_ID 进行身份验证。这种访问令牌(access-token)设置是 Render、Railway、Docker 以及类似主机上部署和运行长期 Hermes 进程的受支持方式。受支持的运行时包括 node24、node22 和 python3.13;Hermes 默认将 /vercel/sandbox 作为远程工作区根目录。
对于一次性的本地开发,Hermes 也接受短寿命的 Vercel OIDC 令牌:
VERCEL_OIDC_TOKEN="$(vc project token <project-name>)" hermes chat在已关联的 Vercel 项目目录中:
VERCEL_OIDC_TOKEN="$(vc project token)" hermes chat当 container_persistent: true 时,Hermes 使用 Vercel 快照为同一任务在沙箱重建时保留文件系统状态。这可以包括沙箱内由 Hermes 同步的凭据、技能和缓存文件。快照不会保留活跃进程、PID 空间或相同的实时沙箱标识。
后台终端命令使用 Hermes 通用的非本地进程流:在沙箱活跃期间,通过正常的进程工具进行生成(spawn)、轮询(poll)、等待(wait)、记录日志和结束进程(kill),但 Hermes 在清理或重启后不提供原生的 Vercel 离线进程恢复。
请保持 container_disk 不设置或保留共享默认值 51200;Vercel Sandbox 不支持自定义磁盘大小,设置将导致诊断/后端创建失败。
为所有容器后端配置 CPU、内存、磁盘和持久化:
terminal: backend: docker # 或 singularity, modal, daytona, vercel_sandbox container_cpu: 1 # CPU 核心数 (默认: 1) container_memory: 5120 # 内存大小,单位 MB (默认: 5GB) container_disk: 51200 # 磁盘大小,单位 MB (默认: 50GB) container_persistent: true # 是否跨会话持久化文件系统 (默认: true)当 container_persistent: true 时,安装的包、文件和配置将在会话之间保留。
所有容器后端均在安全增强模式下运行:
- 只读根文件系统 (Docker)
- 丢弃所有 Linux Capabilities 权限
- 禁止权限提升
- PID 限制(256 个进程)
- 完全的命名空间隔离
- 通过卷(volumes)实现持久化工作区,而非可写的根层(root layer)
Docker 可以选择通过 terminal.docker_forward_env 接收明确的环境变量允许列表,但转发的变量对容器内的命令可见,应视为在该会话中是暴露的。
后台进程管理
Section titled “后台进程管理”启动后台进程并对其进行管理:
terminal(command="pytest -v tests/", background=true)# 返回: {"session_id": "proc_abc123", "pid": 12345}
# 随后使用 process 工具进行管理:process(action="list") # 显示所有运行中的进程process(action="poll", session_id="proc_abc123") # 检查状态process(action="wait", session_id="proc_abc123") # 阻塞直到完成process(action="log", session_id="proc_abc123") # 获取完整输出process(action="kill", session_id="proc_abc123") # 终止进程process(action="write", session_id="proc_abc123", data="y") # 发送输入PTY 模式 (pty=true) 支持交互式 CLI 工具,如 Codex 和 Claude Code。
Sudo 支持
Section titled “Sudo 支持”如果命令需要 sudo 权限,系统会提示您输入密码(该密码将在会话期间缓存)。或者您也可以在 ~/.hermes/.env 中设置 SUDO_PASSWORD。