---
title: "配置工具系統和終端後端"
description: "理解 Hermes tools、toolsets、Nous Tool Gateway、terminal backends、後臺程序和許可權邊界。"
verifiedAt: "2026-05-09"
---

開啟工具後，Hermes Agent 就**不只是**聊天。它可以搜尋網頁、抽取頁面、讀寫檔案、執行命令、操作瀏覽器、寫記憶、檢索歷史 session、建立 cron、發訊息、調 Home Assistant、接 MCP（模型上下文協議），甚至啟動子代理或 RL（強化學習）任務——能力越多，許可權邊界越需要刻意設計。

官方資料：[Tools & Toolsets](https://hermes-agent.nousresearch.com/docs/user-guide/features/tools)、[Toolsets Reference](https://hermes-agent.nousresearch.com/docs/reference/toolsets-reference)、[Tools Reference](https://hermes-agent.nousresearch.com/docs/reference/tools-reference)、[Security](https://hermes-agent.nousresearch.com/docs/user-guide/security)、[Docker Backend](https://hermes-agent.nousresearch.com/docs/user-guide/docker)。

> [!NOTE]
> **先給結論**：**Toolset（工具集）決定 Hermes 能呼叫哪些能力**，**terminal backend（終端後端）決定命令在哪裡執行**。先按任務開**最小 toolset**，再按風險選擇 `local` / `docker` / `ssh` / 雲 sandbox——兩件事**獨立配置**，互不替代。

## 三個核心概念

- **Tool（工具）**：單個外部能力，例如 `terminal`（執行 shell）、`read_file`（讀檔案）、`patch`（改檔案）、`web_search`（搜網頁）。
- **Toolset（工具集）**：按場景打包的一組 tools，例如 `web`（網頁類）、`terminal`（執行類）、`file`（檔案類）、`browser`（瀏覽器類）、`memory`（記憶類）。**這是配置的最小單元**，按 toolset 整體啟停。
- **Terminal backend（終端後端）**：`terminal` / `file` / `code execution` 工具實際執行的**環境**——共 7 種：local（本機）、Docker（容器）、SSH（遠端主機）、Daytona、Modal、Singularity、Vercel Sandbox。

**不要把 toolset 和 backend 混在一起**。`terminal` toolset 開啟後，命令**依然**可能跑在本機、容器、遠端伺服器或雲環境裡——這兩件事得**分別決策**。一句"我開了 terminal" 不等於"我知道命令在哪跑"。

## 工具分類

<Cards>
  <Card title="Web" description="web_search、web_extract，用於外部事實核驗和網頁抽取。" />
  <Card title="Terminal & Files" description="terminal、process、read_file、patch，負責命令執行和檔案修改。" />
  <Card title="Browser" description="browser_navigate、browser_snapshot、browser_vision，用於頁面互動和視覺檢查。" />
  <Card title="Media" description="vision_analyze、image_generate、text_to_speech，處理多模態輸入輸出。" />
  <Card title="Agent orchestration" description="todo、clarify、execute_code、delegate_task，用於計劃、澄清、程式碼執行和子代理。" />
  <Card title="Memory & recall" description="memory、session_search，用於長期記憶和歷史會話檢索。" />
  <Card title="Automation & delivery" description="cronjob、send_message，用於定時任務和訊息投遞。" />
  <Card title="Integrations" description="Home Assistant、MCP、RL training 和其他外掛擴充套件。" />
</Cards>

Honcho（AI 原生使用者建模外掛，Nous Research 推薦）的 cross-session memory（跨會話記憶）是 memory provider plugin（記憶外掛），不是內建 toolset。需要 Honcho 時按 memory provider（記憶外掛）路線安裝和配置。

## Nous Tool Gateway

官方文件說明，付費 Nous Portal 使用者可以透過 Nous Tool Gateway 使用 web search、image generation、TTS 和 browser automation，而不需要分別配置每個第三方 API key。

這解決的是“工具供應商憑據”問題，不解決“工具許可權邊界”問題。即使工具來自 Gateway，你仍然要決定哪些平臺能用 browser、terminal、file、cronjob、send_message。

## 按任務開 toolset

可以按這個順序判斷：

```text
查外部资料      -> web/search
读写项目文件    -> file
跑测试或脚本    -> terminal
操作网页        -> browser
沉淀流程        -> skills
长期上下文      -> memory/session_search
周期任务        -> cronjob
跨平台发消息    -> messaging/send_message
并行任务        -> delegation
```

如果說不清為什麼要開某個 toolset，先不要開。最小 toolset 的價值是讓失敗更容易定位。

## Terminal backend 怎麼選

<Cards>
  <Card title="local" description="可信個人專案、只讀檢查和低風險命令。最快，但沒有隔離。" />
  <Card title="docker" description="不信任指令碼、臨時依賴、可復現環境。注意容器是程序內持久共享的。" />
  <Card title="ssh" description="遠端伺服器、隔離主機、VPS 或遠端硬體。" />
  <Card title="singularity" description="HPC 和共享機器上的 rootless container 場景。" />
  <Card title="modal / daytona" description="雲端 sandbox（隔離沙箱）、臨時算力或遠端持久 workspace（工作區）；閒置免費、按需啟動。" />
  <Card title="vercel_sandbox" description="Vercel microVM（微型虛擬機器），支援 snapshot-backed（快照支援的）雲端執行環境。" />
</Cards>

本機小任務用 `local`，不可信任務用 `docker`，遠端資源用 `ssh`，長期雲端執行再考慮 Modal、Daytona 或 Vercel Sandbox。

## 後臺程序

Hermes 可以啟動後臺任務，並用 `process` tool 管理：

```python
terminal(command="pytest -v tests/", background=true)
process(action="list")
process(action="poll", session_id="proc_abc123")
process(action="log", session_id="proc_abc123")
process(action="kill", session_id="proc_abc123")
```

適合後臺化的任務：

- 測試套件。
- 本地 dev server。
- 長時間日誌觀察。
- 非破壞性批處理。

不適合直接後臺化的任務：

- 刪除資料。
- 資料庫遷移。
- 釋出生產環境。
- 賬單、許可權、使用者資料相關命令。

後臺不是降低風險，只是讓任務離開當前互動視線。越是後臺任務，越要有日誌、停止方式和超時。

## Sudo 和金鑰

需要 sudo 時，Hermes 會提示輸入密碼並在當前 session 內快取。訊息平臺上不要傳送密碼。長期自動化如果必須使用 `SUDO_PASSWORD`，只能放在本地 `.env` 或安全憑據系統裡，並明確它會暴露給對應 session 的命令執行環境。

環境變數轉發也要收窄。Docker、SSH、雲 sandbox 裡只轉發當前任務真正需要的變數。不要把全量 `.env` 直接透傳給 agent 命令。

## 最小驗收

啟用工具後，你應該能回答下面 7 個問題。**任何一項答不上來，先停下排查再繼續接 Gateway 或 cron**：

- 當前啟用了哪些 toolsets？（`hermes config show` 看 `toolsets` 欄位）
- 每個 toolset **為什麼**需要？（不能回答 = 應該關）
- Terminal backend 是什麼？（`hermes config show` 看 `terminal.backend` 欄位，或直接看 `~/.hermes/config.yaml`）
- 命令**實際**在哪個環境執行？（讓 Hermes 跑 `pwd && hostname` 驗證）
- 後臺程序如何檢視、等待、讀日誌和停止？（`process(action="list/poll/log/kill")`）
- 不需要的工具如何關閉？（編輯 yaml 或 `hermes config set toolsets.<name> false`）
- 哪些 secret 會進入這個 backend？（看 `terminal.env_passthrough` 配置）

## 常見坑

按事故頻率從高到低：

- **任務只需要讀檔案，卻同時開啟 terminal、browser、messaging** —— 一旦出錯，故障域比真正需要的大 5 倍
- **不知道命令在本機、容器、遠端伺服器還是雲 sandbox 執行** —— 刪錯檔案後才發現是本機
- **Docker backend 共享同一個持久容器**卻按"每命令隔離"理解 —— 一個任務裝的依賴汙染另一個任務
- **後臺程序啟動後沒人 poll、log 或 kill** —— 長跑任務靜默成功 / 失敗都沒人看
- **在訊息平臺裡處理 sudo、金鑰或高風險 shell** —— 群裡其他人能看到密碼、能誤觸命令
- **Tool Gateway 可用後就預設把所有工具開放給所有平臺** —— 開放性 ≠ 許可權邊界，Gateway 只解決憑據，不解決"誰能用"

## 官方資料

- [Tools & Toolsets](https://hermes-agent.nousresearch.com/docs/user-guide/features/tools)
- [Tools Reference](https://hermes-agent.nousresearch.com/docs/reference/tools-reference)（完整工具清單）
- [Toolsets Reference](https://hermes-agent.nousresearch.com/docs/reference/toolsets-reference)（toolset 分組）
- [Docker Backend](https://hermes-agent.nousresearch.com/docs/user-guide/docker)
- [Security](https://hermes-agent.nousresearch.com/docs/user-guide/security)（命令審批、使用者授權、容器隔離）
- [Checkpoints & Rollback](https://hermes-agent.nousresearch.com/docs/user-guide/checkpoints-and-rollback)（破壞性操作回復）

## 下一步

<Cards>
  <Card title="記憶系統" description="工具許可權清楚後，再理解 Hermes 應該記住什麼——工具與記憶的邊界要分開決策。" href="/zh-Hant/docs/hermes/official/01-user-guide/memory" />
  <Card title="工具原理篇" description="繼續看 toolset 和 backend 解耦設計的風險邊界——以及為什麼 local 上手快是反例。" href="/zh-Hant/docs/hermes/understanding/04-tools-terminal-backends" />
</Cards>
