内置工具
工具是扩展 Agent 能力的函数。它们按照逻辑组织成工具集(toolsets),可以按平台启用或禁用。
Hermes 附带广泛的内置工具注册表,涵盖网络搜索、浏览器自动化、终端执行、文件编辑、记忆、委派、RL 训练、消息投递、Home Assistant 等领域。
高级分类:
| 类别 | 示例 | 说明 |
|---|---|---|
| Web | web_search, web_extract | 搜索网络并提取页面内容 |
| X 搜索 | x_search | 通过 xAI 内置的 x_search Responses 工具搜索 X(Twitter)帖子和线程——需要 xAI 凭据(SuperGrok OAuth 或 XAI_API_KEY);默认关闭,通过 hermes tools → 🐦 X (Twitter) Search 启用 |
| 终端与文件 | terminal, process, read_file, patch | 执行命令和操作文件 |
| 浏览器 | browser_navigate, browser_snapshot, browser_vision | 交互式浏览器自动化,支持文本和视觉 |
| 媒体 | vision_analyze, image_generate, video_generate, video_analyze, text_to_speech | 多模态分析和生成。video_generate 和 video_analyze 需选择启用(通过 hermes tools 或 --toolsets 添加 video_gen / video 工具集) |
| Agent 编排 | todo, clarify, execute_code, delegate_task | 规划、澄清、代码执行和子代理委派 |
| 记忆与回忆 | memory, session_search | 持久记忆和会话搜索 |
| 自动化与投递 | cronjob, send_message | 定时任务(创建/列表/更新/暂停/恢复/运行/移除)及出站消息投递 |
| 集成 | ha_*, MCP 服务器工具, rl_* | Home Assistant、MCP、RL 训练和其他集成 |
# 使用特定工具集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。
terminal 工具可以在不同环境中执行命令:
| 后端 | 说明 | 用例 |
|---|---|---|
local | 在本机运行(默认) | 开发、可信任务 |
docker | 隔离容器 | 安全、可重现 |
ssh | 远程服务器 | 沙箱化,让 Agent 远离自身代码 |
singularity | HPC 容器 | 集群计算,无 root |
modal | 云执行 | Serverless,弹性扩展 |
daytona | 云沙箱工作区 | 持久远程开发环境 |
# 在 ~/.hermes/config.yaml 中terminal: backend: local # 或: docker, ssh, singularity, modal, daytona cwd: "." timeout: 180 # 命令超时(秒)Docker 后端
Section titled “Docker 后端”terminal: backend: docker docker_image: python:3.11-slim一个持久容器,在整个进程生命周期中共享。Hermes 首次使用时启动一个长寿命容器(docker run -d ... sleep 2h),每个 terminal、file 和 execute_code 调用都通过 docker exec 路由到同一容器。工作目录变更、安装的包、环境调整和写入 /workspace 的文件在所有工具调用之间保持,跨 /new、/reset 和 delegate_task 子代理,在 Hermes 进程的整个生命周期内有效。容器在关闭时停止和移除。
这意味着 Docker 后端行为像持久沙箱虚拟机,而非每次命令都创建新容器。如果你 pip install foo 一次,它在整个会话中都在。如果你 cd /workspace/project,后续的 ls 调用会看到那个目录。
SSH 后端
Section titled “SSH 后端”推荐用于安全——Agent 无法修改自身代码:
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”# 为并行 worker 预构建 SIFapptainer build ~/python.sif docker://python:3.11-slim
# 配置hermes config set terminal.backend singularityhermes config set terminal.singularity_image ~/python.sifModal(Serverless 云)
Section titled “Modal(Serverless 云)”uv pip install modalmodal setuphermes config set terminal.backend modal为所有容器后端配置 CPU、内存、磁盘和持久性:
terminal: backend: docker # 或 singularity, modal, daytona container_cpu: 1 # CPU 核心(默认:1) container_memory: 5120 # 内存 MB(默认:5GB) container_disk: 51200 # 磁盘 MB(默认:50GB) container_persistent: true # 跨会话持久化文件系统(默认:true)当 container_persistent: true 时,安装的包、文件和配置在会话之间保留。
所有容器后端都运行安全加固:
- 只读根文件系统(Docker)
- 丢弃所有 Linux 能力
- 禁止特权升级
- PID 限制(256 个进程)
- 完整命名空间隔离
- 通过卷持久化工作区,而非可写根层
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。