iT邦幫忙

2026 iThome 鐵人賽

DAY 25
0
AI Engineering

地端 AI 建築學系列 第 25 篇

25 案例四:Hermes Agent (1)簡介與安裝

  • 分享至 

  • xImage
  •  

前三個案例分別分享了 Workflow、RAG、視覺應用幾種地端 AI 的開發方式,這次換個角度,不再自己從零開發,而是直接使用 Hermes Agent:由 Nous Research 開發的開源 Agent 框架。

Hermes Agent 的定位比較接近「可以自己接地端模型的 Claude Code / Codex CLI」:它內建高達 70 多個工具、記憶系統、排程、瀏覽器自動化、多平台聊天閘道(Telegram、Discord、Slack…),而且從一開始就設計成「模型可換」— 你可以接雲端 API,也可以透過 Ollama 把整個 Agent 完全接到地端模型上。

這一篇先把架構看懂,再把環境裝起來。


Hermes Agent 是什麼

https://ithelp.ithome.com.tw/upload/images/20261005/20181345crxzadge4P.png

Hermes Agent 是一個以「持續自我改進」為訴求的自主 AI 代理程式,特色是把記憶、技能(Skills)、工具閘道(Tool Gateway)整合在同一個執行迴圈裡,並且可以用同一套核心邏輯服務多種進入點:

  • CLI / TUI:終端機互動介面,是最常見的使用方式

  • Gateway:接上 Telegram、Discord、Slack、WhatsApp、Signal、Email 等平台,變成一個常駐聊天機器人

  • ACP:以編輯器原生 Agent 的身分嵌入 VS Code、Zed、JetBrains

  • Batch Runner / API Server:批次跑大量任務,或包成 OpenAI 相容的 HTTP 端點供其他前端呼叫

這種「一套核心、多種外殼」的設計,是後面理解架構時最重要的一條線索。


整體架構

分層概念

Hermes Agent 的架構大致可以拆成四層,資料由上往下流動:

 進入點   CLI/Gateway/ACP/Batch/API Server
   │    (不同介面,呼叫同一顆核心)
   ▼
核心代理  AIAgent
   │    提示詞組裝 → Provider 選擇 → 工具派發 → 壓縮快取
   ▼
執行後端  終端機後端/瀏覽器後端/網路後端/MCP/檔案/視覺
   ▼
持久化層  Session 儲存(SQLite + 全文檢索)

所有進入點(CLI、Gateway、ACP…)最終都是在建立一個 AIAgent 實例並呼叫它的對話迴圈,這也是為什麼同一份設定(模型、工具、記憶)在終端機和在 Telegram 上用起來體驗一致。

核心元件

AIAgent 這一層內部再細分成三個互相配合的模組:

元件 負責什麼
Prompt Builder 組裝系統提示詞,分成穩定層(身分、工具說明、技能)→ 情境層(專案內的 context 檔案)→ 易變層(記憶、使用者設定、時間戳),並負責上下文壓縮與 Anthropic 風格的提示詞快取
Provider Resolution 把「提供者 + 模型」這組設定解析成實際的 API 模式、金鑰、Base URL,統一處理 18 種以上的供應商、OAuth 流程與金鑰輪替
Tool Dispatch 對接工具註冊表,處理 Schema 蒐集、呼叫派發、可用性檢查與錯誤包裝,目前收錄 70 餘個工具、約 28 個工具集

三種典型資料流

CLI 對話:使用者輸入 → 組裝系統提示詞 → 解析 Provider → 呼叫模型 API → 若有工具呼叫則派發執行並迴圈 → 產生最終回覆 → 顯示並寫回 Session 資料庫。

Gateway 訊息:外部平台事件(例如 Telegram 訊息)→ 平台轉接器解析成統一的訊息事件 → 授權檢查 → 找到對應的 session → 建立帶著歷史紀錄的 AIAgent → 跑對話迴圈 → 把回覆送回原平台。

排程任務(Cron):排程器到時間 → 從工作清單載入到期任務 → 建立一個「沒有歷史紀錄」的全新 AIAgent → 把指定的技能當作情境注入 → 執行任務提示詞 → 把結果送到目標平台,並更新下一次執行時間。

