章節:核心功能 · 網址:https://hermesbible.com/docs/user-guide/features/tools
Tools 是用來擴展 agent 能力的函式。它們被組織成邏輯性的 toolset,可以針對不同平台啟用或停用。
可用的 Tools
Hermes 內建了一套廣泛的 tool 註冊表,涵蓋網頁搜尋、瀏覽器自動化、終端機執行、檔案編輯、記憶體、任務委派、RL 訓練、訊息投遞、Home Assistant 等功能。
備註
Honcho 跨 session 記憶體是以記憶體提供者外掛的形式提供(
plugins/memory/honcho/),並非內建 toolset。請參閱 外掛程式 了解安裝方式。
主要分類:
| 分類 | 範例 | 說明 |
|---|---|---|
| Web | web_search, web_extract | 搜尋網頁並擷取頁面內容。 |
| X Search | 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, text_to_speech | 多模態分析與生成。 |
| Agent 編排 | todo, clarify, execute_code, delegate_task | 規劃、澄清、程式碼執行,以及 subagent 委派。 |
| 記憶體與回顧 | memory, session_search | 持久化記憶體與 session 搜尋。 |
| 自動化與投遞 | cronjob, send_message | 排程任務(支援 create/list/update/pause/resume/run/remove 操作),以及外發訊息投遞。 |
| 整合服務 | ha_*、MCP server tools | Home Assistant、MCP 及其他整合服務。 |
如需查看以程式碼為基礎的完整註冊表,請參閱 內建 Tools 參考 與 Toolsets 參考。
小提醒 — Nous Tool Gateway
付費的 Nous Portal 訂閱者可以透過 Tool Gateway 使用網頁搜尋、圖片生成、TTS 與瀏覽器自動化 — 無需額外的 API 金鑰。執行
hermes model即可啟用,或透過hermes tools個別設定各工具。
使用 Toolsets
# 使用指定的 toolsets
hermes chat --toolsets "web,terminal"
# 查看所有可用的 tools
hermes tools
# 針對各平台設定 tools(互動式)
hermes tools
常見的 toolsets 包括 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。
完整的 toolset 列表請參閱 Toolsets 參考,包括平台預設值(如 hermes-cli、hermes-telegram)以及動態 MCP toolset(如 mcp-<server>)。
Terminal 後端
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 後端
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 subagent,直到 Hermes 行程結束。容器會在關閉時停止並移除。
這意味著 Docker 後端的行為就像一個持久化的沙箱虛擬機,而非每個指令都使用全新的容器。只要 pip install foo 執行過一次,該套件在整個 session 期間都會存在。如果 cd /workspace/project,後續的 ls 呼叫就會看到該目錄。完整的生命週期細節以及控制 /workspace 和 /root 是否在 Hermes 重啟後保留的 container_persistent 標誌,請參閱 設定 → Docker 後端。
SSH 後端
基於安全考量推薦使用 — agent 無法修改自身的程式碼:
terminal:
backend: ssh
# 於 ~/.hermes/.env 中設定憑證
TERMINAL_SSH_HOST=my-server.example.com
TERMINAL_SSH_USER=myuser
TERMINAL_SSH_KEY=~/.ssh/id_rsa
Singularity/Apptainer
# 為平行 worker 預先建置 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(Serverless 雲端)
uv pip install modal
modal setup
hermes 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 # 跨 session 持久化檔案系統(預設:true)
當 container_persistent: true 時,安裝的套件、檔案和設定會在跨 session 之間保留。
容器安全性
所有容器後端皆以安全性強化模式運行:
- 只讀根檔案系統(Docker)
- 移除所有 Linux capabilities
- 禁止權限提升
- PID 限制(256 個程序)
- 完整的 namespace 隔離
- 透過 volume 實作持久化工作區,而非可寫入的根層
Docker 可以透過 terminal.docker_forward_env 接收明確的環境變數允許清單,但被轉發的變數在容器內的指令中可見,應視為對該 session 暴露。
背景行程管理
啟動背景行程並進行管理:
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 支援
如果指令需要 sudo,系統會提示輸入密碼(在該 session 期間會被暫存)。也可以在 ~/.hermes/.env 中設定 SUDO_PASSWORD。
警告
在訊息平台上,如果 sudo 失敗,輸出中會包含將
SUDO_PASSWORD加入~/.hermes/.env的提示。