工具與工具集
工具是擴展 Agent 能力的功能。它們被組織成邏輯上的 工具集,可根據平臺啟用或禁用。
可用工具
Hermes 內置了廣泛的工具註冊表,涵蓋網絡搜索、瀏覽器自動化、終端執行、文件編輯、記憶、委託、強化學習訓練、消息傳遞、Home Assistant 等功能。
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 | 多模態分析與生成。 |
| Agent 編排 | todo, clarify, execute_code, delegate_task | 規劃、澄清、代碼執行與子 Agent 委託。 |
| 記憶與召回 | memory, session_search | 持久化記憶與會話搜索。 |
| 自動化與交付 | cronjob, send_message | 支持創建/列出/更新/暫停/恢復/運行/移除操作的定時任務,以及出站消息傳遞。 |
| 集成 | ha_*, MCP 服務器工具, rl_* | Home Assistant、MCP、強化學習訓練及其他集成。 |
關於權威的代碼生成註冊表,請參閱 內置工具參考 和 工具集參考。
使用工具集
# 使用特定的toolsets
hermes chat --toolsets "web,terminal"
# 查看所有可用的 tools
hermes tools
# 每個平臺配置 tools(交互式)
hermes tools
常見的工具集包括 web、terminal、file、browser、vision、image_gen、moa、skills、tts、todo、memory、session_search、cronjob、code_execution、delegation、clarify、homeassistant 和 rl。
完整工具集請參閱 工具集參考,包括平臺預設如 hermes-cli、hermes-telegram,以及動態 MCP 工具集如 mcp-<server>。
終端後端
終端工具可在不同環境中執行命令:
| 後端 | 描述 | 使用場景 |
|---|---|---|
local | 在你的機器上運行(默認) | 開發、可信任務 |
docker | 隔離的容器 | 安全性、可復現性 |
ssh | 遠程服務器 | 沙箱環境,使 Agent 遠離其自身代碼 |
singularity | HPC 容器 | 集群計算、無 root 權限 |
modal | 雲執行 | 無服務器、可擴展 |
daytona | 雲沙箱工作區 | 持久化的遠程開發環境 |
配置
# 在“0”中
terminal:
backend: local # 或:docker、ssh、奇點、莫代爾、代託納
cwd: "." # 工作目錄
timeout: 180 # 命令超時(以秒為單位)
Docker 後端
terminal:
backend: docker
docker_image: python:3.11-slim
SSH 後端
推薦用於安全性——Agent 無法修改其自身代碼:
terminal:
backend: ssh
# 在“0”中設置憑據
TERMINAL_SSH_HOST=my-server.example.com
TERMINAL_SSH_USER=myuser
TERMINAL_SSH_KEY=~/.ssh/id_rsa
Singularity/Apptainer
# 為並行工作人員預構建 SIF
apptainer build ~/python.sif docker://python:3.11-slim
# 配置
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 # 或奇點、莫代爾、代託納
container_cpu: 1 # CPU 內核(默認:1)
container_memory: 5120 # Memory,以 MB 為單位(默認值:5GB)
container_disk: 51200 # 磁盤(以 MB 為單位)(默認值:50GB)
container_persistent: true # 跨 sessions 保留文件系統(默認值:true)
當 container_persistent: true 時,安裝的包、文件和配置將在會話間持久保留。
容器安全
所有容器後端均運行在安全強化模式下:
- 只讀根文件系統(Docker)
- 所有 Linux 能力被移除
- 無權限提升
- PID 限制(最多 256 個進程)
- 完全的命名空間隔離
- 通過卷實現持久化工作區,而非可寫根層
Docker 可選擇通過 terminal.docker_forward_env 顯式指定環境變量白名單,但轉發的變量在容器內命令中可見,應視為對當前會話暴露。
後臺進程管理
啟動後臺進程並進行管理:
terminal(command="pytest -v tests/", background=true)
# 返回:{"session_id": "proc_abc123", "pid": 12345}
# 然後用進程tool進行管理:
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 支持
如果命令需要 sudo,系統將提示輸入密碼(會話內緩存)。或在 ~/.hermes/.env 中設置 SUDO_PASSWORD。
在消息平臺中,若 sudo 失敗,輸出將包含提示:請將 SUDO_PASSWORD 添加至 ~/.hermes/.env。