三種流程共用同一個 AIAgent,差別只在「誰觸發、有沒有歷史紀錄、結果送去哪裡」。

主要子系統一覽

子系統 說明
Agent Loop 同步的整體協調引擎,負責 Provider 選擇、提示詞組裝、工具執行、重試、降級、壓縮與持久化
Prompt 系統 系統提示詞的分層組裝與快取策略
Provider 解析 CLI/Gateway/Cron/ACP 共用的供應商解析邏輯
工具系統 中央工具註冊表,各工具檔案在載入時自行註冊
Session 持久化 以 SQLite 搭配 FTS5 全文檢索儲存對話,支援壓縮前後的血緣追蹤
訊息閘道 25 個以上的平台轉接器、統一 session 路由、白名單授權、Hook 系統
外掛系統 三個發現來源(使用者、專案、pip entry point),可註冊工具、Hook、Slash 指令;記憶供應器與情境引擎是各自獨立選一的特殊外掛

設計原則

官方文件列出幾條貫穿整個實作的設計原則,值得記下來理解「為什麼它長這樣」:

  • 提示詞穩定:對話進行中系統提示詞不會被打斷式修改,除非使用者主動切換模型

  • 執行可觀察:每一次工具呼叫都透過回呼機制對使用者可見

  • 可中斷:API 呼叫與工具執行可以在中途被使用者輸入或訊號取消

  • 核心與平台無關:同一顆 AIAgent 同時服務 CLI、Gateway、ACP、Batch、API Server,平台差異只留在進入點

  • 鬆耦合:MCP、外掛、記憶供應器等可選子系統用註冊模式接入,不是硬相依

  • Profile 隔離:每個 hermes -p <name> 都有獨立的家目錄、設定、記憶與 Gateway 行程,多個 Profile 可以同時跑


功能總覽

架構之外,Hermes Agent 內建的功能大致分五類,之後案例會陸續用到:

  • 核心:工具與工具集、技能系統、跨對話的持久記憶、專案情境檔案自動載入、檔案異動前的自動快照(可 rollback)

  • 自動化:自然語言排程、子代理委派(可平行跑多個子任務)、把多步驟工作收斂成單一 LLM 回合的程式碼執行工具、生命週期事件 Hook、批次處理

  • 多媒體與網路:語音模式、喚醒詞、瀏覽器自動化(多種後端)、視覺輸入、圖片生成、文字轉語音

  • 整合:MCP 協定接外部工具、Provider 路由與備援、多金鑰輪替、把自己包成 OpenAI 相容 API Server、IDE 整合

  • 客製化:SOUL.md 定義的人格設定、CLI 外觀主題、外掛系統擴充工具與 Hook


安裝環境:Ollama 版安裝(macOS / Ubuntu)

Hermes Agent 官方雖然也提供獨立的 curl 安裝腳本,但既然本系列的模型都掛在 Ollama 底下,這裡直接走最省事的路徑:先裝好 Ollama,再用 Ollama 內建的整合指令 ollama launch hermes 一次把 Hermes 裝起來、接上模型。這條路徑在 macOS 與 Ubuntu 上的操作幾乎一致,差別只在「怎麼裝 Ollama 本身」。

安裝 Ollama

macOS

到 ollama.com/download 下載 .dmg,掛載後把 Ollama 拖進 Applications 資料夾即可。第一次啟動時,Ollama 會自動確認 ollama 指令是否在 PATH 裡,沒有的話會請求權限在 /usr/local/bin 建立連結。系統需求是 macOS Sonoma(v14)以上,Apple Silicon(CPU+GPU 都支援)或 x86(僅 CPU)。

Ubuntu

curl -fsSL https://ollama.com/install.sh | sh

安裝完成後可以用 ollama -v 確認版本,或直接執行 ollama serve 手動啟動服務(一般安裝完會自動註冊成開機啟動的背景服務,不需要每次手動啟動)。

設定 Context Length(重要,容易漏掉的一步)

