---
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="/docs/hermes/official/01-user-guide/memory" />
  <Card title="工具原理篇" description="继续看 toolset 和 backend 解耦设计的风险边界——以及为什么 local 上手快是反例。" href="/docs/hermes/understanding/04-tools-terminal-backends" />
</Cards>
