配置工具系統和終端後端
理解 Hermes tools、toolsets、Nous Tool Gateway、terminal backends、後臺程序和許可權邊界。
開啟工具後,Hermes Agent 就不只是聊天。它可以搜尋網頁、抽取頁面、讀寫檔案、執行命令、操作瀏覽器、寫記憶、檢索歷史 session、建立 cron、發訊息、調 Home Assistant、接 MCP(模型上下文協議),甚至啟動子代理或 RL(強化學習)任務——能力越多,許可權邊界越需要刻意設計。
官方資料:Tools & Toolsets、Toolsets Reference、Tools Reference、Security、Docker Backend。
先給結論: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" 不等於"我知道命令在哪跑"。
工具分類
Web
web_search、web_extract,用於外部事實核驗和網頁抽取。
Terminal & Files
terminal、process、read_file、patch,負責命令執行和檔案修改。
Browser
browser_navigate、browser_snapshot、browser_vision,用於頁面互動和視覺檢查。
Media
vision_analyze、image_generate、text_to_speech,處理多模態輸入輸出。
Agent orchestration
todo、clarify、execute_code、delegate_task,用於計劃、澄清、程式碼執行和子代理。
Memory & recall
memory、session_search,用於長期記憶和歷史會話檢索。
Automation & delivery
cronjob、send_message,用於定時任務和訊息投遞。
Integrations
Home Assistant、MCP、RL training 和其他外掛擴充套件。
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
可以按這個順序判斷:
查外部资料 -> web/search
读写项目文件 -> file
跑测试或脚本 -> terminal
操作网页 -> browser
沉淀流程 -> skills
长期上下文 -> memory/session_search
周期任务 -> cronjob
跨平台发消息 -> messaging/send_message
并行任务 -> delegation如果說不清為什麼要開某個 toolset,先不要開。最小 toolset 的價值是讓失敗更容易定位。
Terminal backend 怎麼選
local
可信個人專案、只讀檢查和低風險命令。最快,但沒有隔離。
docker
不信任指令碼、臨時依賴、可復現環境。注意容器是程序內持久共享的。
ssh
遠端伺服器、隔離主機、VPS 或遠端硬體。
singularity
HPC 和共享機器上的 rootless container 場景。
modal / daytona
雲端 sandbox(隔離沙箱)、臨時算力或遠端持久 workspace(工作區);閒置免費、按需啟動。
vercel_sandbox
Vercel microVM(微型虛擬機器),支援 snapshot-backed(快照支援的)雲端執行環境。
本機小任務用 local,不可信任務用 docker,遠端資源用 ssh,長期雲端執行再考慮 Modal、Daytona 或 Vercel Sandbox。
後臺程序
Hermes 可以啟動後臺任務,並用 process tool 管理:
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
- Tools Reference(完整工具清單)
- Toolsets Reference(toolset 分組)
- Docker Backend
- Security(命令審批、使用者授權、容器隔離)
- Checkpoints & Rollback(破壞性操作回復)