Hermes Agent 要求模型至少要有 64,000 tokens 的上下文長度,太小的上下文撐不住多步驟工具呼叫所需的工作記憶,啟動時會直接被拒絕。啟動 Ollama 服務前,用環境變數把預設上下文長度拉高:

OLLAMA_CONTEXT_LENGTH=65536 ollama serve

如果 Ollama 已經是背景服務在跑,先把它停掉(macOS 從選單列結束 App;Ubuntu 用 sudo systemctl stop ollama),再用上面這行手動啟動一次即可套用新的 context 設定。

拉取地端模型:qwen3.6-35b-a3b

ollama pull qwen3.6:35b-a3b

qwen3.6-35b-a3b 是 Qwen3.6 系列的 MoE(混合專家)模型:總參數量約 35.5B,但透過路由機制每個 token 實際只啟用約 3B 參數(命名裡的 A3B 就是「Active 3B」),讓它在保有較大知識容量的同時,推論成本更接近一顆 3B 等級的模型。這顆模型同時支援視覺輸入、工具呼叫(tool calling)與推理/思考模式(thinking),在 Ollama 官方的 Hermes Agent 整合頁面裡,也被列為「可在地端跑的推薦模型」之一,官方標示的參考需求約落在 24GB VRAM/統一記憶體等級,量化後(Q4_K_M)模型大小約 22GB 上下,對消費級顯卡或 Apple Silicon 的機器都算友善。同系列也有針對程式碼調校過的變體(例如 qwen3.6:35b-a3b-coding),之後案例如果偏向開發輔助,可以視情況替換。

一鍵接上 Hermes:ollama launch hermes

模型拉好之後,直接用 Ollama 內建的整合指令把 Hermes 裝起來並接上剛剛的模型:

ollama launch hermes

這個指令會自動完成四件事,macOS 與 Ubuntu 上流程完全一樣:

  1. 安裝:偵測 Hermes 是否已安裝,沒有的話會提示安裝命令列版的 Hermes Agent

  2. 選模型:從選單挑一顆模型(這裡選剛剛拉好的 qwen3.6:35b-a3b,本機或雲端模型都能選)

  3. 自動接線:把 Ollama 設成 Provider,指向 http://127.0.0.1:11434/v1,並將所選模型設為主要模型

  4. 選配 Gateway:視需要接一個聊天平台(Telegram/Discord/Slack/WhatsApp/Signal/Email),並直接啟動 Hermes

也就是說,不需要另外跑 Hermes 官方的 curl 安裝腳本——ollama launch hermes 背後就會處理好安裝這一步。

啟動並驗證

之後想重新進入對話,或想切換終端機介面,可以直接下:

hermes            # 傳統 CLI
hermes --tui      # 新版 TUI(建議)

看到歡迎畫面顯示模型名稱、工具清單就代表串接成功。可以先丟一句簡單、容易驗證的指令,例如「幫我看看目前目錄下有哪些檔案,並說明看起來的專案結構」,確認模型能正常回覆、也能正確叫用終端機工具。

常見問題

症狀 解法
hermes: command not found 重新載入 shell(source ~/.bashrc 或 ~/.zshrc),或檢查 PATH 是否包含 ~/.local/bin
Hermes 啟動時說 context 太短被拒絕 回到「設定 Context Length」,確認啟動 Ollama 前有設定 OLLAMA_CONTEXT_LENGTH=65536
選單裡看不到剛拉好的模型 先確認 ollama list 裡有看到 qwen3.6:35b-a3b,再重跑一次 ollama launch hermes

裝好之後,任何時候都可以跑 hermes doctor 做完整診斷,它會直接告訴你缺什麼、該怎麼修。


小結

這一篇把 Hermes Agent 的分層架構、資料流、核心子系統,以及透過 Ollama 在 macOS/Ubuntu 上安裝、接上地端模型 qwen3.6-35b-a3b 的完整流程走了一遍。


參考資料


上一篇
24 LangChain DeepAgent (3) 核心模組(下)
下一篇
26 案例四:Hermes Agent (2)訓練自訂技能
系列文
地端 AI 建築學 共 28 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言