工具与工具集
工具是扩展智能体能力的函数。它们按逻辑组织成 工具集,可按不同平台启用或禁用。
可用工具
Hermes 内置了覆盖面很广的工具注册表,包括网页搜索、浏览器自动化、终端执行、文件编辑、记忆、委派、RL 训练、消息投递、Home Assistant 等。
Honcho 跨会话记忆 以记忆大模型提供商(provider)插件(plugins/memory/honcho/)形式提供,而不是内置工具集。安装方式见 Plugins。
高层分类如下:
| 类别 | 示例 | 说明 |
|---|---|---|
| Web | web_search, web_extract | 搜索网页并提取页面内容。 |
| Terminal & Files | terminal, process, read_file, patch | 执行命令并操作文件。 |
| Browser | browser_navigate, browser_snapshot, browser_vision | 带文本与视觉支持的交互式浏览器自动化。 |
| Media | vision_analyze, image_generate, text_to_speech | 多模态分析与生成。 |
| 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。
付费 Nous Portal 订阅者可通过 Tool Gateway 使用网页搜索、图像生成、TTS 和浏览器自动化,无需单独配置 API key。运行 hermes model 可启用它,也可通过 hermes tools 单独配置各工具。
使用工具集
# Use specific toolsets
hermes chat --toolsets "web,terminal"
# See all available tools
hermes tools
# Configure tools per platform (interactive)
hermes tools
常见工具集包括 web、terminal、file、browser、vision、image_gen、moa、skills、tts、todo、memory、session_search、cronjob、code_execution、delegation、clarify、homeassistant 和 rl。
完整列表见 Toolsets Reference,其中还包括 hermes-cli、hermes-telegram 等平台预设,以及 mcp-<server> 这样的动态 MCP 工具集。
终端后端
终端工具可在不同环境中执行命令:
| 后端 | 说明 | 使用场景 |
|---|---|---|
local | 在你的机器上运行(默认) | 开发、可信任务 |
docker | 隔离容器 | 安全性、可复现性 |
ssh | 远程服务器 | 做沙箱隔离,让智能体远离自己的代码 |
singularity | HPC 容器 | 集群计算、无 root 场景 |
modal | 云端执行 | Serverless、可扩展 |
daytona | 云端沙箱工作区 | 持久化远程开发环境 |
配置
# In ~/.hermes/config.yaml
terminal:
backend: local # or: docker, ssh, singularity, modal, daytona
cwd: "." # Working directory
timeout: 180 # Command timeout in seconds
Docker 后端
terminal:
backend: docker
docker_image: python:3.11-slim
SSH 后端
从安全角度看这是推荐方案,因为智能体无法直接修改自己的代码:
terminal:
backend: ssh
# Set credentials in ~/.hermes/.env
TERMINAL_SSH_HOST=my-server.example.com
TERMINAL_SSH_USER=myuser
TERMINAL_SSH_KEY=~/.ssh/id_rsa
Singularity/Apptainer
# Pre-build SIF for parallel workers
apptainer build ~/python.sif docker://python:3.11-slim
# Configure
hermes config set terminal.backend singularity
hermes config set terminal.singularity_image ~/python.sif
Modal(Serverless 云)
uv pip install modal
modal setup
hermes config set terminal.backend modal
容器资源
你可以为所有容器后端统一配置 CPU、内存、磁盘和持久化:
terminal:
backend: docker # or singularity, modal, daytona
container_cpu: 1 # CPU cores (default: 1)
container_memory: 5120 # Memory in MB (default: 5GB)
container_disk: 51200 # Disk in MB (default: 50GB)
container_persistent: true # Persist filesystem across sessions (default: true)
当 container_persistent: true 时,已安装的软件包、文件和配置会在多个会话之间保留。
容器安全
所有容器后端都会启用安全加固:
- 只读根文件系统(Docker)
- 移除全部 Linux capabilities
- 禁止权限提升
- PID 限制(256 个进程)
- 完整命名空间隔离
- 通过卷提供持久化工作区,而不是写入根层
Docker 还可通过 terminal.docker_forward_env 接收显式环境变量白名单,但这些转发的变量对容器内命令可见,应视为已经暴露给该会话。
后台进程管理
可以启动并管理后台进程:
terminal(command="pytest -v tests/", background=true)
# Returns: {"session_id": "proc_abc123", "pid": 12345}
# Then manage with the process tool:
process(action="list") # Show all running processes
process(action="poll", session_id="proc_abc123") # Check status
process(action="wait", session_id="proc_abc123") # Block until done
process(action="log", session_id="proc_abc123") # Full output
process(action="kill", session_id="proc_abc123") # Terminate
process(action="write", session_id="proc_abc123", data="y") # Send input
PTY 模式(pty=true)可支持 Codex、Claude Code 这类交互式 CLI 工具。
Sudo 支持
如果命令需要 sudo,Hermes 会提示你输入密码(并在当前会话中缓存)。你也可以在 ~/.hermes/.env 中设置 SUDO_PASSWORD。
在消息平台上,如果 sudo 失败,输出中会提示你将 SUDO_PASSWORD 添加到 ~/.hermes/.env。