Skip to main content

工具与工具集

工具是 Hermes 扩展能力的核心方式,本质上就是供代理调用的函数。它们会按用途组织成不同的工具集,并可根据所在平台或运行场景启用、禁用或单独配置。

可用工具

Hermes 内置了相当完整的工具注册表,覆盖网页搜索、浏览器自动化、终端执行、文件编辑、记忆存储、任务委派、强化学习训练、消息发送、Home Assistant 集成等常见能力。

note

Honcho 跨会话记忆 作为记忆提供者插件(plugins/memory/honcho/)提供,而非内置工具集。请参阅 插件 了解安装方式。

高层次分类如下:

类别示例描述
网络web_search, web_extract搜索网络并提取页面内容。
终端与文件terminal, process, read_file, patch执行命令并操作文件。
浏览器browser_navigate, browser_snapshot, browser_vision支持文本与视觉的交互式浏览器自动化。
媒体vision_analyze, image_generate, text_to_speech多模态分析与生成。
代理编排todo, clarify, execute_code, delegate_task规划、澄清、代码执行及子代理委派。
记忆与召回memory, session_search持久化记忆与会话检索。
自动化与交付cronjob, send_message支持创建/列出/更新/暂停/恢复/运行/移除的定时任务,以及外发消息传递。
集成ha_*, MCP 服务器工具, rl_*Home Assistant、MCP、强化学习训练及其他集成。

更完整、可作为权威索引的列表,请参阅 内置工具参考工具集参考

使用工具集

# Use specific toolsets
hermes chat --toolsets "web,terminal"

# See all available tools
hermes tools

# Configure tools per platform (interactive)
hermes tools

常见工具集包括 webterminalfilebrowservisionimage_genmoaskillsttstodomemorysession_searchcronjobcode_executiondelegationclarifyhomeassistantrl

完整工具集请见 工具集参考。其中既包括 hermes-clihermes-telegram 这类平台预设,也包括 mcp-<server> 这样的动态 MCP 工具集。

终端后端

终端工具可以在不同执行环境中运行命令:

后端描述使用场景
local在本地机器上运行(默认)开发环境,可信任务
docker隔离容器安全性要求高,可复现性需求
ssh远程服务器沙箱环境,避免代理接触自身代码
singularityHPC 容器集群计算,无 root 权限
modal云执行无服务器架构,弹性伸缩
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 后端

如果你更看重隔离性,通常更推荐 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(无服务器云)

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 权限能力
  • 禁止权限提升
  • PID 限制(最多 256 个进程)
  • 完全命名空间隔离
  • 通过卷实现持久化工作区,而非可写根层

Docker 还支持通过 terminal.docker_forward_env 显式指定环境变量白名单;但要注意,一旦传入,这些变量在容器内就是可见的,应视为已经对当前会话暴露。

后台进程管理

你也可以启动后台进程,并通过 process 工具持续管理它们:

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)适合运行需要交互式终端的 CLI 工具,例如 Codex 和 Claude Code。

sudo 支持

如果命令需要 sudo 权限,系统会提示输入密码,并在当前会话期间缓存。你也可以提前在 ~/.hermes/.env 中设置 SUDO_PASSWORD

warning

在消息平台中,若 sudo 失败,输出将包含提示:请将 SUDO_PASSWORD 添加至 ~/.hermes/.env